2012-02-19 16 views
2

を有効にすることなく、グローバルなホットキーを登録します有効になりました。補助デバイスが有効になっていないと、イベントは一切転送されません。私はグローバルイベントハンドラを登録することができ、補助デバイスのサポートは、このコードを使用して

フォームドキュメント:

Key-related events may only be monitored if accessibility is enabled or if your 
application is trusted for accessibility access (see AXIsProcessTrusted). 

別の方法が存在する場合、私は、疑問に思う、私はしなかったもののOS Xの

の特定の機能を有効にするためにユーザーを強制することなく、イベントに沿って通過しますAppleのドキュメントにある解決策を見つけるには解決策が必要です。例えば。 AlfredのMASでダウンロードされたバージョンでは、ホットキーを定義することができます。

興味深いことに、アルフレッドの好みだけで特定の特殊キーの組み合わせがを動作しない可能性があること、特殊キーを示しており、指摘しています。

私は基本的に 'グローバル'非アクティブパネルを表示/非表示にしたいので、おそらく単にシステムサービスを準備する必要があります。したほうがいい?

+0

あなたは、古いカーボン関数 'RegisterEventHotKey'を使用することができます。私はそれが非難されていることをかなり確信していますが、それでもうまく動作し、補助的なアクセスを必要としません(そしてAppleのサンプルコードのいくつかではまだ使用されています)。しかし、システムコマンドを無効にすることはできません。コード例については、[my answer here](http://stackoverflow.com/a/4640190/458390)を参照してください。 – ughoavgfhw

+0

ありがとうございます!私が試してみます! – SteAp

+1

@ughoavgfhw:「RegisterEventHotKey」は、10.7 SDKの時点で廃止予定とマークされていません。 – JWWalker

答えて

2

クォーツイベントタップは、kCGSessionEventTapを場所として作成してみてください。

Quartz Event Services Reference
Sample code from Mac OS X Internals

+0

Thx!上記のサンプルコードのコメント:アクセシビリティが有効になっていない限り、イベントタップを作成するにはスーパーユーザー権限が必要です。これを実行するには、Universal Accessシステム環境設定パネルの「補助デバイスへのアクセスを有効にする」チェックボックスを選択します。 – SteAp

+0

あなたが 'kCGHIDEventTap'を指定した場合にのみ必要だと思います。たぶんあなたはそれを試して結果を報告することができます。 –

+0

(void)applicationDidFinishLaunching:aNotificationから呼び出されます。 CGEventTapCreateが失敗し、 'イベントタップの作成に失敗しました'というメッセージが表示されます。 – SteAp

関連する問題