我一直试图找到解决方案很长一段时间;我无法通过终端窗口识别键盘。
这是我的代码:
while (1){
if (cmd != ERR) {
printw("Controls: LEFT/RIGHT and SPACEBAR (Q TO QUIT)");
if (cmd == ' '){
// Stuff
}
else if (cmd == KEY_LEFT){
// Stuff
}
else if (cmd == KEY_RIGHT){
// Stuff
}
else if (cmd == 'q'){
// Stuff
}
refresh();
}
cmd = getchar();
}
它识别我正在进入空间(案例1)或“q”(案例4),但它无法识别内置的curses宏。我正在使用常规C,而不是C ++。有什么建议?
答案 0 :(得分:0)
如果启用键盘,那些常量仅由getch()返回。
功能签名是:
int keypad(WINDOW *win, bool bf)
keypad(win, true)
启用键盘,keypad(win, false)
禁用键盘。 win
是指向调用getch()的窗口的指针。
答案 1 :(得分:0)
如Alexandre Bell所述,必须启用键盘。为默认窗口或您正在使用的窗口启用它。
keypad(stdscr, TRUE); //Enables keypad for default window
如果仍然无法正常工作,请确保将gett()用作int数据类型。 getch()的函数原型为:
int getch(void);
如果将char数据类型用于getch()的返回值,那么它的大小将不足以容纳特殊字符的返回值,并且您将获得垃圾值。