我正在构建一款需要监控全局按键的 macOS 应用程序。所以全局事件监听器将是:
NSEvent.addGlobalMonitorForEvents(matching: NSEvent.EventTypeMask.keyDown) { (event) in
print(event.keyCode)
}
但是,就像在这个帖子中提到的那样,这并没有产生任何效果。我尝试了帖子中给出的答案,通过添加以下代码:
let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)
if !accessEnabled {
print("Access Not Enabled")
} else {
print("Access Granted")
}
这会弹出一个对话框来请求访问权限,但由于这是异步过程,授权还没有将线程移动到可以监视按键的点。此外,该对话框在每次启动应用程序时都会弹出,如何优雅地请求辅助功能而不带麻烦,因为就我所搜到的,没有适当的文档。