【发布时间】:2015-08-04 07:39:31
【问题描述】:
我有工作代码 (here) 可以捕获非修饰键按下事件和修饰键更改事件的键码。
但如果你这样做:
LSHIFT down -> RSHIFT down -> RSHIFT up -> LSHIFT up
...内部的 2 个动作不会触发这些钩子中的任何一个,因为修饰符状态没有改变!
(编辑:糟糕!我应该在写之前测试一下,因为实际上每次实际更改都会产生一个新的修饰符更改。)
我唯一的想法可能是在更低的水平上额外观看(here)——但无论我从哪个角度看,它都不好看。
【问题讨论】:
-
不,它们有单独的键码——我通过执行第二个链接中的代码确认了这一点。
-
假设您正在使用 Obj-C(给定 OSX 标签)制作一个 Cocoa 应用程序,您可以使用代码 here。实施
-(void)flagsChanged:(NSEvent*)并检查[theEvent modifiers]。 LShift 为 131330,RShift 为 131332 -
@Arc676,你这玩意儿!我刚刚测试过,它确实正确地隔离了 L&R Shift 事件。甚至像 +L+R-L-R 和 +L+R-R-L 这样的组合。如果您将其作为答案,我将很乐意接受。
标签: macos hook keyboard-events tap iokit