2

AppleMagicMouseからタッチイベントを取得するためのライブラリを作成しようとしています。プライベートフレームワークMultitouchSupport.frameworkを使用しており、以下のコードを使用してマルチタッチデバイスのリストを取得しています。これはうまく機能し、私のライブラリは、ラップトップのトラックパッドなどのすべてのマルチタッチデバイスからタッチイベントを取得するという事実を除いて、うまく機能しますが、MagicMouseからのみイベントを取得したいと思います。マウスのみを監視するために、どのタイプのデバイスを見ているのかをどのように知ることができますか?

イベントをリッスンするために使用するコードは

        NSMutableArray* deviceList = (__bridge NSMutableArray*)MTDeviceCreateList(); //grab our device list

    for(int i = 0; i<[deviceList count]; i++) //iterate available devices
    {
        MTRegisterContactFrameCallback([deviceList objectAtIndex:i], touchCallback); //assign callback for device
        MTDeviceStart([deviceList objectAtIndex:i], 0); //start sending events
    }

では、MTDeviceCreateListから返されたMTDeviceRefを除外して、Magic Mouseデバイスのみのリッスンを開始するにはどうすればよいですか?または、少なくとも、デフォルトのラップトップトラックパッドを除外しますか?このMultitouchSupport.frameworkを使用するためのドキュメントはありますか?

4

1 に答える 1

3

を取得するには、他に少なくとも 4 つの方法がありますMTDeviceRef

  • MTDeviceCreateDefault
  • MTDeviceCreateFromDeviceID
  • MTDeviceCreateFromGUID
  • MTDeviceCreateFromService

MultitouchSupport.framework はプライベート フレームワークであるため、これらの関数に渡す必要があるパラメーターを理解するには、リバース エンジニアリングを行う必要があります。

また、これらの関数のいずれかから参照を取得する場合は、おそらく関数でデバイス ref を解放する必要がありMTDeviceReleaseます。

または、関数を使用してトラックパッドを除外することもできMTDeviceIsBuiltInます。BuiltInラップトップのトラックパッドを意味するかもしれません。これは単なる推測です。MultitouchSupport フレームワーク バイナリのシンボルを見ただけです。関数名を考えると、その署名はおそらく

BOOL MTDeviceIsBuiltIn(MTDeviceRef device)

繰り返しますが、これは単なる推測であり、実際に試したことはありません。

于 2012-09-05T20:56:44.333 に答える