在 Mac OS X 10.6 中,NSEvent
有一个+modifierFlags
类方法来确定当前按下的修饰符标志。在 10.5 中,[[NSApp currentEvent] modifierFlags]
仅在鼠标移动后使用更新。有什么方法可以异步获取修饰符标志吗?
问问题
733 次
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 回答