从 Windows 8 开始,可通过两种方式将多点触控数据报告给系统:并行模式或混合模式。 供应商提供的 HID 报告描述符因选择的模式而异。
注意:只有旧式设备可以选择串行模式。 从 Windows 8 开始,使用串行模式的任何新设备将无法通过认证。
并行模式
在并行模式下,设备会报告某一个数据包中所有的接触点信息。 每个物理触点都由一个嵌入到顶级集合中的逻辑集合来表示。 此逻辑集合包含设备对各个触点都支持的所有用法(例如 X、Y 和压力)。 使用并行模式时,每个逻辑集合都必须相同。 由于设备报告的触点数通常低于最大值,因此,应通过以下方式传达并行数据包中报告的触点数:使用“触点计数”用法或为数据包中所有无效的触点设置 NULL 值。
例如,假定某个设备支持三个触点。 如果用户在数字化器上只放两根手指,在可携带三个触点的数据的报告中,并行数据包就会只包含两个有效触点数据。 在这种情况下,应将“触点计数”设置为 2,以便客户端应用程序知道超过两个触点的信息都是无效的。
或者,设备可以将第二项以外的触点用法的值设置为 NULL 值。 考虑到支持和报告 NULL 值的开销,建议使用实际计数。
在一个报告中报告多个触点有个缺点,那就是在每次触点少于可能的最大触点数时,每个报告都会浪费空间。 设备可以使用混合模式来减少这种低效率。
混合模式
在混合模式中,可在一个报告中报告的触点数少于该设备支持的最大触点数。 例如,最多支持 48 个并发物理触点的设备可以将其顶级集合设置为在一个报告中最多提供 12 个触点。 如果存在 48 个触点,该设备可以将这些触点分为 4 个串行报告,每个提供 12 个触点。
在设备以这种方式传递数据时,第一个报告中的“触点计数”用法值应该会反映在混合报告中传递的触点总数。 其他串行报告的触点计数应该为 0。 使用上面的示例,第一个报告中的触点计数用法的值为 48,而后三个报告的触点用法计数为 0。 由于此数据传递协议,实际计数使用情况必须出现在设备的报告描述符的输入报告中。
Null 值
应按照 HID 规范中所述指定 Null 值。 必须在报告描述符中的所有主项上设置 NULL 位。 请注意,设备可以使用触点计数使用情况或 NULL 值来向主机通知数据包中的实际有效触点数。
报告中的触点
在混合模式或并行模式下发送数据时,某个报告中传递的触点必须在所有后续报告中传递,直到该触点离开屏幕。 如果需要充足时间来确定触点是否已从表面上消失,设备必须报告该触点的最后已知位置,然后在后续报告中提供该触点的“UP”状态。 在尝试确定该触点的当前状态时,设备不应发送没有该触点信息的报告。