【问题标题】:Is it possible to programmatically generate Touchpad gesture event?是否可以以编程方式生成触摸板手势事件?
【发布时间】:2012-12-21 18:56:23
【问题描述】:

我正在开发 OS X 项目,我想以编程方式生成触摸板手势事件,例如 NSEventTypeSwipe 或 NSEventTypeRotate 所以我可以在其他应用程序上旋转/缩放等。

我发现了如何生成鼠标/键盘事件,但不是触摸板。

有什么想法吗?

【问题讨论】:

  • 任何人都有示例代码如何在 macOS 中实现这种手势生成?我正在尝试使用 CGEventCreate() 并传递与适当的触摸手势相对应的事件类型编号,但无法使其正常工作。

标签: objective-c xcode macos cocoa touchpad


【解决方案1】:

没有用于生成这些事件的公共 API。

您可以在此项目中找到一些合成这些事件的工作:calftrail/Touch

【讨论】:

【解决方案2】:

参考:Cocoa Event Handling Guide

上述Mac Developer Library 指南没有说明任何已知的以编程方式生成触摸板手势的方法。

甚至可以说触摸板手势本身发生在操作系统之外:

触控板硬件包括内置支持,用于解释常见手势和映射动作......”

该指南还明确提到应用不应依赖这种唯一的输入机制,因此最好包括对键盘和鼠标的支持。

现在 Mac 和 Windows(即 Windows 8)在操作系统级别支持触摸屏显示器,使用适当的 API 以编程方式将触摸板和触摸屏手势整合到项目或远程桌面控制等服务中只是时间问题当它可用时。

【讨论】:

    【解决方案3】:

    我认为触摸手势事件不容易生成,因为没有公开的官方 Apple API。我认为这 NSEventTypeMagnify、NSEventTypeRotate、NSEventTypeSwipe 仅用于处理退出系统事件时的只读目的。也许苹果出于某种原因不想让 Magic Mouse 成为 3rd 方开发人员的魔法触摸板。提到的这个项目 rob mayoff 不能正常工作,因为苹果可能会改变事件数据的结构。因此,对这种黑客行为进行转发并不是未来主义的。 但是如果你想得更多,你可以通过其他方式实现触摸事件的作用。

    1. 放大(捏合手势)-> 它只是放大、缩小-> 大多数程序都为此使用快捷键,例如 CMD 和 +、CMD 和 -。
    2. 旋转它可以与照片一起使用,并且在预览应用程序中有 CMD 和 L、CMD 和 R 等快捷方式。
    3. 滑动 - 改变空间(桌面) -> 使用 CTRL 和箭头

    【讨论】:

      【解决方案4】:

      当我看到 xcode 模拟器时,我了解到可以以编程方式生成触摸事件,并且 xcode 模拟器正在使用这些例程和函数来传输光标触摸并将它们转换为触摸事件,但是根据 @robMayoff 所说的,似乎苹果公司没有向公众开放该图书馆。模拟相同的行为并为此从头创建函数会有点挑战。

      这是 NSTouch 类参考: http://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSTouch_Class/Reference/Reference.html#//apple_ref/occ/cl/NSTouch

      【讨论】:

      • 我不是反对你的人,但我确实想指出,iOS 模拟器将点击和拖动转换为触摸;它不需要多点触控输入设备,也不会将输入设备上的触控直接转换为模拟 iOS 设备上的触控。如果在“系统偏好设置”的“触控板”窗格中打开了“轻点以单击”,则您只能在不按硬件触控板按钮的情况下点击模拟器中的东西,我不知道这是否适用于魔术鼠标。
      • @PeterHosey 这就是我想说的,在模拟器中点击opt/shift时可以模拟两次鼠标触摸:stackoverflow.com/questions/4633908/…
      猜你喜欢
      • 2011-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多