12

リモート端末へのオープンソケットがあります。「 telnetクライアントをキャラクターモードに強制する」への回答を使用して、その端末をキャラクターモードにすることができました。

私の質問は、この方法を使用してリモート端末でカーソルを非表示にするにはどうすればよいですか?

4

4 に答える 4

17

mjh2007の答えを拡張するために、次のc / c ++コードは、エスケープコードを端末に送信することを実装し、生の16進数よりもわずかに読みやすくなっています。

void showCursor(bool show) const {
#define CSI "\e["
  if (show) {
    fputs(CSI "?25h", stdout);
  }
  else {
    fputs(CSI "?25l", stdout);
  }
#undef CSI
}
于 2012-03-07T15:33:29.600 に答える
11

これは、ncursesライブラリが実行できることです。

このcurs_set()関数はカーソルを非表示にすることができます。

于 2010-04-20T16:44:43.740 に答える
6

使用している端末が ANSI 形式をサポートしている場合は、次のエスケープ コードを送信できるはずです。

カーソルを隠す: 0x9B 0x3F 0x32 0x35 0x6C
カーソルを表示: 0x9B 0x3F 0x32 0x35 0x68
于 2010-04-20T20:20:32.897 に答える
3

これが「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);

お役に立てれば。

于 2010-04-20T16:39:11.627 に答える