12

我有一个连接到远程终端的开放式套接字。使用“强制 telnet 客户端进入字符模式”的答案,我能够将该终端置于字符模式。

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

4

4 回答 4

17

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

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 回答