代码之家  ›  专栏  ›  技术社区  ›  pynexj

如何在不使用libtinfo/libncurses的情况下获取/设置光标可见性?

  •  1
  • pynexj  · 技术社区  · 7 年前

    谷歌搜索了很多,发现 curs_set() putp(tigetstr() ) 可用于隐藏/显示tty光标。我想尽量减少对其他lib的依赖,所以我想知道我是否可以不使用 libtinfo / libncurses 或调用外部命令(如 setterm ,则, tput ).有吗 ioctl() 此命令?

    1 回复  |  直到 7 年前
        1
  •  3
  •   pynexj    4 年前

    基本上有三种方法:

    1. 如果您的程序仅在控制台终端上执行(例如,因为机器未连接网络),或仅由最常见的终端执行,则可以假定UTF-8字符集和 ANSI escape codes

      这意味着要隐藏光标,您需要打印 "\033[?25l" 至终端,以及 "\033[?25h" 显示光标。

    2. 要获得正确的终端支持,请使用terminfo库。

      您可以直接读取terminfo数据库,但这将毫无意义,因为如果安装了它,您还可以使用curses函数来访问它( tgetent() / tgetnum() / tgetflag() )。

      然后,您还应该让您的程序具有区域设置意识,并使用例如。 iconv() 在字符集之间转换,而不是采用UTF-8。

    3. 使用curses或ncursesw(具有广泛的字符支持)。

    推荐文章