2011-07-11 4 views
2

Cocoaを使用せずにC++を使用してOSXでキーボード入力を取得したい場合は、廃止予定のCarbon UPPハンドラを使用し、IOHIDを使用しない場合は余分な作業が必要です。 私はquartzイベントタップを使って単純なマウスクラスを実装しています。それは魅力的なように機能し、今ではキーボードクラスを実装するために使いたいと思います。OSX Carbon:Quartzイベントタップでキーボード入力を取得する

  1. 現在のプロセスがrootユーザーとして実行されています。とにかくCGEventTapCreate下参照状態として次のいずれかに該当する場合 http://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

    あなたはキーイベントをのみアクセスすることができます。

  2. 補助デバイスのアクセスが有効になっています。 Mac OS X v10.4では、 システム環境設定、ユニバーサルアクセス パネル、キーボードビューを使用してこの機能を有効にすることができます。

これは私のアプリケーションが奇妙な設定なしで動作するようにしたいので、非常に重大な制限です。 これを回避する方法はありますか?もしそうでなければ、Carbonのタップを使う代わりに何かがありますか? ありがとう!

答えて

0

最も簡単な方法は、半廃止Carbon機能RegisterEventHotKeythis SO Q&Aなど)を使用することです。

もしそうでなければ、あなたはその制限に守る必要があります。制限は、悪い人が場面の背後にキーロガーをインストールするのを防ぐためです。ユーザーに設定を開き、管理者パスワードなどを入力するように頼む必要があります。

1

AXMakeProcessTrustedを試してみることもできます。これは、補助デバイスのアクセスと同じであると想定されます。

+0

ちょっと、それは価値があるよりも、とにかくその大きな騒ぎです。私はココアからのキーイベントを(NSApplication sendEvent関数の中で)キャプチャしています。なぜなら、私はアプリケーションレベルのイベントしか必要としないからです。ありがとう! – moka

関連する問題