addGlobalMonitorForEventsMatchingMask:handler:を使えばできる。
コールバックされるブロックの引数にNSEventのインスタンスがやってくるので、そこから情報を取得できる。
ただし、アクセシビリティが有効で、アプリケーションがアクセシビリティを利用できる信頼されたアプリケーションでないとイベントは飛んでこない。
信頼されたアプリケーションにするには
システム環境設定 > セキュリティとプライバシー > アクセシビリティ
で設定できる。
Xcodeでデバッグしているアプリで、これを有効にする方法がわからない。
アーカイブビルドしたものをアプリケーションフォルダにおいておくと動いていることが確認できている。
ランチャー系の起動はどうやってキー入力をハンドルしているのか気にになる。