1、协议实现 (touchpad-protocol-implementation)

1.1 内容

 本部分介绍实现 Windows 精确式触摸板设备使用的通信协议的指南。触控板设备需要使用人机接口设备 (HID) 协议来与 Windows 主机通信。需要对 HID 协议有深入理解,这样才能理解此处提供的信息。 有关 HID 协议的信息,请参阅以下资源:人机接口设备 (HID) 版本 1.11 的设备类定义HID 用法表版本 1.12HID Over I2C 协议规范 1.0 版Windows 包括 HID 类驱动程序和相应的 HID I²C、HID USB、HID SPI 和 HID BTH 微型端口驱动程序。 因此,无需为使用其中一条总线的 Windows 精确式触控板设备开发第三方驱动程序。 但是,若要使用第三方总线控制器,或开发自己的控制器以和设备一起使用,就可以执行此操作。若要设备通过备用总线进行连接,可能需要第三方 HID 微型端口驱动程序。 你只需在设备的固件中报告此主题中所描述的用途。 Windows 将使用你的固件及其 HID 驱动程序为设备启用鼠标和手势功能,并为 Windows 应用程序提供对设备的访问权限。在示例报告描述符主题中提供了示例描述符。在本节中主题及说明所需 HID 描述符本主题介绍 Windows 10 及更高版本操作系统中的 Windows 精确式触控板设备所需的 HID 描述符(和设备属性)。所需 HID 顶级集合本节介绍 Windows 10 及更高版本的操作系统中用于精确式触控板报告所需的 HID 顶级集合。示例报告描述符本主题介绍 Windows 精确式触控板设备的示例报告描述符和示例描述符摘录。

1.2 链接

    https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-protocol-implementation

2、所需的 HID 描述符 (touchscreen-required-hid-descriptors)

2.1 内容

    本主题介绍 Windows 10 及更高版本操作系统中的 Windows Precision 触摸板设备所需的 HID 描述符(和设备属性)。所需 HID 描述符下表显示了所需 USB HID 描述符。 有关详细信息,请参阅人机接口设备 (HID) 版本 1.11 的设备类定义中的 6.2.1 部分。成员   大小(以字节为单位)    说明bLength   1   描述符的大小bDescriptorType   1   描述符的类型bcdHID    2   HID 版本号bCountryCode 1   国家/地区代码bNumDescriptors  1   描述符的数目bDescriptorType   1   描述符类型bDescriptorLength  2   描述符的长度所需的 I²C HID 描述符下表显示了所需的 I²C HID 描述符。成员    大小(以字节为单位)    说明wHIDDescLength    2   完整 HID 描述符的长度(以字节为单位)。bcdVersion  2   二进制编码的十进制 (BCD) 格式的版本号。wReportDescLength    2   报表描述符的长度(以字节为单位)。wReportDescRegister  2   包含报表描述符的注册索引。wInputRegister 2   用于读取输入报表的寄存器编号(以无符号字节)。wMaxInputLength    2   要从输入寄存器中读取的最大输入报表的长度。wOutputRegister    2   用于发送输出的寄存器编号(以无符号字节)。wMaxOutputLength 2   要发送的最大输出报表的长度。wCommandRegister  2   用于发送命令请求的寄存器编号(以无符号字节为单位)。wDataRegister   2   用于与命令请求交换数据的寄存器编号(以无符号字节为单位)。wVendorID    2   USB-IF 分配的供应商 ID。wDeviceID  2   设备 ID。wVersionID    2   固件版本号。所需的设备属性必须在设备属性中提供以下 HID 属性。 这些设备属性的报告特定于总线。 有关所选总线,请参阅特定于 HID 的指南。成员   说明  USB I²CwVendorID    供应商 ID  USB 设备描述符中的 idVendor    I²C HID 描述符中的 wVendorID(请参阅上表)。wProduct   产品 ID   USB 设备描述符中的 idProduct   I²C HID 描述符中的 wDeviceID(请参阅上表)。wVersionID 固件版本号   USB 设备描述符中的 bcdDevice   wVersionID I²C HID 描述符(请参阅上表)。

2.2 链接

 https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-required-hid-descriptors

3 必需的 HID 顶级集合 (touchpad-required-hid-top-level-collections)

3.1 内容

 本节介绍在 Windows 10 和更高版本的操作系统中用于精确式触控板报告的必需 HID 顶级集合。Windows 精确式触控板设备应公开两个必需的顶级集合:Windows 精确式触控板集合和配置集合。 还可以实现用于固件更新和基本鼠标模式支持的可选(但推荐的)集合。下图显示了 Windows 精确式触控板设备的 HID 集合。


