質問

Cocoaでグローバルなマウス移動イベントに登録する方法はありますか? CarbonのInstallEventHandler()を使用してイベントに登録できましたが、Cocoaに相当するものを好むでしょう。 NSNotificationCenterイベントを探しましたが、パブリックイベント名はないようです(プライベートイベントはありますか?)

別の方法として、NSTrackingAreaバックグラウンドを持つビューにclearColorを使用する方法はありますか?

アプリはSnow Leopardのみです。

役に立ちましたか?

解決

SnowLeopardには、 NSEvent に新しいクラスメソッドがあります。これは、必要な処理を正確に実行します。 +(id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void(^)(NSEvent * ))ブロック mask = NSMouseMovedMask が必要になります。

他のヒント

StackOverflowで同様の質問が既に尋ねられました: 透明なNSViewサブクラスハンドルを作成する方法マウスイベント?

要約すると、tansparentビューメソッドは機能しませんでした。 Quartz Event Tapsがベストアンサーのようです。

タップの操作に関するヒントを次に示します。

  1. CGEventTapCreate でタップを作成します。
    a)ロケーション(最初の)パラメーターには、おそらく kCGSessionEventTap を使用します。
    b)配置(2番目)パラメーターには、おそらく kCGHeadInsertEventTap が必要です。
    c)イベントマスクパラメーターについては、(1<< kCGEventMouseMoved)を試してください。

  2. CFMachPortCreateRunLoopSource を使用して実行ループソースを作成し、2番目のパラメーターとしてイベントタップを渡します。

  3. 実行ループソースを実行ループに追加します。メインの実行ループに追加したい場合、次のようにします。 CFRunLoopAddSource(CFRunLoopGetMain()、sourceFromStep2、kCFRunLoopDefaultMode);

  4. CGEventTapEnable

    でイベントタップを有効にします

どこにいてもマウスを追跡したい場合は、CGEventTapが必要です。 Cocoaに相当するものはありません。アプリケーションで追跡したいだけなら、もう少し詳しくできない理由を説明する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top