我已经尝试寻找解决方案很长一段时间了;我无法让我的终端窗口识别键盘。
这是我的代码:
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++。有什么建议么?
如果启用键盘,这些常量仅由
getch()
返回。
函数签名是:
int keypad(WINDOW *win, bool bf)
keypad(win, true)
启用键盘,keypad(win, false)
禁用键盘。 win
是指向调用 getch()
的窗口的指针。
正如 Alexandre Bell 所提到的,必须启用键盘。为默认窗口或您正在使用的窗口启用它。
keypad(stdscr, TRUE); //Enables keypad for default window
如果您仍然无法使其正常工作,请确保您使用的是带有 getch() 的 int 数据类型。 getch() 的函数原型是:
int getch(void);
如果您使用 char 数据类型作为 getch() 的返回值,那么它的大小不足以容纳特殊字符的返回值,并且您将得到垃圾值。