Скрыть курсор на удаленном терминале - PullRequest
7 голосов
/ 16 апреля 2010

У меня есть открытая розетка для удаленного терминала. Используя ответ « Перевести клиент Telnet в символьный режим », я смог перевести этот терминал в символьный режим.

У меня вопрос, как мне скрыть курсор в удаленном терминале, используя этот метод?

Ответы [ 4 ]

10 голосов
/ 07 марта 2012

Чтобы расширить ответ mjh2007, следующий код на языке c / c ++ будет реализовывать отправку управляющих кодов на терминал и будет немного более читабельным, чем необработанные шестнадцатеричные числа.

void showCursor(bool show) const {
#define CSI "\e["
  if (show) {
    fputs(CSI "?25h", stdout);
  }
  else {
    fputs(CSI "?25l", stdout);
  }
#undef CSI
}
8 голосов
/ 20 апреля 2010

Это то, что библиотека ncurses может сделать для вас.

Функция curs_set() может сделать курсор невидимым.

4 голосов
/ 21 апреля 2010

Если используемый вами терминал поддерживает формат ANSI, вы сможете отправить следующие escape-коды :

Hide the cursor: 0x9B 0x3F 0x32 0x35 0x6C
Show the cursor: 0x9B 0x3F 0x32 0x35 0x68
3 голосов
/ 20 апреля 2010

Если это приложение «telnet», то ваше приложение должно отправить «IAC WILL ECHO», чтобы отключить эхо на своей удаленной стороне. Это полезно для ввода паролей или если ваше приложение выполняет эхо.

#define TEL_IAC "\377"
#define TEL_WILL "\373"
#define TEL_ECHO "\001"

char buf[4];
snprintf(buf, sizeof(buf), "%c%c%c" TEL_IAC, TEL_WILL, TEL_ECHO);
write(sock, buf, sizeof(buf));

Или

write(sock, TEL_IAC TEL_WILL TEL_ECHO, 3);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...