将光标隐藏在远程终端上

时间:2010-04-15 23:46:24

标签: c terminal cursor sockets

我有一个打开远程终端的插座。使用“Force telnet client into character mode”的答案,我能够将该终端置于字符模式。

我的问题是,如何使用此方法将光标隐藏在远程终端中?

4 个答案:

答案 0 :(得分:10)

为了扩展mjh2007的答案,以下c / c ++代码将实现将转义码发送到终端,并且比原始十六进制数字稍微更具可读性。

void showCursor(bool show) const {
#define CSI "\e["
  if (show) {
    fputs(CSI "?25h", stdout);
  }
  else {
    fputs(CSI "?25l", stdout);
  }
#undef CSI
}

答案 1 :(得分:8)

这是ncurses库可以为您做的事情。

curs_set()函数可以使光标不可见。

答案 2 :(得分:4)

如果您使用的终端支持ANSI格式,您应该能够发送以下escape codes

Hide the cursor: 0x9B 0x3F 0x32 0x35 0x6C
Show the cursor: 0x9B 0x3F 0x32 0x35 0x68

答案 3 :(得分: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);

希望这有帮助。