很高兴你找到了我的 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 内容分开。