寻求HID SDP记录值列表及BlueZ键鼠设备开发技术解答
BlueZ HID鼠标/键盘设备开发疑问解答
问题1:指定信息类型的代码(如0x05)定义在哪里查询?
这些代码是HID报告描述符的项标签,分为主项、全局项、局部项三类,定义在USB HID规范的「6.2.2 项格式」章节里。比如0x05是全局项里的「Usage Page」,0x09是局部项里的「Usage」,每个标签的含义、类型、参数长度规则都在这个章节有明确规定。问题2:是否所有结构都是“命令+参数”成对?解析索引偏差的定义在哪里查?
不是所有结构都成对。HID报告描述符的每个项由「4位标签+2位类型+2位长度」组成,长度字段决定了参数的字节数(0=无参数,1=1字节,2=2字节,3=4字节)。比如0xC0(End Collection)是主项,长度为0,没有参数。你遇到的索引偏差问题,就是因为没正确解析每个项的长度,导致后续字节的解析位置出错。这些格式规则同样在USB HID规范的「6.2.2 项格式」章节里有详细说明。问题3:HID记录实际需要包含哪些内容?LED页可以移除吗?
HID记录(报告描述符)只需要包含和你设备功能匹配的内容:- 要添加鼠标功能,需要加入Generic Desktop页(0x01)下的Mouse用法(0x02),同时补充对应的报告描述(比如X/Y轴移动、按键的Report Size/Count等)
- LED页(0x08)是用于键盘状态指示灯(大小写锁、数字锁等)的反馈,如果你的设备不需要给主机返回LED状态,完全可以移除,HID协议没有强制要求必须包含LED页。
另外要注意,报告描述符里的Report ID、Report Size、Report Count等字段,必须和你实际发送的HID报告数据格式完全对应,否则主机无法正确解析输入。
内容的提问来源于stack exchange,提问作者Edward Strange
相关产品推荐
相关产品推荐

