HID 报表描述符键盘实例
2020-09-23
6321
4
通过下面的报告描述符的定义,我们根据上面的注释可知,包含一个中断输入报表描述符和一个中断输出报告描述符。其中断输入报告描述符用于USB HID键盘中断输入端点,输出报表描述符用于USB HID键盘中断输出端点。
USB HID键盘的中断输入报告
对于中断输入端点,数据格式定义如下:
- BYTE0:该字节的各位表示特殊按键是否按下,这些特殊的按键包括Shift,alt等。
- BYTE1:该字节保留,值固定为00.
- BYTE2-BYTE7:这6个字节表为一个6字节的数组,其中数组中的每一项可以表示按键的键值。当有多个普通的按键按下时,则应同时返回这些键的值。数组中各键的无先后顺序
USB HID键盘的中断输出报告
中断输出报告定义的数据长度是一个1字节的中输输出报告。其中低5位表示了相关指示灯的状态,高5位保留值为0.
USB HID键盘的中断输出报告用于操作系统对接入系统中的各个键盘之间的指示灯进行同步。当在一个键盘打开某个指示灯时,系统会同步连接到该中机中所有的指示灯,同步的方式就是通过USB HID键盘的中断输出报告。
所以对于USB HID键盘,并不用在键盘内部保留该键盘的指示灯是否亮,而是直接接收来自主机的中断输出报告,根据各指标灯的中断输出报告进行相应的指示灯状态设置。
USB HID键盘的报表描述符
USAGE_PAGE (Generic Desktop) 05 01
USAGE (Keyboard) 09 06
COLLECTION (Application) A1 01
//以下为输入报告描述符,用于中断输入端点
//输入报告描述符2字节,第一个字节各位代表的是控制键,第二个字为0,后面跟6个数组,用于普通按键键码
USAGE_PAGE (Keyboard) 05 07
USAGE_MINIMUM (Keyboard LeftControl) 19 E0
USAGE_MAXIMUM (Keyboard Right GUI) 29 E7
LOGICAL_MINIMUM (0) 15 00
LOGICAL_MAXIMUM (1) 25 01
REPORT_SIZE (1) 75 01
REPORT_COUNT (8) 95 08
INPUT (Data,Var,Abs) 81 02
REPORT_COUNT (1) 95 01
REPORT_SIZE (8) 75 08
INPUT (Cnst,Var,Abs) 81 03
REPORT_COUNT (6) 95 06
REPORT_SIZE (8) 75 08
LOGICAL_MINIMUM (0) 15 00
LOGICAL_MAXIMUM (101) 25 65
USAGE_PAGE (Keyboard) 05 07
USAGE_MINIMUM (Reserved (no event indicated)) 19 00
USAGE_MAXIMUM (Keyboard Application) 29 65
INPUT (Data,Ary,Abs) 81 00
//输出报告描述符,用于控制键盘灯
//以下为中断输出报告描述符,用于中断输出端点
//第一节字的低5位表示相应的指示灯,高3位为0
REPORT_COUNT (5) 95 05
REPORT_SIZE (1) 75 01
USAGE_PAGE (LEDs) 05 08
USAGE_MINIMUM (Num Lock) 19 01
USAGE_MAXIMUM (Kana) 29 05
OUTPUT (Data,Var,Abs) 91 02
REPORT_COUNT (1) 95 01
REPORT_SIZE (3) 75 03
OUTPUT (Cnst,Var,Abs) 91 03
END_COLLECTION C0
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936