You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

USB HID报告必填字段咨询:鼠标与UPS合规要求疑问

问题描述

1. 鼠标HID设备报告描述符问题

使用树莓派Pico开发USB HID设备时发现两种情况:

  • 包含按键的鼠标报告描述符可在Windows和Linux正常工作:
char ReportDescriptor[48] = {
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                    // USAGE (Mouse)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x05, 0x09,                    //     USAGE_PAGE (Button)
    0x09, 0x01,                    //     USAGE (Button 1)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x75, 0x07,                    //     REPORT_SIZE (7)
    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                    //     USAGE (X)
    0x09, 0x31,                    //     USAGE (Y)
    0x15, 0x80,                    //     LOGICAL_MINIMUM (-128)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
    0xc0,                          //   END_COLLECTION
    0xc0                           // END_COLLECTION
};
  • 仅包含X/Y轴的简化版描述符无法正常工作,推测操作系统要求鼠标至少带一个按键。

2. UPS HID设备报告描述符问题

当前UPS的报告描述符如下,但无法正常工作,不确定是否因缺少必填用法导致:

USAGE_PAGE (Power Device)
USAGE (UPS)
COLLECTION (Application)
  USAGE (Battery System)
  COLLECTION (Physical)
    REPORT_ID (1)
    REPORT_SIZE (8)
    REPORT_COUNT (1)

    USAGE (iManufacturer)
    STRING_INDEX (1)
    FEATURE (Constant Variable Absolute)

    USAGE (iProduct)
    STRING_INDEX (2)
    FEATURE (Constant Variable Absolute)

    USAGE (iSerialNumber)
    STRING_INDEX (3)
    FEATURE (Constant Variable Absolute)

    USAGE (Battery)
    COLLECTION (Physical)
      REPORT_ID (2)
      USAGE_PAGE (Battery System)
      REPORT_SIZE (1)
      REPORT_COUNT (4)
      LOGICAL_MINIMUM (0)
      LOGICAL_MAXIMUM (1)
      USAGE (Charging)
      USAGE (Discharging)
      USAGE (Fully Charged)
      USAGE (Fully Discharged)
      INPUT (Variable Absolute Volatile)

疑问

  1. “鼠标至少需一个按键”的要求是操作系统还是HID规范制定的?有没有相关文档说明?
  2. UPS设备是否有类似的必填用法要求?有没有相关文档可参考?

解答

关于鼠标的按键要求

  • 该要求主要是操作系统的行为,而非HID规范强制规定。HID 1.11规范中,Generic Desktop页面的Mouse用法并未明确要求必须包含按键输入。
  • Windows的hidclass.sys驱动、Linux输入子系统都会默认期望鼠标报告包含按键位,不符合常见格式的设备会被过滤或无法识别为标准鼠标。可查看HID 1.11规范第10章(Generic Desktop Page),其中仅定义了按键、轴等可选元素,无强制要求。

关于UPS的必填要求

  • UPS属于Power Device页面(HID规范第12章),该页面明确了UPS用法的必填元素:
    1. 必须包含Battery System集合,且集合内至少要有一个INPUT报告提供状态信息(如充电/放电状态)
    2. 当前描述符存在几个问题:
      • REPORT_ID位置错误:需放在REPORT_SIZE/REPORT_COUNT之前,且要确保与对应数据段正确关联
      • FEATURE报告格式错误:iManufacturer、iProduct、iSerialNumber应通过设备描述符的字符串索引提供,而非在HID报告描述符中用FEATURE定义
      • 虽包含基础电池状态,但规范要求确保报告结构完全符合格式要求
  • 参考文档:USB HID 1.11规范第12章(Power Device Page),其中详细定义了UPS的用法层级、必填与可选元素。

内容的提问来源于stack exchange,提问作者Anton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:34:57