示例报告描述符主题中提供了一个示例描述符(显示顶级集合)。
以下主题提供有关 HID 顶级集合的更多详细信息。
在本节中主题 说明
鼠标集合
本主题讨论了 Windows 精确式触控板设备的鼠标集合,还说明了该集合如何向 Windows 主机提供符合 HID 的鼠标报告。
配置集合
本主题讨论了 Windows 10 及更高版本的操作系统中 Windows 精确式触控板设备的配置集合所扮演的角色。
Windows 精确式触摸板集合
本主题讨论了 Windows 精确式触控板的顶级集合,还说明了该集合如何向 Windows 主机提供符合 HID 的触控板报告。
按钮、报表级别使用情况
本主题讨论 Windows 精确式触控板集合上下文中按钮的报告级别用法。
固件更新集合(可选)
Windows 精确式触控板设备可以使用 HID 协议来提供特定于供应商的顶级集合,用于执行设备固件和供应商配置更新。

3.2 链接

https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-required-hid-top-level-collections

4 鼠标集合

4.1 内容

本主题讨论了 Windows 精度触摸板设备的鼠标集合,还说明了该集合如何向 Windows 主机提供与 HID 兼容的鼠标报告。
Windows 精度触摸板设备可提供一个顶级集合,它使得触摸板显示为通用桌面鼠标(页面 0x01,使用 0x02)。
对于不能通过 Windows 精度触摸板集合使用输入的主机,这尤其重要。 这类主机包含下级 BIOS 实现或 Windows 8.1 之前的操作系统等内容。 鼠标集合应支持一个输入报告,该报告至少报告了相对位置 (x, y) 和左右按钮。 没有与此集合关联的必需功能报告。 有关鼠标集合的示例,请参阅示例报告描述符。
默认情况下,Windows 精度触摸板设备可通过鼠标集合报告数据,因为这是最兼容的报告模式。

4.2 链接

https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-mouse-collection

5 配置集合

5.1 内容

本主题讨论了 Windows 10 中 Windows 精确式触摸板设备的配置集合所扮演的角色。

Windows 精确式触摸板应提供通过配置选项使设备显示为数字化器的顶级集合(页面 0x0D,用法 0x0E)。

使用 Windows 精确式触摸板设备的配置集合,主机就可以配置设备的两个不同方面,因此该集合应支持两种功能报告:一种允许主机选择输入模式,另一种允许主机选择所报告的内容。 没有与此集合关联的必需输入报告。

输入模式功能报告
输入模式功能报告由主机传达给 Windows 精确式触摸板设备,用于指示应该将哪个顶级集合用于输入报告。 可将两个集合用于输入报告:鼠标集合和 Windows 精确式触摸板集合。

默认情况下,Windows 精确式触摸板设备可以选择通过鼠标集合报告输入。 任何时候,Windows 精确式触摸板都应该只通过一个给定集合报告数据。 从主机收到指示所需输入模式的相应功能报告后,设备应该只从另一个集合进行报告。

主机指定的用于输入模式的值(用法 0x52)决定了应该用于报告输入的集合。 下表提供了详细信息。

输入模式值 输入报告集合
0 鼠标集合
3 Windows 精确式触摸板集合
主机可以在读取报表描述符后,随时向 Windows 精确式触摸板设备发出输入模式功能报告。 这包括可能通过当前处于活动状态的集合报告数据的时间。 如果报告数据时发生模式切换,则所有触点和按钮状态都应报告为向上弹起,并且所有通过该集合进行的报告都应停止。

在所有触点实际上都已向上弹起后,可以通过新指定的集合进行报告。 输入模式不应由 Windows 精确式触摸板设备跨电源周期保留。 但是,只要任何特定于总线的重置不涉及设备电源,输入模式就应保留。 例如,可以在进行 USB、HID 或 I²C 重置后保留输入模式。

注意 支持非触摸板功能的主机可以发送除上表中列出的值以外的值。 在这种情况下,设备应将此值解释为零 (0),并切换到鼠标模式,因为只有支持触摸板的操作系统会发出模式 3。

选择性报告功能报告
输入模式功能报告由主机传达给 Windows 精确式触摸板设备,用于指示应该报告哪些类型的输入。 可以报告两种类型的输入:表面接触和按钮状态。

