浅谈 Touchpad 所需的 HID 集合以及配置说明

關鍵字 :NXPTouchpadMouse

一、概述

Touchpad 是一种广泛应用于笔记本电脑上的输入设备。其利用感应用户手指的移动来控制指针的动作。其中以苹果公司 MacBook Pro 配备的多点触控板最为出色,可用于显示屏放大缩小等手势 (gesture),以及手写输入之用途。本文将给大家介绍 Touchpad 所需的 HID Top-Level 集合。

我们在进行一个产品应用的开发时,通常会接触到协议通信上的难题,比如鼠标、键盘产品中,要支持并符合 HID 协议通信标准,你才能够将鼠标的按键值、光学传感器的坐标值正常地传输给电脑端去识别数据。这一部分,则涉及到报表描述符,Touchpad 也不例外。我们在市面上看到的很多带 Touch 功能的键盘或是单独的Touch 产品,它虽然能够支持一些双指或三指手势,但是本质上只是基于键鼠应用组合数据所实现的,所以说不是“真正的 Touch 应用”。对于 Touchpad 实际产品开发,我们有协助客户开发基于 NXP QN9080 的 Touchpad 产品,欢迎大家多多了解!下面会带大家一起去了解 Touchpad 所需的 HID 集合。

二、Touchpad 所需的 HID 集合以及配置说明

触摸板应公开三个必须的顶级集合:触摸板集合、鼠标集合、配置集合。

1、首先是鼠标集合,在 Touchpad 实际产品中,对于不同的 Windows 系统,它需要支持鼠标报告,比如 Windows 7 它是不支持 PTP 模式的,Touchpad 所采集到的数据只能通过鼠标的坐标和按键值去上报才能被电脑识别,而 PTP 的数据是无法被 Windows 7 识别的。这是最兼容的报告模式。

2、配置集合:在 Windows 8.1 中使用 HID 协议,Windows 触摸板应提供显示为数字化器的顶级集合,以通过通信协议。这个配置集合允许主机区配置设备的两个设置,也即是集合应支持两个功能报表:一个报表允许主机选择输入模式,另一个用于允许主机在报告的内容中进行选择。无必须的输入报表与此集合相关联,读取报表描述符后,主机可以随时将输入模式功能报表发送到 Windows 精度触摸板,其中包括数据可能通过活动集合报告的时间。此时,支持非 PTP 的主机可以发送除了表一输入模式值之外的值。只有支持 PTP 的操作系统才会发出模式 3,如 Windows 7 则会发出模式 0,因为它是不支持 PTP 的。

输入模式值
输入报告
0
鼠标集合
3
Windows 精确式触摸板集合

                                                                    表一

在配置集合中,描述符还有选择性报告功能报表,可以报告两种类型的输入:Surface Switch 和 Button Switch。这两个 Switch 状态各由 1 个 bit 数据去填充,如果均为 0 ,则表示不报告输入。如果 Surface Switch 为 0 ,Button Switch 为 1,则表示仅报告按钮状态。如果 Surface Switch 为 1 ,Button Switch 为 0,则表示仅报告Surface 触点。如果都为 1,则同时报告 Surface 触点和按钮状态。



3、触摸板集合:Finger 配置,扫描时间配置,联系人计数设置,按键状态配置,最大联系人计数报告,设备证书状态功能报表配置。(下面所描述的联系人指的是手指)

3.1、Finger 配置:主要是对应 Touchpad 能支持多少指数的数据,有多少指则需要添加对应数目的相同的 Finger 配置。Finger 配置主要包含了联系人 ID、置信度、Tip开关、联系人坐标的 X,Y 数据。这部分数据可由 Touch 驱动部分去提供。联系人 ID 指的是唯一标识给定帧中的联系人,也即是在手指滑动过程中,这个 ID 值是不变的,只有下一次触摸动作触发后,这个 ID 值才会改变。Tip 开关指的是设置联系人是否位于 Touchpad 的触摸表面上。在手指接触触摸板时,这个值会置为 1,当接触已离开触摸板表面时会清除这个位重新置零。置信度指的是设置联系人太大而无法作为手指的时间,详细说来就是用于指示该联系人是可靠的接触而不是误触,触摸时这个位会置为 1. 联系人坐标的 X,Y 数据则指的是联系人在触摸板表面实际触摸的绝对坐标点。

3.2、扫描时间配置:在描述符中被定义了 2 个字节的数据分配给扫描时间配置。简单说来,它表示设备开始报告处于非活动状态后的数据后报告的第一帧中的增量。收到的第一次扫描时间被视为后续报告时间的基本时间,扫描时间配置就是 2 个报告的 time interval,是一个动态的数据,和帧率相关。

3.3、联系人计数设置:用于指示给定帧中报告的联系人数,也即是在同一帧的触摸中,手指数目的多少,不会考虑其关联的 Tip 开关。

3.4、按键状态配置:指的是触摸板表面的左右键功能,以及触摸板底部左右键,和外部实体按键的功能。外部实体左右键可以参考联想工程师系列的电脑。

3.5、最大联系人计数报告:指的是当前设备支持的最大手指数配置,比如设置成3,则表面这个设备最多支持三指的手势数据。

3.6、设备证书状态功能报表配置:一个包含 256 字节的 blob 数组,主机会去主动请求设备的设备证书状态报告,可进行分段处理,能够将这个 blob 数组拆分成8 个 32 字节段,而不是单个的 256 字节段。

三、总结

本文介绍了 Touchpad 所需的 HID 集合以及各个报表所需的内容,大家看完后对于 Touchpad 这一通信协议上的实现部分也会多一些了解。关于实际的 Touchpad报表描述符部分,大家可以去微软官网进行查看。更多关于 Touchpad 的开发资料可关注大联大~大大通博文专区~ 

四、参考文献

【1】示例报表描述符 (windows-precision-touchpad-sample-report-scriptors) | Microsoft Docs

【2】触摸板所需的 HID Top-Level 集合 | Microsoft Docs

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論