我有一个连接到远程终端的开放式套接字。使用“Force telnet client into character mode” 的答案,我能够将该终端置于字符模式。
我的问题是,如何使用这种方法隐藏远程终端中的光标?
我有一个连接到远程终端的开放式套接字。使用“Force telnet client into character mode” 的答案,我能够将该终端置于字符模式。
我的问题是,如何使用这种方法隐藏远程终端中的光标?
在扩展mjh2007的回答中,以下C/C++代码将实现将转义码发送到终端,并且比原始十六进制数字稍微更易读。
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
$TERM
值的适当代码,除非由于某些原因无法使用ncurses。 - Chris Page#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);
$TERM
值的适当代码,除非由于某些原因无法使用ncurses。 - Chris Page?25
的实例,则不会!\e[0m\e[?25h
似乎可以正常工作。 - John Dvorak\e[?25h
和\e[?25l
。为了记忆,可以将 L 视为“Lehidden”(隐藏),而将 H 视为“HonestlyTheCursorWillBeVisible”(实话说光标将可见)。 - Samie Bencherif