默认情况下,这意味着在冷启动后或电源重置后,Windows 精确式触摸板设备应报告表面接触和按钮状态。 Windows 精确式触摸板设备应仅根据相应的功能报告来报告主机以前选择的输入。

主机为表面开关(用法 0x57)和按钮开关(用法 0x58)指定的值决定了应报告的输入类型。 下表提供了详细信息。

表面开关 按钮开关 要报告的输入
0 0 不报告任何输入。
0 1 仅报告按钮状态。
1 0 仅报告表面接触。
1 1 报告表面接触和按钮状态。
主机可以在读取报表描述符后,随时向 Windows 精确式触摸板设备发出选择性报告功能报告。 在进行电源重置候,Windows 精确式触摸板不应保留选择性报告状态。

当 USB 连接型 Windows 精确式触摸板设备挂起时,它只应基于主机通过此功能报告选择的输入发出远程唤醒的信号。

I²C 连接型 Windows 精确式触摸板设备应仅基于主机通过此功能报表选择的输入生成中断。

5.2 链接

https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-configuration-collection

6 Windows 精确式触摸板集合

6.1 内容

本主题讨论了 Windows 精确式触控板的顶级集合,还说明了该集合如何向 Windows 主机提供符合 HID 的触控板报告。

Windows 精确式触控板设备可以使用 HID 协议来提供显示为数字化器/触控板的顶级集合(页面 0x0D,用法 0x05)。

此 Windows 精确式触控板集合旨在向主机提供丰富的多触点和按钮报告,以及与这些报告相关的设备信息。 集合应支持两个功能报告:一个允许主机获取设备功能,另一个报告用于获取设备的认证状态。 有关强制输入报告的示例,请参阅示例报告描述符。

可以实现可选(但强烈建议)的功能报告,以从主机获取延迟模式提示,从而实现 USB 设备在睡眠模式下所需的功耗。 以下部分详细介绍了适用于 Windows 精确式触控板的顶级集合中的报告。

“设备功能”功能报告
“设备功能”功能报告由 Windows 精确式触控板的主机请求,用于检索有关设备的触点报告功能和设备按钮类型的信息。

设备的触点报告功能由它可以报告的最大并发表面接触数定义。 一个 Windows 精确式触摸板应至少支持 3 个并发触点,最多支持 5 个并发触点。 触控板应通过“设备功能”功能报告中的最大触点数(页面 0x0D,用法 0x55)来报告此值。 在报告数据时,设备报告的触点数不得超过最大触点计数。 在达到最大触点计数后报告的任何新触点信息将被主机忽略。

该设备的按钮类型被定义为可按压的实现(也称为点击板类型)或不可按压的实现(也称为压力板)。 Windows 精确式触控板也可以具有非按钮报告数字化器表面和外部按钮。

应在“设备功能”功能报告中通过按钮类型的值(页面 0x0D,用法 0x59)指定按钮实现类型。 如果设备具有非按钮报告数字化器表面,并且仅依赖外部按钮进行鼠标单击,则可以选择报告此用法。

下表显示了按钮类型用法值。

按钮类型值 实现
0 可按压(点击板)
1 不可按压(压力板)
2 不可点击(离散板)
主机可以在读取报告描述符后随时请求 Windows 精确式触控板的“设备功能”功能报告。

设备认证状态功能报告
设备认证状态功能报告由 Windows 精确式触控板的主机请求,用于检索有关设备的 256 字节 Blob 的信息。

在 Windows 10 中,向主机报告有效的已认证 Blob 是可选操作,但若要与 Windows 8.1 后向兼容,必须执行此操作。 未与已签名的 PTPHQA Blob 通信的设备仍必须报告(任何)256 字节的 Blob,例如下面的示例 Blob。 不报告有效认证 Blob 的设备将无法在 Windows 8.1 上运行。 Windows 不会与使用 HID 触控板用法但不在其“设备功能”功能报告中公开认证状态的设备交互。

应在设备认证状态功能报告中“供应商定义的用法”页(页面 0xFF,用法 0xC5)中通过供应商特定的用法指定 256 字节 Blob。

在设备收到指示其认证状态的 256 字节 Blob 之前,它应实现默认 Blob,如下所示:

