12. N-Trig 触摸屏驱动程序

版权:

© 2008-2010 Rafi Rubin <rafi@seas.upenn.edu>

版权:

© 2009-2010 Stephane Chatty

此驱动程序提供对 N-Trig 笔和多点触摸传感器的支持。单点和多点触摸事件被转换为适用于 hid 和输入系统的适当协议。笔事件足够符合 hid 标准,留给 hid 核心处理。该驱动程序还提供额外的过滤和实用功能,可通过 sysfs 和模块参数访问。

据报告,此驱动程序可以与多个连接的 N-Trig 设备正常工作。

12.1. 参数

注意:在加载时设置的值是全局的,将应用于所有适用的设备。使用 sysfs 调整参数将覆盖加载时值,但仅针对该设备。

以下参数用于配置过滤器以减少噪声

activate_slack

在处理事件之前要忽略的手指数量

activation_height,activation_width

立即激活的大小阈值

min_height,min_width

低于此大小阈值的手指将被忽略,无论是决定激活时还是活动期间

deactivate_slack

在传播活动结束事件之前要忽略的“无接触”帧的数量

当最后一个手指从设备上移除时,它会发送一些空帧。通过延迟停用几个帧,我们可以容忍错误的断开连接,即传感器可能会错误地检测不到仍然存在的手指。因此,deactivate_slack 解决了用户在绘图过程中看到线条断裂,或者在长时间拖动过程中掉落物体的问题。

12.2. 额外的 sysfs 项

这些节点只是提供了对设备报告的范围的轻松访问。

sensor_logical_height,sensor_logical_width

活动期间报告的位置范围

sensor_physical_height,sensor_physical_width

不用于正常事件但对调整有用的内部范围

所有产品 ID 为 1 的 N-Trig 设备都会报告以下范围内的事件

  • X: 0-9600

  • Y: 0-7200

然而,并非所有这些设备都具有相同的物理尺寸。大多数似乎是 12 英寸传感器(戴尔 Latitude XT 和 XT2 以及 HP TX2),并且至少有一个型号(戴尔 Studio 17)具有 17 英寸传感器。物理尺寸与逻辑尺寸的比率用于调整基于大小的过滤参数。

12.3. 过滤

随着早期多点触摸固件的发布,越来越明显的是这些传感器容易发生错误事件。用户报告说看到了不适当的接触丢失和幻影,即在没有手指实际触摸屏幕的地方报告了接触。

停用延迟有助于防止单点触摸使用时接触丢失,但不能解决在其他接触仍然活动时丢失一个或多个接触的问题。多点触摸上下文中的丢失需要额外的处理,并且应与跟踪一起处理。

正如观察到的,幻影接触与传感器的实际使用相似,但它们似乎具有不同的配置文件。幻影活动通常表现为短暂的小触摸。因此,我假设事件的连续流越长,这些事件越有可能来自真实的接触,并且每个接触的尺寸越大,它就越有可能真实。为了平衡防止幻影和快速接受真实事件的目标(以最大限度地减少用户可观察到的延迟),过滤器会累积传入事件的置信度,直到达到阈值并开始传播。为了最大限度地减少存储状态以及做出决策的操作成本,我保持了决策的简单性。

时间是根据报告的手指数量来衡量的,而不是帧数,因为随着数量的增加,多个同时出现的幻影的可能性预计会急剧下降。我没有将权重累积为大小的函数,而是仅将其用作二元阈值。足够大的接触会立即覆盖等待期并导致激活。

将激活大小阈值设置为较大值将导致主要根据激活延迟来决定。如果您看到持续时间更长的幻影,则在减小尺寸阈值的同时增加激活延迟可能足以消除幻影,同时保持屏幕对坚定的点击非常敏感。

即使在满足初始激活过滤器之后,仍然使用 min_height 和 min_width 对接触进行过滤。目的是提供一种在您实际使用屏幕时过滤掉以额外手指形式出现的幻影的机制。在实践中,这种幻影的问题相对较少或相对罕见,我将两个参数的默认值都设置为 0,从而有效地关闭了该过滤器。

我不知道这些过滤器的最佳值是多少。如果默认值不适合您,请尝试使用参数。如果您发现其他值更舒适,我将不胜感激您的反馈。

这些设备的校准会随着时间推移而漂移。如果幻影或接触丢失情况恶化并干扰设备的正常使用,请尝试重新校准。

12.4. 校准

N-Trig windows 工具提供了校准和测试例程。此外,还可以在以下网址找到一组非官方的、不受支持的用户空间工具,包括校准器:http://code.launchpad.net/~rafi-seas/+junk/ntrig_calib

12.5. 跟踪

到目前为止,所有测试过的 N-Trig 固件都不跟踪手指。当多个接触处于活动状态时,它们似乎主要按 Y 位置排序。