是否可以以编程方式生成触摸板手势事件?

时间:2012-12-21 18:56:24

标签: objective-c xcode macos cocoa touchpad

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

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

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

参考: Cocoa Event Handling Guide

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

它甚至可以说触控板手势本身出现在操作系统之外:

  

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

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

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

答案 2 :(得分:0)

我认为由于没有公开的官方Apple API,因此无法轻松生成触摸手势事件。我认为这个NSEventTypeMagnify,NSEventTypeRotate,NSEventTypeSwipe仅用于处理exitsting系统事件时的只读目的。也许Apple出于某种原因不想让Magic Mouse成为第三方开发者的魔力触控板。由于苹果可能会改变事件数据结构中的某些内容,因此提到的项目rob mayoff无法正常工作。所以继续这种黑客攻击并不是未来主义。 但是,如果你想多一点,你可以通过其他方式实现触摸事件。

  1. 放大(捏合手势) - >它只是放大,缩小 - >大多数程序都使用CMD和+,CMD和 - 这样的快捷方式。
  2. 旋转它可用于照片,并且在预览应用程序中有CMD和L,CMD和R等快捷方式。
  3. 刷卡 - 更换空间(桌面) - >使用CTRL和箭头< - 或 - >

答案 3 :(得分:-1)

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

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