2

我正在尝试编写一个库来从 Apple Magic Mouse 获取触摸事件。我正在使用私有框架 MultitouchSupport.framework 并使用下面的代码来获取多点触控设备的列表。这很好用,我的库也很好用,除了它从所有多点触控设备(例如笔记本电脑触控板)获取触摸事件,而我只想从 Magic Mouse 获取事件。如何判断我正在查看的设备类型以仅监视鼠标?

我用来监听事件的代码是

        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 返回的 MTDeviceRefs 以仅开始收听魔术鼠标设备?或者至少,过滤掉默认的笔记本电脑触控板?是否有使用此 MultitouchSupport.framework 的文档?

4

1 回答 1

3

至少有四种其他方法可以获得 a MTDeviceRef

  • MTDeviceCreateDefault
  • MTDeviceCreateFromDeviceID
  • MTDeviceCreateFromGUID
  • MTDeviceCreateFromService

MultitouchSupport.framework 是一个私有框架,您必须对其进行逆向工程,以了解您应该传递给这些函数的参数是什么。

此外,如果您从这些函数之一获得引用,您可能应该使用该MTDeviceRelease函数释放设备引用。

或者您可以尝试使用该MTDeviceIsBuiltIn功能过滤掉触控板。也许BuiltIn意味着笔记本电脑触控板。这只是一个疯狂的猜测,我只是查看了 MultitouchSupport 框架二进制文件中的符号。给定函数名称,它的签名可能是

BOOL MTDeviceIsBuiltIn(MTDeviceRef device)

同样,这只是一个猜测,我还没有真正尝试过。

于 2012-09-05T20:56:44.333 回答