在Mac OS X 10.6中,NSEvent
有一个+modifierFlags
类方法来确定当前按下的修饰符标记。在10.5中,使用[[NSApp currentEvent] modifierFlags]
仅在鼠标移动后更新。有没有办法异步获取修饰符标志?
答案 0 :(得分:2)
GetCurrentKeyModifiers()
。它是一个C函数,但它可以在Cocoa应用程序中使用(它是Carbon框架的一部分,但仍可在64位系统IIRC上使用。)请注意,它使用的标志不等于Cocoa标志,因此您的测试将具有适当改变。
答案 1 :(得分:2)
根据对this blog post的评论,您可以使用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标志符相同。