【Swift/Cocoa】タイピングイベント(キーイベント/keydown)をバックグラウンドでも取得する方法【OSX】

タイピングすると「カタカタ」と音がなるアプリを作りたくて、バックグラウンドでもkeydownイベントを取得する方法について調べた。

Appdelegate.swift

//★Appdelegate.swiftのapplicationDidFinishLaunching内のどこかに書く
//ただし、アクセシビリティが有効でないと効果はない
NSEvent.addGlobalMonitorForEvents(matching: NSEventMask.keyDown, handler: keyDown);

//★Appdelegateのclass内のどこかに書く
func keyDown(event:NSEvent!) {
print(“押したよ”)
}

アクセシビリティっていうのは「システム環境設定」→「セキュリティとプライバシー」→「プライバシー」→「アクセシビリティ」で出てくる設定の事です。
ここにXcode、もしくはアプリ自体を追加して下さい。
でないとバックグラウンドでkeydownが反応しません。セキュリティ上危険だからね。

アクセシビリティに追加した後は、一旦アプリを再起動してください。(僕はこれに気づかずハマりました。)

+=+=+=+=+=+

それにしてもswift+cocoaとなると、日本語記事が本当に少ないですね・・・。
UIKitの記事はまだ見かけるんですが・・・。あー辛いっす。

 

SNSでもご購読できます。