9

Mac に 2 つの USB マウスを接続しており、そのうちの 1 つをスキャナーとして使用しています。一般的な X および Y データにアクセスする必要がありますが、そのデータでカーソルを動かしたくありません。カーボン環境またはココア環境で、マウスをポインティング デバイスとして無視するようにシステムに指示するにはどうすればよいですか?

編集: 掘り下げた後、CGAssociateMouseAndMouseCursorPosition() 関数を使用してマウス位置の更新をオフにできることがわかりましたが、これでは単一のマウスを指定できません。HID マウス デバイスとカーソルの間の OS X の関係を説明できる人はいますか? デバイスごとにハードウェアとソフトウェアの間にバインディングが必要ですが、見つかりません。

4

1 に答える 1

1

マウス用の基本的なユーザー空間ドライバーの作成を検討します。これにより、USB デバイスとしてマウスに直接アクセスできるようになります。システムからデバイスを独占的に制御することもできます。

ここにいくつかのドキュメントがあります:

USB デバイス インターフェイスの操作

はじめに、USB デバイスに接続するためのセットアップ手順は次のようになります (私の IOKit は錆びていると思います)。

インクルード < IOKit/IOKitLib.h > および < IOKit/usb/IOUSBLib.h >

  1. 使用したいデバイスを見つけてくださいIOServiceMatching()。これにより、ベンダー ID などを含むプロパティに基づいて、正しい USB デバイスを見つけることができます。(以下の IORegistryExplorer ツールのスクリーンショットを参照してください)
  2. でUSBプラグインインスタンスを取得します(それを と呼びましょうpluginIOCreatePlugInInterfaceForService()
  3. ステップ2から使用pluginして、デバイスインターフェイスを取得します(それを呼び出しましょうdevice(**plugin)->QueryInterface()
  4. deviceは、USB デバイスへの接続ハンドルを表します。最初に(**device).USBDeviceOpenまたはを使用して開きます(**device).USBDeviceOpenSeize()。そこからデータを送受信できるはずです。

もっと簡単な方法があるかもしれませんが、これが私の頭に浮かんだことです。デバイスのこのレベルの制御を持つことには、いくつかの利点があるかもしれませんが、確かではありません. 幸運を。

IORegistryExplorer のスクリーンショット

于 2012-04-28T01:25:37.940 に答える