发布时间:2022-08-19 13:47
☑️ 首先说明:本项目基于Arduino Micro 开发板开发的,外设只用到了EC11E1534408无定位旋转编码器。
项目来源:【DIY】自制PC外设-媒体控制器,在英国_哔哩哔哩_bilibili
Github:GitHub - xuan25/HIDMediaController-ArduinoMicroPro
Human interface device(HID),人体学接口设备。
HID 一般指 USB-HID 标准。
在USB协议官网上,给出了HID的文档:HID Usage Tables 1.3
关于键盘的报告描述符、鼠标的报告描述符,可以用官方网站提供的HID描述符工具(HID Descriptor tool)生成;还可以使用现成的报告描述符进行修改;HID协议和用途表文档中,也有很多现成的例子。
✔️ 关于HID的设备描述符,查阅了相关资料,做出总结。因为首次接触,难免会有错误!
//Button
0x05, 0x0c, // Usage Page (Consumer Devices)
0x09, 0x01, // Usage (Consumer Control)
0xa1, 0x01, // Collection (Application)
0x85, 0x04, // REPORT_ID (4)
0x09, 0xe9, // Usage (Volume Up)
0x09, 0xea, // Usage (Volume Down)
0x09, 0xe2, // Usage (Mute) //静音
0x09, 0xcd, // Usage (Play) //播放
0x09, 0xb5, // Usage (Next)
0x09, 0xb6, // Usage (Previous)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x10, // Report Count (10)
0x81, 0x06, // Input (Data, Variable, Relative)
0xc0, // End Collection
描述符没有固定的长度,没有固定的数据类型,而是由条目(item)组成。一个条目占据一行。
短条目(大部分为短条目)构成:一个字节的前缀 + 可选的数据字节
前缀结构:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
bTag | bType | bSize |