按钮、报表级别使用情况 (touchpad-buttons-report-level-usages)

本主题讨论 Windows 精确式触摸板集合上下文中按钮的报告级别用法。

下表显示了所有 Windows 精确式触摸板输入报告中都应存在的所有强制用法。 此表包含按钮 1、2、3 的用法。

成员 说明 ID 必需/可选
报表 ID Windows 精确式触摸板报告 ID。 0x0D 0x05 必需
扫描时间 相对扫描时间。 0x0D 0x56 可选
触点计数 将在给定报告中报告的触点总数。 0x0D 0x54 必需
按钮 1 指示与数字化器集成的触摸板按钮的按钮状态。 0x09 0x01 可选
按钮 2 指示用于主键(默认为左键)单击的外部按钮的按钮状态。 0x09 0x02 可选
按钮 3 指示用于辅键(默认为右键)单击的外部按钮的按钮状态。 0x09 0x03 可选

以下部分提供了有关按钮用法的信息。 有关其他成员(例如“报告 ID”)的信息,请参阅 Windows 精确式触摸板集合

按钮 1

按钮 1 开关指定数字化器下的 Windows 精确式触摸板按钮的上/下状态。 无论按钮类型的实现方式如何(压力或机械),当按钮受到所需的激活力量时,都应通过设置按钮位来报告其“向下按下”的状态。 当施加到按钮的激活力低于所需的阈值时,应清除按钮位来报告“向上弹起”的状态。

diagram showing a contact placed on a windows precision touchpad, with sufficient force to invoke a button-down. the contact's down force is later reduced enough to invoke a button-up, while the contact is still on the digitizer surface.

参考上图中概述的示例,假设触点放置在一个 Windows 精确式触摸板上,对触点施加的激活力足以将按钮按下。 接着,在稍后的某个时间,激活力减小到足以使按钮向上弹起,而触点此时仍在数字化器表面上,并会停留额外的一段时间。 将按下表中所述报告此情况。

报表 1 2 3 4 5 6 7 8 9 10 11
触点计数 1 1 1 1 1 1 1 1 1 1 1
Button 1 1 1 1 1 0 NR NR NR NR NR
触点 2:尖端开关 1 1 1 1 1 1 1 1 1 1 0
触点 2:X, Y X₁, Y₁ X₂, Y₂ X₃, Y₃ X₄, Y₄ X₅, Y₅ X₆, Y₆ X₇, Y₇ X₈, Y₈ X₉, Y₉ X₁₀, Y₁₀ X₁₀, Y₁₀

diagram showing a non-capacitive contact that is placed on a windows precision touchpad with sufficient activation force to invoke a button down. the activation force is later reduced, such that it invokes a button up.

参考上图中概述的示例,假设非电容触点放置在一个 Windows 精确式触摸板上,对触点施加的激活力足以将按钮按下。 接着,在稍后的某个时间,激活力减小到足以使按钮向上弹起。 将按下表中所述报告此情况。

报表 1 2 3 4 5 6
触点计数 0 0 0 0 0 0
Button 1 1 1 1 1 0

按钮 2 和 3(离散左键和右键单击)

Windows 精确式触摸板设备将原生支持与数字化器集成的按钮的用法(左键单击和右键单击),但额外的按钮则应由第三方驱动程序提供服务。

如果某个设备仅支持外部按钮,则该设备仍然必须使用按钮 2 和按钮 3 来引用外部按钮。

如果存在多个与触摸板配合使用的按钮,则应在描述符中声明额外的按钮开关。 外部按钮在数据包级别报告,类似于数字化器按钮,但无需将外部按钮与触点状态进行协调。

数据包报告模式

并行模式

在并行模式下,设备会报告某一个数据包中所有的接触点信息。 每个物理触点都由一个嵌入到顶级集合中的逻辑集合来表示。 此逻辑集合包含设备对各个触点都支持的所有用法。 使用并行模式时,每个逻辑集合都必须相同。 由于设备报告的触点数通常低于最大值,因此,应通过“触点计数”用法来传达并行数据包中报告的触点数。

例如,假定某个设备支持三个触点。 如果用户在数字化器上只放两根手指,那么,在可携带三个触点的数据的报告中,并行数据包就会只包含两个有效触点的数据。 在这种情况下,应将“触点计数”设置为 2,以便客户端应用程序知道超过两个触点的信息都是无效的。

在一个报告中报告多个触点有个缺点,那就是在每次触点少于可能的最大触点数时,每个报告都会浪费空间。 设备可以使用混合模式来减少这种低效率。

混合模式

在混合模式中,可在一个报告中报告的触点数少于该设备支持的最大触点数。 例如,最多支持 4 个并发物理触点的设备可以将其顶级集合设置为在一个报告中最多提供 2 个触点。 如果存在 4 个触点,该设备可以将这些触点分为 2 个串行报告,每个提供 2 个触点。

在设备以这种方式传递数据时,第一个报告中的“触点计数”用法值应该会反映在混合报告中传递的触点总数。 其他串行报告的接触点计数应该为零 (0)。

单指混合报告模式

给定帧的第一个输入报告通过“触点计数”用法来指示要报告的触点的总数。 同一帧的所有后续输入报告的值对于“触点计数”用法都应该为零 (0),以指示它们属于以前报告的帧。 某个给定帧的所有报告的扫描时间都应该是相同的。

下表显示了 2 个触点的报告顺序(单指混合报告模式下)。

报表 1 2 3 4 5 6
接触点计数 2 0 2 0 2 0
触点 ID 1 2 1 2 1 2
触点 1:X, Y X₁, Y₁ NR X₂, Y₂ NR X₃, Y₃ NR
触点 1:尖端开关 1 NR 1 NR 1 NR
触点 2:X, Y NR X₁, Y₁ NR X₂, Y₂ NR X₃, Y₃
触点 2:尖端开关 NR 1 NR 1 NR 1
扫描时间 T₁ T₁ T₂ T₂ T₃ T₃

USB 和 I²C 连接的 Windows 精确式触摸板设备可以在单指混合报告模式或双指混合报告模式下提供输入报告。

Windows 精确式触摸板集合