根据curs_set
手册页:
curs_set
例程将游标状态设置为不可见,正常或非常可见visibility
等于分别为0
,1
或2
。如果终端支持 请求可见性,返回前一个游标状态;否则,返回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
我错过了什么吗?
答案 0 :(得分:1)
正如评论中@vonaka提醒的那样,该手册页也说(在另一个 NOTES 部分中):
如果
ncurses
被调用以使光标不是正常SVr4和curs_set()
都会在endwin()
中调用curs_set()
>,即不可见或非常明显。 ncurses 无法确定要恢复的初始游标状态。