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

时间:2018-05-03 08:38:16

标签: c unix ncurses tty

搜索了很多,发现curs_set()putp(tigetstr() )可用于隐藏/显示tty游标。我想尽量减少对其他库的依赖,因此我想知道如果不使用libtinfo / libncurses或调用外部命令(如setterm)我是否可以这样做, tput)。是否有ioctl()命令?

1 个答案:

答案 0 :(得分:2)

基本上有三种方法:

  1. 如果您的程序仅在控制台终端上执行(例如,因为机器未与网络连接),或仅由大多数常见终端执行,则可以采用UTF-8字符集和{{3} }。

    这意味着要隐藏光标,请将"\033[?25h"打印到终端,然后"\033[?25l"显示光标。

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

    您可以直接读取terminfo数据库,但这样做毫无意义,因为如果安装了它,您还可以使用curses函数来访问它(ANSI escape codes)。

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

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