如何在Mac OS X下发送原始多点触控板数据?

时间:2014-01-13 00:54:11

标签: macos multi-touch trackpad

最终目标是从iOS设备接收触摸输入,通过websocket发送,在Mac OS X端接受,并通过系统发送,以便使用私有多点触控框架接受输入的所有内容都可以看到数据好像它是普通的多点触控板数据。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

这是一种半途而废的私有解决方案:Apple Sesamouse [至少在Sandbox之外? ...我已经对他们的平台失去了兴趣,所以没有研究那个...]所以这部分是“很好”,但我创建的实际CGEvent是一个无证的类型,我必须通过hex找出的格式转储和他们共享的一些Darwin源代码HID标头。正是“TouchEvents.m”所实现的工作 - 这就是{{3}}可以“凭空创建有效/可接受的多点触控板” - 而且它应该已经与魔法鼠标中读取的私有框架MultitouchSupport分开了输入