0xfc, 0x28, 0xfe, 0x84, 0x40, 0xcb, 0x9a, 0x87, 0x0d, 0xbe, 0x57, 0x3c, 0xb6, 0x70, 0x09, 0x88, 0x07,
0x97, 0x2d, 0x2b, 0xe3, 0x38, 0x34, 0xb6, 0x6c, 0xed, 0xb0, 0xf7, 0xe5, 0x9c, 0xf6, 0xc2, 0x2e, 0x84,
0x1b, 0xe8, 0xb4, 0x51, 0x78, 0x43, 0x1f, 0x28, 0x4b, 0x7c, 0x2d, 0x53, 0xaf, 0xfc, 0x47, 0x70, 0x1b,
0x59, 0x6f, 0x74, 0x43, 0xc4, 0xf3, 0x47, 0x18, 0x53, 0x1a, 0xa2, 0xa1, 0x71, 0xc7, 0x95, 0x0e, 0x31,
0x55, 0x21, 0xd3, 0xb5, 0x1e, 0xe9, 0x0c, 0xba, 0xec, 0xb8, 0x89, 0x19, 0x3e, 0xb3, 0xaf, 0x75, 0x81,
0x9d, 0x53, 0xb9, 0x41, 0x57, 0xf4, 0x6d, 0x39, 0x25, 0x29, 0x7c, 0x87, 0xd9, 0xb4, 0x98, 0x45, 0x7d,
0xa7, 0x26, 0x9c, 0x65, 0x3b, 0x85, 0x68, 0x89, 0xd7, 0x3b, 0xbd, 0xff, 0x14, 0x67, 0xf2, 0x2b, 0xf0,
0x2a, 0x41, 0x54, 0xf0, 0xfd, 0x2c, 0x66, 0x7c, 0xf8, 0xc0, 0x8f, 0x33, 0x13, 0x03, 0xf1, 0xd3, 0xc1, 0x0b,
0x89, 0xd9, 0x1b, 0x62, 0xcd, 0x51, 0xb7, 0x80, 0xb8, 0xaf, 0x3a, 0x10, 0xc1, 0x8a, 0x5b, 0xe8, 0x8a,
0x56, 0xf0, 0x8c, 0xaa, 0xfa, 0x35, 0xe9, 0x42, 0xc4, 0xd8, 0x55, 0xc3, 0x38, 0xcc, 0x2b, 0x53, 0x5c,
0x69, 0x52, 0xd5, 0xc8, 0x73, 0x02, 0x38, 0x7c, 0x73, 0xb6, 0x41, 0xe7, 0xff, 0x05, 0xd8, 0x2b, 0x79,
0x9a, 0xe2, 0x34, 0x60, 0x8f, 0xa3, 0x32, 0x1f, 0x09, 0x78, 0x62, 0xbc, 0x80, 0xe3, 0x0f, 0xbd, 0x65,
0x20, 0x08, 0x13, 0xc1, 0xe2, 0xee, 0x53, 0x2d, 0x86, 0x7e, 0xa7, 0x5a, 0xc5, 0xd3, 0x7d, 0x98, 0xbe,
0x31, 0x48, 0x1f, 0xfb, 0xda, 0xaf, 0xa2, 0xa8, 0x6a, 0x89, 0xd6, 0xbf, 0xf2, 0xd3, 0x32, 0x2a, 0x9a,
0xe4, 0xcf, 0x17, 0xb7, 0xb8, 0xf4, 0xe1, 0x33, 0x08, 0x24, 0x8b, 0xc4, 0x43, 0xa5, 0xe5, 0x24, 0xc2
主机可以在读取报告描述符后随时请求 Windows 精确式触控板的设备认证状态功能报告。

延迟模式功能报告
延迟模式功能报告由主机发送到 Windows 精确式触控板,指示何时需要高延迟以节省电量,或反之,何时需要正常延迟以确保正常操作。 对于 USB 连接的 Windows 精确式触控板设备,此功能使设备能够区分由于不活动而处于暂停状态(运行时空闲)和由于系统进入 S3 或连接待机模式而处于暂停状态。

应通过延迟模式功能报告中的延迟模式用法值(页面 0x0D,用法 0x60)来指示延迟模式。 下表显示了延迟模式用法值。

延迟模式值 延迟模式
0 正常延迟
1 高延迟
Windows 精确式触控板输入报告
主机在通过 Windows 精确式触控板集合从输入报告中提取触点数据时使用下表中的用法。 该表包含所有的必需用法,以及与报告的每个唯一数字化器触点相关的受支持的可选用法。

成员 说明 页 ID 必需/可选
触点 ID 唯一标识给定帧中的触点。 0x0D 0x51 必需
X 触点位置的 X 坐标。 0x01 0x30 必需
Y 触点位置的 Y 坐标。 0x01 0x31 必需
提示 如果触点位于数字化器的表面,则设置此成员。 0x0D 0x42 必需
置信度 如果触点对于手指而言太大,则设置此成员。 0x0D 0x47 必需
下表包括所有 Windows 精确式触控板输入报告中都应存在的所有必需用法。

