在我正在开发的游戏中,我想检测NUMLOCK
按键(或keyup),例如在按下时注册“回调”功能。
我不是要求在给定时刻读取它的状态,我已经可以这样做,我也没有兴趣改变它的值。这是关于在发生按键时意识到按键,所以我不必每十分之一秒左右轮询它的状态。
游戏使用curses
的,目前是一个拦截getch()
。诅咒没有检测到NUMLOCK
按键,我从没想过它会(与 LED 相关的键盘不会“产生”任何键),我想知道是否有任何方法比用 a 替换主 curses 循环更好非阻塞getch()
并调用keyboard_leds()
函数来读取当前状态。
例如:我可以在初始化 curses 之后启动一个新线程,将它的屏幕作为参数传递,并且该线程将为按键事件stdscr
注册一个回调函数(比如, )。因此,该函数只会在需要时调用,然后更新。special_keypress()
NUMLOCK
keyboard_leds()
stdscr
我不确定这是否可能,而且我知道我可能不得不深入到一些依赖于架构的东西(内核/X11 等),所以如果跨平台解决方案是不可能的,那么我对仅 Linux 的设备很好。