-1
グローバルキーダウンイベントを監視するためにインターネットからコードを収集しました。実行可能ファイルが実行されたときにキープレスイベントが記録されない
Xcodeで実行するとうまく動作します。問題は、ターミナル経由で実行したときにイベントをキャプチャしないことです。 XcodeとTerminalの両方の設定でアクセシビリティを有効にしました。ここで
はコードです:
func handlerEvent(aEvent: (NSEvent!)) -> Void {
let stringBuilder = aEvent.characters!
print(stringBuilder, separator: "", terminator: "")
}
// MARK: Event Monitor
func listenForEvents() {
let mask = (NSEventMask.keyDown)
_ = NSEvent.addGlobalMonitorForEvents(matching: mask, handler: handlerEvent)
}
func acquirePrivileges() -> Bool {
let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)
if !accessEnabled {
print("Access Denied")
}
return accessEnabled
}
class ApplicationDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {
if acquirePrivileges()
{
print("Access Granted")
}
print("Starting logging")
listenForEvents()
}
}
let application = NSApplication.shared()
let applicationDelegate = ApplicationDelegate()
application.delegate = applicationDelegate
application.activate(ignoringOtherApps: true)
application.run()
ありがとうございました。私はUIなしでビルドすることで自分の仕事を完成させる唯一の方法だと思います。 – SkrewEverything