成员 说明 页 ID 必需/可选
报表 ID Windows 精确式触摸板报告 ID。 0x0D 0x05 必需
扫描时间 相对扫描时间。 0x0D 0x56 可选
触点计数 将在给定报告中报告的触点总数。 0x0D 0x54 必需
按钮 1 指示与数字化器集成的触控板按钮的按钮状态。 0x09 0x01 可选
按钮 2 指示用于主键(默认为左键)单击的外部按钮的按钮状态。 0x09 0x02 可选
按钮 3 指示用于辅键(默认为右键)单击的外部按钮的按钮状态。 0x09 0x03 可选
任何未在触点级别或报告级别报告所有必需用法的设备无法作为 Windows 精确式触控板正常运行。 必需用法由 Windows 主机严格执行。 如果未限制逻辑最大值,可对其进行优化以减小描述符大小。

以下部分提供了有关报告中的成员的信息。 有关按钮成员的信息,请参阅按钮、报表级别用法。

触点 ID

唯一标识报告中的触点(在其整个生命周期内)。 在设备检测并报告触点时,该触点 ID 必须保持不变。 每个单独的并发触点必须具有唯一标识符。 在不再检测或报告先前关联的触点后,可以重用标识符。 没有预期的数字范围,使用的值仅受描述符中指定的逻辑最大值限制。

X/Y

X 和 Y 值报告给定触点的坐标。 Windows 精确式触控板应报告每个触点的点位。 应为 X 和 Y 用法指定以下全局项:

逻辑最小值和逻辑最大值(确保大于或等于 300DPI 输入分辨率)。

注意:整个逻辑坐标范围应可以在 X 轴和 Y 轴上进行报告。

物理最小值和物理最大值(参阅设备集成 - 大小)。

单位和单位指数。

坐标 0,0(x, y 值)指示触控板的左上角。

提示

用于指示触点何时在数字化器的表面上或离开了表面。 这由报告大小为 1 位的主项指示。 在传递触点报告时,如果触点在数字化器表面上,则应设置该位;如果触点离开了表面,则应清除该位。

在清除尖端开关的情况下报告触点时,报告的 (X, Y) 位置应与设置了尖端开关的情况下报告的最后一个位置相同。

参考前面图表中概述的示例,两个触点会置于 Windows 精确式触控板上,然后在一段时间后,第一个触点被提起,而第二个触点在表面上保留一段时间。 将按下表中所述报告此情况。

报表 1 2 3 4 5 6 7 8 9 10 11
触点计数 2 2 2 2 2 2 1 1 1 1 1
触点 1:尖端开关 1 1 1 1 1 0 NR NR NR NR NR
触点 1:X、Y X₁, Y₁ X₂, Y₂ X₃, Y₃ X₄, Y₄ X₅, Y₅ X₆, Y₆ 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₁₁
Confidence

用于表示有意的接触。 兼容性要求测试,用于确保当触点的任何尺寸(高或宽)大于 25mm 时,该位设置为“关闭”,表示它不是意外触点。 Windows 精确式触控板设备不应隐藏固件处理中的任何触点,但应将所有触点转发到该主机,并表明置信度。 然后,主机将使用置信度来跟踪意外触点。

一旦设备确定某个触点为无意,它应清除该触点报告和所有后续报告的置信度位。 将触点归为无意之前,设备应在报告中设置该触点的置信度。

扫描时间

扫描时间报告相对数字化器时间,以 100μs 为单位。 扫描时间表示设备在处于非活动状态一段时间并开始报告数据后所报告的第一帧的增量。 收到的第一个扫描时间被视为后续报告时间的基准时间。 报告的扫描时间之间的增量应反映数字化器的扫描频率。 必须注意,与其他用法不同,主机不允许扫描时间用法的单位具有任何灵活性。 它必须以 100μs 为单位。 该值预期会滚动更新,因为只会将 2 个字节分配给计数器。

对于一帧内的所有触点,扫描时间值应该相同。
触点计数

这用于指示给定帧中所报告的触点数量,而不考虑其相关的尖端开关。

相关主题
按钮、报表级别使用情况
示例报告描述符

6.2 链接

https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-windows-precision-touchpad-collection

7 按钮、报表级别使用情况

7.1 内容

