将光标隐藏在远程终端上

Tyl*_*ler 7 c sockets terminal cursor

我有一个打开远程终端的插座.使用" 强制telnet客户端进入字符模式 " 的答案,我能够将该终端置于字符模式.

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

joe*_*ner 11

为了在mjh2007的回答扩大,下面的C/C++代码将执行发送转义码到终端,并且稍微比生十六进制数更具有可读性.

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

  • 我同意ncursrs是最好的,但如果由于某种原因你无法访问它,对于某些情况,这可能是一个"足够好"的解决方案. (5认同)
  • 至于转义码:`\e[?25h` 和 `\e[?25l`。为了记住它,请记住 L 代表 _Lehidden_​​,H 代表 _HonestlyTheCursorWillBeVisible_。 (3认同)
  • 除非别无选择,否则不要对终端控制代码进行硬编码。使用 ncurses 查找当前 `$TERM` 值的适当代码,除非由于某种原因无法使用 ncurses。 (2认同)
  • 另外,没有冒犯什么的意思,但是使用 ncurses 就像下载网络浏览器来读取文本文件:) @ChrisPage (2认同)

Kev*_*nko 8

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

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


mjh*_*007 6

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

隐藏光标:0x9B 0x3F 0x32 0x35 0x6C
显示光标:0x9B 0x3F 0x32 0x35 0x68

  • 就像我的代码在带有 8KB ROM 的 PIC 微处理器上运行一样? (10认同)
  • 除非别无选择,否则不要对终端控制代码进行硬编码。使用 ncurses 查找当前`$TERM` 值的适当代码,除非由于某种原因不能使用 ncurses。 (3认同)