リモート端末へのオープンソケットがあります。「 telnetクライアントをキャラクターモードに強制する」への回答を使用して、その端末をキャラクターモードにすることができました。
私の質問は、この方法を使用してリモート端末でカーソルを非表示にするにはどうすればよいですか?
リモート端末へのオープンソケットがあります。「 telnetクライアントをキャラクターモードに強制する」への回答を使用して、その端末をキャラクターモードにすることができました。
私の質問は、この方法を使用してリモート端末でカーソルを非表示にするにはどうすればよいですか?
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
}
これは、ncursesライブラリが実行できることです。
このcurs_set()
関数はカーソルを非表示にすることができます。
使用している端末が ANSI 形式をサポートしている場合は、次のエスケープ コードを送信できるはずです。
カーソルを隠す: 0x9B 0x3F 0x32 0x35 0x6C カーソルを表示: 0x9B 0x3F 0x32 0x35 0x68
これが「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);
お役に立てれば。