通过上一节的讲解我们明白使用ncurse是为了响应上下左右键,那应该如何捕获上下左右键呢?
在ncurse中安排了这几个数值代表四个按键并且通过宏定义的方式增强了代码的可读性
修改代码:
#include <curses.h>
int main()
{
char c;
initscr();
while (1)
{
c = getch();
printw("you input : %c\n",c);
}
getch();//防止程序跳出
endwin();
return 0;
}
打开终端编译该文件
打开新窗口 并在键盘输入上键,终端显示该界面
keypad(stdscr,1);
加入该指令
运行效果改变,至少现在有东西输出了但还是有点怪怪的,什么原因呢?
因为我们char型是一个byte 8bit 只能显示到128,而最上图代表的上下左右数字超过了128
所以想让结果显示正确的话将char型改成int型即可,代码修改如下:
#include <curses.h>
int main()
{
int key;
initscr();
keypad(stdscr,1);
while (1)
{
key = getch();
printw("you input : %d\n",key);
}
getch();//防止程序跳出
endwin();
return 0;
}
运行结果如下:
但显示的数值还是与最上面那张图有出入,那应该如何使数值更加准确呢?
继续来修改咱们的代码哈
#include <curses.h>
int main()
{
int key;
initscr();
keypad(stdscr,1);
while (1)
{
key = getch();
switch (key)
{
case 0402:
printw("DOWN\n");
break;
case 0403:
printw("UP\n");
break;
case 0404:
printw("LEFT\n");
break;
case 0405:
printw("RIGHT\n");
break;
}
}
getch();//防止程序跳出
endwin();
return 0;
}
分别使用键盘输入上下左右键,运行结果如下:
OK!我们现在完成了对上下左右键的捕获。