2

在 Mac OS X 10.6 中,NSEvent有一个+modifierFlags类方法来确定当前按下的修饰符标志。在 10.5 中,[[NSApp currentEvent] modifierFlags]仅在鼠标移动后使用更新。有什么方法可以异步获取修饰符标志吗?

4

2 回答 2

2

GetCurrentKeyModifiers(). 它是一个 C 函数,但在 Cocoa 应用程序中可用(它是 Carbon 框架的一部分,但在 64 位系统 IIRC 上仍然可用。)请注意,它使用的标志不等于 Cocoa 标志,因此您的测试将具有适当地改变。

于 2010-09-07T16:13:37.050 回答
2

根据这篇博文的评论,您可以使用 CGEventCreate() 和 CGEventGetFlags()。

CGEventRef event = CGEventCreate(NULL /*default event source*/);
CGEventFlags mods = CGEventGetFlags(event);
if (mods & kCGEventFlagMaskShift)
    NSLog(@"Shift key is being pressed");

CGEventGetFlags() (CGEventFlags) 返回的修饰符标志与 NSEvent 相同。

于 2010-09-07T16:24:23.387 回答