如何在启动Cocoa应用程序时确定按下的修饰键?

C. *_*ith 8 macos cocoa nsevent

在我正在开发的应用程序中,数据库用于存储所有用户数据,通常位于库/应用程序支持中的某个位置.为了使用户能够切换数据库,我想实现类似于iTunes或iPhoto的功能,如果在启动应用程序时按下选项键,应用程序会询问库或数据库的位置.

如果没有NSEvent,如何检查当前按下的(修饰符)键?

我已经尝试过:

[NSResponder flagsChanged:(NSEvent *)theEvent] - 可能没有被调用,因为选项键在窗口之前已经关闭,并且任何响应者都被实例化了.

[[NSApplication sharedApplication] currentEvent]- 退货nil.

小智 10

把它放在applicationDidFinishLaunching中:

NSUInteger modifiers = ([NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask);

if (modifiers == NSAlternateKeyMask)   { 
    // do your sutff here 
}
Run Code Online (Sandbox Code Playgroud)

从macOS 10.12开始,这应该是:

NSUInteger modifiers = ([NSEvent modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask);

if (modifiers == NSEventModifierFlagOption)   { 
    // do your sutff here 
}
Run Code Online (Sandbox Code Playgroud)