我在curses.h 中有一个带有功能键的问题。我在不同的网站/教程上看到了这个小程序
#include <ncurses.h>
int main()
{ int ch;
initscr(); /* Start curses mode */
raw(); /* Line buffering disabled */
keypad(stdscr, TRUE); /* We get F1, F2 etc.. */
noecho(); /* Don't echo() while we do getch */
printw("Type any character to see it in bold\n");
ch = getch();
while (ch != KEY_F(1))
{
if(ch == KEY_F(1))
printw("F1 Key pressed: Ending program.\n");
else
{ printw("The pressed key is ");
attron(A_BOLD);
printw("%c\n", ch);
attroff(A_BOLD);
}
refresh();
ch = getch();
}
printw("end\n");
endwin(); /* End curses mode */
return 0;
}
F6-F12 键工作正常,返回的代码也很好(例如:如果按下 F6,则为 270)。但是,如果我按 F5 不会返回 269,就像它应该是的那样,而是发生以下情况(仅通过按 F5 一次):
Type any character to see it in bold
The pressed key is ^[
27
The pressed key is [
91
The pressed key is 1
49
The pressed key is 5
53
The pressed key is ~
126
所以我认为整个逃生序列都回来了。我在互联网上阅读了有关此问题的信息,有两次提示将 TERM 变量更改为 xterm 或 vt100。所以我尝试将 TERM 更改为 vt 220 和 xterm,但没有任何改变。当我将其更改为 vt100 时,F6-F12 也不起作用。
任何人都可以帮助我如何识别用户是否按 F1-F5?可以很好地识别回车、退格、向上、向下等键。
最好的祝福