我正在使用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_A1
,KEY_A3
,KEY_C1
和KEY_C3
宏适用于对角线移动,但像KEY_A2
这样的宏不适用于正交移动。无论numlock是否打开,箭头键的代码在这种情况下也不起作用。
如何使用ncurses在数字键盘上输入2,4,6和8键?或者,我是否正确地解决了这个问题,那会是一个更好的方法吗?
答案 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
等。