Wacom Feel™ 多点触控 API 入门
我需要什么才能开始为 Wacom Feel™ Multi-Touch API 开发软件?
您需要一个支持触摸输入的 Wacom 数位板。此外,您还需要安装 Wacom 数位板驱动程序,其中包括 Wacom Feel™ Multi-Touch 软件库。有一些代码文件需要与您的源代码一起包含,其详细信息可以在基本编程模型中找到。
使用 Wacom Feel™ 多点触控 API 需要什么?我需要在我自己的项目中包含任何 SDK 或库吗?
Wacom Feel™ Multi-Touch API 支持是 Wacom 数位板驱动软件本身的一部分。驱动程序安装提供了所有必要的系统组件,以便通过 API 与平板电脑进行通信。当您使用 SDK 提供的标头构建您的应用程序时,您可以动态链接到已安装的 Wacom 库。不需要 .LIB 文件。请参阅Multi-Touch Windows .NET和Multi-Touch Windows C++示例代码演示。
Wacom Feel™ Multi-Touch API 是否适用于所有 Wacom 数位板?
不,您需要支持触摸输入的 Wacom 数位板。
我在哪里可以找到 Wacom Feel™ Multi-Touch API 示例应用程序?
可以在此处找到示例代码:Multi-Touch Windows .NET和Multi-Touch Windows C++。
如何下载 Feel™ Multi-Touch API 的 SDK?
Feel™ Multi-Touch API 的运行时依赖性是通过 Wacom 数位板驱动程序提供的;它总是在最终用户在他们的系统上安装平板电脑驱动程序时安装。编译时依赖项在基本编程模型中有详细说明。
我可以通过 Wacom Feel™ Multi-Touch API 从数位板上获取哪些类型的触摸数据?
API 支持的多点触控平板电脑将至少报告每个手指的以下信息:
手指状态(无、向上、向下、按住)
手指触摸位置(x、y)
手指大小(宽度和高度)
对于受支持的平板电脑,支持其他数据类型:
斑点数据——检测到一个或多个触摸接触的不规则形状区域
原始数据——传感器的所有数据,包括非接触区域和接触区域
请参阅 Wacom Feel™ 多点触控 API参考页面以全面了解功能。
Windows 触控 API 和 Wacom Feel™ 多点触控 API 有什么区别?
Wacom Feel™ Multi-Touch API 增加了对 Wacom 数位板驱动程序支持的其他操作系统的支持,包括 Mac。它还允许应用程序设计与平板电脑手写笔同时工作的触摸功能。它为跨平台开发提供了一个标准化的接口。
我可以使用 Wacom Feel™ Multi-Touch API 为我的 Windows 应用商店应用程序设计触控功能或手势吗?
不可以,Windows 应用商店应用程序的访问权限受到限制,无法链接到我们的库。对于 Windows 应用商店应用程序,请使用 Windows 指针事件(请参阅: https: //docs.microsoft.com/windows/uwp/design/input/)。
我可以使用 Wacom Feel™ Multi-Touch API 为 Web 应用程序设计触摸功能或手势吗?
不,我们不提供对 Wacom Feel™ Multi-Touch API 的浏览器支持。请参阅Web API 常见问题页面。
了解多点触控数据
我能用这些触摸数据做什么?
您可以使用这些数据来创建功能,使用户与屏幕上的内容能够直接交互——触摸屏幕对象并对其进行一些操作。或者您可以使用它来创建驱动应用程序的手势。用手指创造身临其境的体验,无需鼠标或键盘。Wacom Feel™ Multi-Touch 屏幕可同时响应多个接触点,不仅仅是一根或两根手指,而是同时响应多个接触点。
Wacom Feel™ Multi-Touch API 支持哪些主要操作模式?
消费者模式——在消费者模式下,最前沿的 Wacom Feel™ Multi-Touch API 启用应用程序是接收触摸数据的唯一进程。数据不会为了手势处理而传递给系统,也不会传递给任何其他多点触控应用程序。
观察者模式——在观察者模式下,多点触控应用程序被配置为接收触摸数据,它可以根据需要解析这些数据。触摸数据也被发送到平板电脑驱动程序手势识别算法以及系统本身(例如,用于光标导航)。所有正在运行的启用 Wacom Feel™ 多点触控 API 的应用程序都将接收触摸数据。如果应用程序选择以观察者模式将触摸数据传递给驱动程序,那么平板电脑驱动程序将解释触摸数据并识别适合平板电脑和操作系统的手势。
直通模式——在直通模式下,如果触摸数据落在指定的 hitrect 内,则会将其发送到系统。这对于希望保留对触摸数据的独占使用以进行绘图或对象操作的消费者应用程序非常有用,同时仍保持用户与应用程序控件(例如按钮、菜单等)交互的能力。直通模式区域(hitrects)可以与其他两种模式结合使用。
我应该在我的应用程序中使用哪种操作模式?
消费者模式——如果您使用触摸数据来定义您自己的手势或其他交互并且不希望来自操作系统的任何干扰,则很有用。它可能需要在您的应用程序中做更多的工作,因为操作系统不移动光标或提供与菜单或其他对话框交互的能力。
观察者模式——为应用程序提供与触摸数据交互的能力。然后将数据传递给操作系统,以完成移动光标和与窗口范围外的项目交互的工作。请注意,Wacom 数位板驱动程序将继续处理触摸数据并应用手势识别算法。
直通模式——用于在您的应用程序中设置点击区域或按钮框区域。建议将此与 Consumer 模式结合使用。
防手掌误触是如何工作的?什么是“触摸信心位”?
手掌拒绝是应用程序忽略触摸数据的能力,因为它会在用户正在与之交互的应用程序中造成干扰(例如留下污迹或条纹)。该 API 支持应用程序通过使用“置信位”来内置手掌拒绝功能。置信位是单个手指触摸数据的标志,指示平板电脑驱动程序认为触摸是有意的(有效的)还是无意的(无效的)。
置信度位的常见用途是用于同时包含笔和触摸输入的应用程序。在笔位置附近的触摸将被视为不自信(对于惯用右手的用户,如果触摸主要发生在笔位置的右侧)。置信位的另一个用途是在触摸接触过大时进行标记,其中“过大”大约是指超过正常手指接触大小的任何东西。尽管所有手指触摸数据都带有置信度位,但应用程序可以随意忽略它们并建立自己的标准来决定触摸何时有效。
如果您的应用程序需要匹配 down 和 up 事件,检查非置信数据将很重要;大多数宕机事件发生在不自信的状态下。
使用手掌拒绝会增加一些延迟,因为可能需要几帧才能接受接触。
如何创建扩展和可自定义的手势?Wacom 是否提供创建它们的工具?
开发人员可以使用 Wacom Feel™ Multi-Touch 数据创建自己的手势来代替标准操作系统手势,或者以独特的方式扩展它们。Wacom 不为此提供工具。
Wacom 手势引擎如何与 API 相关联?
Wacom Feel™ Multi-Touch API 不提供任何手势事件。驱动程序产生的手势事件以击键和鼠标滚轮事件的形式发送。用户可以通过 Wacom 数位板属性应用程序修改某些手势的输出。如果应用程序注册消费者模式触摸数据,则不会生成这些事件。如果应用程序希望接收平板电脑驱动程序手势支持以及处理触摸数据输入,它应该注册观察者模式触摸数据。
我的应用程序如何支持来自 Wacom 的系统范围的“用户可配置手势”,以及我自定义的特定于应用程序的触摸功能?
为此,您需要使用观察者模式并根据应用程序的需要响应来自操作系统的事件。
当我将手掌放在数位板上并用手指触摸以进行手势或手指数据输入时,Wacom Feel™ Multi-Touch API 是否可以识别并拒绝手掌?
当手掌放在平板电脑上时,一些平板电脑可以使用置信度位来指示错误(拒绝)条件。对于不支持置信位的平板电脑,所有触摸都被解释为有效并被报告。请注意,如果多点触控应用程序设置为观察者模式,则触摸数据也会传递给平板电脑驱动程序手势识别器,这些手势识别器可能会也可能不会使用其手势识别器算法中的触摸置信度位来确定手势。
为什么在为 Wacom 数位板设计功能时无法获得要使用的型号?
基于触摸功能结构提供的特性设计触摸交互是确保未来兼容性的最佳方式。我们确保未来平板电脑中的相同功能可与 API 配合使用。当未来的平板电脑型号发布时,基于型号的设计决策可能会中断。
随着 API 的更改和改进,我的应用程序是否仍可使用旧版本的 API?
一般来说,是的。保持向后兼容性是重中之重。随着新版本的发布,我们努力保持对以前版本 API 的支持。请检查 WacomMTInitialize 函数的返回值是否存在版本兼容性问题。
什么是帧数以及如何使用它?
每次检测到新的联系人数据包时,帧计数值都会增加。由于数据包传递的速率是固定的,因此帧计数值可用于测量接触移动的速率,而无需依赖内部计时器值。这也可用于识别帧丢失的时间。对于不受支持的平板电脑,该属性返回零。
Wacom Feel™ 多点触控 API 是否通过 WM_GESTURE 事件支持 Windows 7 / Windows 8 原生多点触控?
不,API 本身不支持 Windows WM_GESTURE 事件。但是,您可以编写配置为“观察者”的多点触控应用程序,并为这些从 Windows 传递的事件提供挂钩。作为观察者,应用程序还允许将数据传递给系统。如果 Windows 检测到手势(例如双指滚动),它会向感兴趣的应用程序发送 WM_GESTURE 事件。如果多点触控应用程序配置为“消费者”,则 Windows 看不到触摸数据,也不会发出 WM_GESTURE 事件。
解决常见问题
我的应用程序被太多的触摸回调淹没,回调滞后并且变得无响应。我怎样才能解决这个问题?
平板电脑触摸数据具有高分辨率,每秒报告 100 次,以提供最佳用户体验。该数据流包括手指位置以及手指是处于“向下”、“向上”还是“保持”位置。Wacom Feel™ Multi-Touch API 无法预测应用程序的性能要求,将全速报告。为了最流畅的控制和最好的质量体验,不建议跳过数据点。为了获得最佳性能,建议应用程序使用单独的线程来管理触摸数据包数据,从而减轻主应用程序的负载。
有两种读取数据的方法。开发人员可以注册读取回调或注册窗口句柄以在数据准备就绪时接收消息。如果性能是一个问题,最好使用回调方法将数据排队并在不同的线程上处理它。处理线程然后可以查看数据并确定是否需要进一步处理并且可能不处理所有数据。如果出于性能原因想要跳过帧,一种可能是查看帧中每个手指的接触状态并处理每个其他手指(例如),除非手指状态发生变化(向上或新手指向下) . 这样你就不会错过任何起伏,而且如果你不想的话也不需要处理中间的每个数据包。重要的是不要在回调函数中花费太多时间,并且您也不能依赖退出后持久存在的数据。最好维护您自己的内部联系人队列并在单独的线程上处理它们。