1

最终目标是从 iOS 设备获取触摸输入,通过 websocket 发送,在 Mac OS X 端接受,然后通过系统发送,这样所有使用私有多点触控框架接受输入的东西都可以看到数据,就好像它是正常的多点触控板数据。

https://github.com/calftrail/Touch下的综合子项目似乎是一个不错的起点。然而,开发人员创建它的目的似乎是获取有效的多点触控输入(当 Mac OS X 的软件支持很少时,来自魔术鼠标),并将其作为多点触控板输入进行管道传输。我需要凭空创建有效/可接受的多点触控板(只有触摸位置序列,而不是真正的 HID 数据)。

在这里深处。帮助别人。:)

4

1 回答 1

4

很高兴你找到了我的 TouchSynthesis 子项目——我认为它可以让你做你需要做的事情,因为在内部它是根据你的需要进行拆分的。[但请注意,此代码是 GPL 许可的,即病毒式开源,与许多 Mac 库不同。]

您可以将TouchSynthesis.m视为使用TouchEvents“库”的示例代码,该库通过一个“简单”功能为您的特定问题提供支持:tl_CGEventCreateFromGesture

基本要点是tl_CGEventCreateFromGesture接收手势+触摸数据的字典,并返回一个 CGEvent,您可以通过 Quartz 事件服务将其注入系统。发送成为 NSTouch 数据的内容需要手势事件,但 IIRC 可能是一种相当通用的“手势”类型,而不是缩放/平移/等。

这是一种半私有化的解决方案:Apple支持将 CGEvents 注入系统[至少在 The Sandbox 之外?......我已经对他们的平台失去了兴趣,所以没有研究过那个......]所以那部分是“好的”,但我创建的实际 CGEvent 是一种未记录的类型,我必须通过十六进制找出它的格式转储和他们共享的一些 Darwin 源代码 HID 标头。这就是“TouchEvents.m”实现的工作——这就是Sesamouse可以“凭空创建有效/可接受的多点触控板”的方式——它应该已经与在 Magic Mouse 输入中读取的私有框架 MultitouchSupport 内容分开。

于 2014-01-13T16:56:59.493 回答