【发布时间】:2011-06-13 21:51:59
【问题描述】:
我正在学习用 C 编程,并希望能够在我的代码运行时在终端中键入字符而无需按 return。我的程序可以运行,但是当我调用initscr() 时,屏幕被清除了——即使在调用filter() 之后也是如此。 filter 的文档建议它应该禁用清除 - 但对我来说不是这样。
#include <stdio.h>
#include <curses.h>
#include <term.h>
int main(void) {
int ch;
filter();
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
while((ch = getch()) != EOF);
endwin();
return 0;
}
为什么上面的代码仍然使屏幕更清晰,可以做些什么来解决它?
如果有帮助,我正在使用 Debian Lenny(稳定版)和 gnome-terminal。
【问题讨论】:
-
对于 PDCurses,您可以将环境变量 PDC_PRESERVE_SCREEN 或 PDC_RESTORE_SCREEN 设置为任何值:来自文件 HISTORY:
-
PDC_PRESERVE_SCREEN 如果设置了此环境变量,PDCurses 将不会在启动时将屏幕清除为默认的黑底白字。这允许您在现有屏幕背景的顶部覆盖一个窗口。 PDC_RESTORE_SCREEN 如果设置了此环境变量,PDCurses 将在 PDCurses 启动时获取屏幕内容的副本; initscr(),当调用 endwin() 时,屏幕将恢复。