ncurses无法识别箭头键宏

时间:2015-04-07 20:52:36

标签: c curses

我一直试图找到解决方案很长一段时间;我无法通过终端窗口识别键盘。

这是我的代码:

  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 ++。有什么建议?

2 个答案:

答案 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()的返回值,那么它的大小将不足以容纳特殊字符的返回值,并且您将获得垃圾值。