我在 OS X 检测击键时遇到问题。每当按下键盘键时,我都需要检测按键按下和按键释放或按键向上。当使用[ NSEvent addLocalMonitorForEventsMatchingMask: handler: ]
. 这使您可以拦截和修改NSEvent
各种事件类型的 s,包括常规打印键,以及NSKeyUp
可用于检测 shift、ctrl、alt 和 cmd 键的 s。事实上,由于 shift、ctrl、alt 和 cmd 键的上键和下键的修饰符标志都发生了变化,因此可以通过检查.NSKeyDown
NSFlagsChanged
NSFlagsChanged
[NSEvent modifierFlags]
[NSEvent keyCode]
但是,Capslock 是不同的。因为 capslock 修饰符实际上只对按下的键起作用,所以当你按下 capslock 时,你只会得到一个NSFlagsChanged
with capslock 被按下,而不是在它被释放时。并且不会使用修饰键(如 capslock 和 shift 和 ctrl 等)发出NSKeyUp
。NSKeyDown
任何人都可以提出一种方法,甚至是较低级别的界面,来获取大写锁定键事件吗?我将不得不求助于使用 kqueues 或其他东西吗?