2
這裏是我的嘗試:如何在macOS上檢測Swift中的全局擊鍵?
NSEvent.addGlobalMonitorForEvents(matching: [.keyDown]) { (event) in
print(event.keyCode)
}
不幸的是,它不顯示任何信息。
不,它不是this的重複,這個問題是關於修飾鍵,我的問題是關於擊鍵。
這裏是我的嘗試:如何在macOS上檢測Swift中的全局擊鍵?
NSEvent.addGlobalMonitorForEvents(matching: [.keyDown]) { (event) in
print(event.keyCode)
}
不幸的是,它不顯示任何信息。
不,它不是this的重複,這個問題是關於修飾鍵,我的問題是關於擊鍵。
看起來像「重複」標記已被刪除,但我也回到了評論部分。因此,對於後人:
這是行不通的原因是因爲.keyDown事件的全局監視器需要比某些其他事件處理程序更多的權限,包括有人認爲這是重複的。這主要是因爲全球.keyDown監視器可用於惡意目的,如鍵盤記錄器。所以有額外的安全措施來確保我們是合法的:
1)您的應用程序需要進行代碼簽名。
2)您的應用需要不啓用了應用程序沙箱和:
3)您的應用需要在安全性進行登記和隱私偏好設置面板,輔助下。
第三的這些東西一個必須由用戶啓用,但是你可以用這個代碼輕移他們在那個方向:
let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)
if !accessEnabled {
print("Access Not Enabled")
}
這會提示用戶,讓他/她的選項自動打開適當的偏好設置窗格,用戶可以通過Accessibility API允許您的應用程序控制計算機,假設您的應用程序已簽名且未經過沙盒處理,它將允許您的全局.keyDown監視器工作。
謝謝sooo多!!! –
感謝您的支持! –