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



谷歌搜索了很多,发现curs_set()putp(tigetstr() )可以用来隐藏/显示tty光标。我想尽量减少对其他库的依赖,所以我想知道我是否可以在不使用libtinfo/libncurses或调用外部命令(如settermtput(的情况下做到这一点。对此有什么ioctl()命令吗?

基本上有三种方法:

  1. 如果程序仅在控制台终端上执行(例如,由于计算机未连接到网络(,或者仅由大多数常见终端执行,则可以假定使用 UTF-8 字符集和 ANSI 转义代码。

    这意味着要隐藏光标,您需要将"33[?25l"打印到终端,"33[?25h"显示光标。
     

  2. 为了获得正确的终端支持,请使用术语信息库。

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

    然后,您还应该让您的程序能够识别区域设置,并使用例如iconv()字符集之间进行转换,而不是假定为 UTF-8。
     

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

相关内容

最新更新