HID学习笔记


一、HID 基础概念

1. 什么是 HID?

  • HID(Human Interface Device) 是 USB 和 Bluetooth 设备的通用协议,主要用于 键盘、鼠标、游戏手柄、触摸板、遥控器等 人机交互设备。
  • HID 设备通过 HID 报告(HID Report) 与主机通信,主机解析 HID 描述符(HID Descriptor)来理解数据格式。

2. HID 报告(HID Report)

  • HID 输入报告(Input Report) → 设备向主机发送,例如键盘按键、鼠标移动。
  • HID 输出报告(Output Report) → 主机向设备发送,例如键盘指示灯(Num Lock、Caps Lock)。
  • HID 特征报告(Feature Report) → 设备和主机之间的配置数据交换,例如固件升级指令。

3. HID 传输协议

  • USB HID:USB 设备通过 中断传输(Interrupt Transfer) 发送 HID 报告。
  • BLE HID:蓝牙 HID 通过 GATT(Generic Attribute Profile) 传输 HID 报告,HID 数据在 GATT 特性(Characteristics)中进行读写。

二、HID 报告描述符

HID 设备通过 HID Report Descriptor(HID 报告描述符) 告诉主机如何解析数据

1. HID 报告描述符格式

// HID Keyboard Report Descriptor
const uint8_t hid_keyboard_report_desc[] = {
    0x05, 0x01,   // Usage Page (Generic Desktop Ctrls)
    0x09, 0x06,   // Usage (Keyboard)
    0xA1, 0x01,   // Collection (Application)
    0x85, 0x01,   //   Report ID (1)  <-- 报告 ID
    0x05, 0x07,   //   Usage Page (Keyboard)
    0x19, 0xE0,   //   Usage Minimum (Left Control)
    0x29, 0xE7,   //   Usage Maximum (Right GUI)
    0x15, 0x00,   //   Logical Minimum (0)
    0x25, 0x01,   //   Logical Maximum (1)
    0x75, 0x01,   //   Report Size (1)
    0x95, 0x08,   //   Report Count (8)
    0x81, 0x02,   //   Input (Data,Var,Abs)  <-- 8bit 修饰键
    0x95, 0x01,   //   Report Count (1)
    0x75, 0x08,   //   Report Size (8)
    0x81, 0x03,   //   Input (Cnst,Var,Abs)  <-- 1字节保留位
    0x95, 0x06,   //   Report Count (6)
    0x75, 0x08,   //   Report Size (8)
    0x15, 0x00,   //   Logical Minimum (0)
    0x25, 0x65,   //   Logical Maximum (101)
    0x05, 0x07,   //   Usage Page (Keyboard)
    0x19, 0x00,   //   Usage Minimum (0)
    0x29, 0x65,   //   Usage Maximum (101)
    0x81, 0x00,   //   Input (Data,Ary,Abs)  <-- 6字节按键值
    0xC0          // End Collection
};

hid1_11规范(官方文档)

posted @   D·Kingson.Mo  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示