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