使用带有ncurses的数字键盘键

时间:2014-02-05 00:51:10

标签: c++ ncurses

我正在使用ncurses库为C ++编写roguelike,并希望通过数字键盘控制该字符。目前我正在使用以下方法:

case KEY_LEFT: 
    //Code for left movement
case KEY_RIGHT:
    //Code for right movement
...
//Numpad diagonals
case KEY_A1:
    //Code for moving up and to the left
case KEY_A3:
    //Code for moving up and to the right
...

KEY_A1KEY_A3KEY_C1KEY_C3宏适用于对角线移动,但像KEY_A2这样的宏不适用于正交移动。无论numlock是否打开,箭头键的代码在这种情况下也不起作用。

如何使用ncurses在数字键盘上输入2,4,6和8键?或者,我是否正确地解决了这个问题,那会是一个更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

通过调用:

addch(inputChar);

我能够确定所有“标准”输入字符都只是它们的 ASCII 等价物,即:

'0''1''!''@''a''b''A''B'等等...

Numpad Num Lock 开启时也是如此。或者,或者当 Num Lock 关闭时,您可以调用:

addstr((std::to_string((int)inputChar) + " ").c_str());

这将产生一个 ASCII #,您可以使用 #define 等。