“curs_set()”无法返回上一个光标状态

时间:2018-05-03 13:13:42

标签: c ncurses tty

根据curs_set手册页:

  

curs_set例程将游标状态设置为不可见正常非常可见 visibility等于分别为012。如果终端支持          请求可见性,返回前一个游标状态;否则,返回ERR

但是以下简单的程序没有返回先前的状态:

[STEP 107] # cat curs_set.c
#include <stdio.h>
#include <curses.h>

int main()
{
    int ret;

    initscr();
    ret = curs_set(1);
    endwin();

    printf("curs_set() returned %d\n", ret);

    return 0;
}
[STEP 108] # gcc curs_set.c -lncurses
[STEP 109] # setterm -cursor off
[STEP 110] # ./a.out             <-- cursor invisible
curs_set() returned 1            <-- why not 0?
[STEP 111] # tput civis          <-- cursor visible
[STEP 112] # ./a.out             <-- cursor invisible
curs_set() returned 1            <-- why not 0?
[STEP 113] #                     <-- cursor visible

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

正如评论中@vonaka提醒的那样,该手册页也说(在另一个 NOTES 部分中):

  

如果ncurses被调用以使光标不是正常SVr4和curs_set()都会在endwin()中调用curs_set() >,即不可见非常明显 ncurses 无法确定要恢复的初始游标状态。