ncurses 无法识别箭头键宏

问题描述 投票:0回答:2

我已经尝试寻找解决方案很长一段时间了;我无法让我的终端窗口识别键盘。

这是我的代码:

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

c curses
2个回答
1
投票

如果启用键盘,这些常量仅由

getch()
返回。

函数签名是:

int keypad(WINDOW *win, bool bf)

keypad(win, true)
启用键盘,
keypad(win, false)
禁用键盘。
win
是指向调用
getch()
的窗口的指针。


0
投票

正如 Alexandre Bell 所提到的,必须启用键盘。为默认窗口或您正在使用的窗口启用它。

keypad(stdscr, TRUE); //Enables keypad for default window

如果您仍然无法使其正常工作,请确保您使用的是带有 getch() 的 int 数据类型。 getch() 的函数原型是:

int getch(void);

如果您使用 char 数据类型作为 getch() 的返回值,那么它的大小不足以容纳特殊字符的返回值,并且您将得到垃圾值。

© www.soinside.com 2019 - 2024. All rights reserved.