将光标隐藏在远程终端上
我有一个打开远程终端的sockets。 使用“ 强制telnet客户端进入字符模式 ”的答案,我能够将该终端置于字符模式。
我的问题是,如何使用此方法将光标隐藏在远程终端中?
这是ncurses库可以为您做的事情。
curs_set()
函数可以使光标不可见。
为了扩展mjh2007的答案,以下c / c ++代码将实现将转义码发送到终端,并且比原始hex数字稍微更具可读性。
void showCursor(bool show) const { #define CSI "\e[" if (show) { fputs(CSI "?25h", stdout); } else { fputs(CSI "?25l", stdout); } #undef CSI }
如果您使用的终端支持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);
希望这可以帮助。