【发布时间】:2014-08-03 07:51:23
【问题描述】:
我正在编写一个 Cocoa 应用程序,该应用程序需要能够捕获键盘事件,即使没有获得焦点。 (它通过 Apple Scripting Bridge 控制另一个应用程序)。
我在这里尝试过解决方案:OSX: Detect system-wide keyDown events?
它编译得很好,但实际上并没有做任何事情。我将代码放在我的 init 方法中。
我也无法让 CGEventTap 工作。有什么建议?
这是我的代码:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:^(NSEvent *event){
NSLog(@"test");
}];
}
另外,我知道辅助设备需要打开。不幸的是,当我进入设置时,它只列出了特定的应用程序。我的不是其中之一。
【问题讨论】:
-
您是否以 root 身份运行您的工具?你有没有开启“对辅助设备的支持”?
-
到目前为止,是的,是的。我终于想出了如何通过将应用程序拖入安全窗口来手动打开该应用程序的辅助功能。
-
我认为有 API 可以检查它是否打开。然后您可以提示用户是否关闭。我想我应该写这个作为答案?
-
我知道 API。问题不在于辅助设备或以 root 身份运行。即使解决了这两个问题,它仍然无法正常工作。
标签: objective-c macos cocoa