gpt4 book ai didi

macos - 如何判断 MTDeviceRef 是什么类型的多点触控设备

转载 作者:行者123 更新时间:2023-12-03 17:04:54 25 4
gpt4 key购买 nike

我正在尝试编写一个库来从 Apple Magic Mouse 获取触摸事件。我正在使用私有(private)框架 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 的文档?

最佳答案

至少还有四种其他方法来获取 MTDeviceRef:

  • MTDeviceCreateDefault
  • MTDeviceCreateFromDeviceID
  • MTDeviceCreateFromGUID
  • MTDeviceCreateFromService

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

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

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

BOOL MTDeviceIsBuiltIn(MTDeviceRef 设备)

再说一次,这只是一个猜测,我还没有真正尝试过。

关于macos - 如何判断 MTDeviceRef 是什么类型的多点触控设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com