我正在开发一个 MacOS 菜单栏应用程序,它需要跟踪一些全局快捷方式,以便于调整外部显示器上的显示亮度。但是,我无法让它在任何键盘相关事件上触发处理程序(鼠标事件工作得很好)。
我正在使用以下代码检查可访问性
NSDictionary *options = @{CFBridgingRelease(kAXTrustedCheckOptionPrompt): @YES};
BOOL accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下方法添加全局事件监视器:
self.eventMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:NSEventMaskKeyDown handler:^(NSEvent * event) {
NSLog(@"Some event");
}];
Run Code Online (Sandbox Code Playgroud)
如果我切换NSEventMaskKeyDown到鼠标NSEventMaskMouseMove或其他与鼠标相关的东西,一切都会正常。如果我尝试NSEventMaskAny,不会再次触发任何内容(这看起来很奇怪,因为它仍然应该在鼠标上触发)。