本主题讨论 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 精确式触摸板设备可以在单指混合报告模式或双指混合报告模式下提供输入报告。

7.2 链接

https://docs.microsoft.com/zh-cn/windows-hardware/design/component-guidelines/touchpad-buttons-report-level-usages

windows官方touchpad开发资料链接总结相关推荐

  1. STM32开发资料链接分享

    包括STM32F407原理图,开发环境,串口调试助手和驱动,STM32F407器件支持包,固件库和模块等等 链接:https://pan.baidu.com/s/1e1bwqFxFAbzhjXShOA ...

  2. java web 开发资料链接

    JAVAEE+hadoop大数据视频教程 http://tieba.baidu.com/p/3773222967 C/C++/Java精髓 http://pan.baidu.com/share/hom ...

  3. Windows官方Linux子系统C/C++开发环境搭建

    关于利用 Windows 10 适用于 Linux 的 Windows 子系统 (WSL) 安装 Linux 在 Windows 平台直接运行而不依赖虚拟机并通过 Visual Studio Code ...

  4. Windows 驱动开发资源链接

    0 https://msdn.microsoft.com/zh-cn/library/ff554845(v=VS.85).aspx 使用 WDK 示例 http://www.microsoft.com ...

  5. stm32开发3D打印机(二)——方向、相关资料链接

    在这编文章里,我将写下3D打印机的相关资料链接和如何运作及之后写文章的大致方向 关于3D打印机(如何diy,零件的3D模型.Arduino源代码等等).写字机器人的资料等,是从多个地方收集,总而言之有 ...

  6. BSN-DDC 基础网络关键知识点(五)跨链机制、官方 SDK 说明、开发资料汇总

    id:BSN_2021 公众号:BSN研习社 2022年1月25日,区块链服务网络发展联盟(简称"BSN联盟")上线推出了"BSN-DDC基础网络"并进入试商用 ...

  7. ElementUI官方介绍 开发API文档链接

    ElementUI官方介绍 开发API文档 http://element-cn.eleme.io/#/zh-CN/component/quickstart

  8. i.MX8MM嵌入式linux开发指南+全覆盖开发资料

    01教程主题 根据多年工作经验总结框架学习法,先掌握整体的开发流程,然后再逐一击破,综合大量工作中的实战案例,在实践中检验理论知识,强化所学知识点,从而掌握Linux的核心技术. 02教学方式 教程由 ...

  9. windows下pomelo开发环境搭建及JS乱码问题

    from: http://blog.csdn.net/wangqiuyun/article/details/9243263 最近一直在研究node.js这一块,为的就是使用网易的pomelo框架,学习 ...

最新文章

  1. python有趣代码-盘点10个一行强大的、有趣的Python源代码
  2. 可靠性测试设备技术含量_电子产品可靠性测试及设备
  3. Java问题排查工具箱
  4. vue 分模块打包 脚手架_手动撸一个webpack4脚手架(仿vuecli2)
  5. ProtoBuf在使用protoc进行编译时提示: Required fields are not allowed in proto3
  6. 关于客户端无法获得服务器端GP服务(Geoprocessing Service)结果的解决办法
  7. oracle动态语句打开游标,Oracle动态语句中返回游标
  8. 维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
  9. springmvc 带查询条件的分页,form的控制范围,怎么包裹条件提交给后台
  10. 配置豪华的 Windows 开发环境
  11. Java 游戏手柄 编程
  12. Eclipse配置GitHub代码库(以Windows7为例)
  13. 生成doc和docx教程
  14. Java爬虫彼岸桌面壁纸(使用httpClient+Jsoup)
  15. Word制作表格常用操作
  16. flyingsaucer转换多个html,使用 itext、flying-saucer 实现html转PDF
  17. 一级消防工程师【技术实务】(爆炸)
  18. logistic回归的应用
  19. 聊一聊:苹果发布新款M2 MacBook Air,macOS 13上线
  20. [Study]Vue

热门文章

  1. iOS-NSDate 相差 8 小时
  2. dependencies devDependencies的区别
  3. 关于相干解调中的同频同相问题
  4. 编译原理——词法分析总结
  5. javascript简易计算器
  6. bat: 删除文件、文件夹
  7. 火一把就死的现象级产品:疯狂猜图与百度魔图
  8. 关于FreeMarker生成word文档后转换为pdf得解决方法及常见问题
  9. SQL LIKE操作符、通配符以及通配符的使用
  10. BUUCTF_Crypto_Dangerous RSA