addGlobalMonitorForEventsMatchingMask在某些计算机上无法运行

时间:2013-06-08 19:14:16

标签: objective-c cocoa

我正在使用此代码在我的应用中捕获全局键盘快捷键。

这几乎适用于我运行它的每台计算机。我本周在一台全新的Retina Macbook Pro上尝试了它,addGlobalMonitorForEventsMatchingMask根本不起作用。它甚至没有像我设置的那样记录每个键进行调试。

有更可靠的方法吗?现在我加载applicationDidFinishLaunching

我认为在App Delegate中将它作为自己的方法加载可能更有意义,但我不确定它的语法是什么样的。

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event){

    NSLog(@"sequence = %li", (unsigned long)[event modifierFlags]);

    // Activate app when pressing cmd-c
    if([event modifierFlags] == 1048840 && [[event charactersIgnoringModifiers] compare:@"c"] == 0) {

2 个答案:

答案 0 :(得分:8)

在OSX 10.9(Mavericks)中,设置已移至“系统偏好设置”>安全与安全隐私>隐私>辅助功能 - 确保您的应用已经过检查。

答案 1 :(得分:0)

在系统偏好设置的辅助功能中选中“为辅助设备启用访问权限”,然后重试。