DebugLab 发表于 2024-8-9 15:53:25

FAQ:绝对值鼠标描述符怎么写?



简化版的绝对值鼠标HID描述符示例:
05 01       ; Usage Page (Generic Desktop)
09 02       ; Usage (Mouse)
A1 01       ; Collection (Application)
85 01       ;   Report ID (1)
09 01       ;   Usage (Pointer)
A1 00       ;   Collection (Physical)
05 09       ;   Usage Page (Button)
09 01       ;   Usage (Button 1)
09 02       ;   Usage (Button 2)
09 03       ;   Usage (Button 3)
15 00       ;   Logical Minimum (0)
25 01       ;   Logical Maximum (1)
75 01       ;   Report Size (1)
95 03       ;   Report Count (3)
81 02       ;   Input (Data, Var, Abs)
05 01       ;   Usage Page (Generic Desktop)
09 01       ;   Usage (Pointer)
75 08       ;   Report Size (8)
95 02       ;   Report Count (2)
81 01       ;   Input (Const, Array)
C0         ;   End Collection
C0         ; End Collection




05 01:表示通用桌面设备的使用页面。
09 02:表示鼠标设备的使用。
A1 01:开始一个应用级别的集合。
85 01:定义报告ID为1。
09 01:定义了一个指针类型的使用。
A1 00:开始一个物理级别的集合。
05 09:切换到按钮使用页面。
09 01:09 02, 09 03:分别定义了按钮1、2、3的使用。
15 00:和25 01:定义了逻辑最小值和最大值。
75 01:定义了报告大小为1位。
95 03:定义了报告计数为3,表示有3个按钮状态。
81 02:定义了一个输入报告,数据类型为变量,绝对定位。
05 01:回到通用桌面设备使用页面。
09 01:再次定义指针类型的使用。
75 08:定义了报告大小为8位(1字节)。
95 02:定义了报告计数为2,表示有两个坐标轴(X和Y)。
81 01:定义了一个输入报告,数据类型为常量,数组形式。
C0:结束集合。




char ReportDescriptor = {
    0x05, 0x01,                  // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                  // USAGE (Mouse)
    0xa1, 0x01,                  // COLLECTION (Application)
    0x85, 0x01,                  //   REPORT_ID (1)
    0x09, 0x01,                  //   USAGE (Pointer)
    0xa1, 0x00,                  //   COLLECTION (Physical)
    0x05, 0x09,                  //   USAGE_PAGE (Button)
    0x09, 0x01,                  //   USAGE (Button 1)
    0x09, 0x02,                  //   USAGE (Button 2)
    0x09, 0x03,                  //   USAGE (Button 3)
    0x15, 0x00,                  //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                  //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                  //   REPORT_SIZE (1)
    0x95, 0x03,                  //   REPORT_COUNT (3)
    0x81, 0x02,                  //   INPUT (Data,Var,Abs)
    0x05, 0x01,                  //   USAGE_PAGE (Generic Desktop)
    0x09, 0x01,                  //   USAGE (Pointer)
    0x75, 0x08,                  //   REPORT_SIZE (8)
    0x95, 0x02,                  //   REPORT_COUNT (2)
    0x81, 0x01,                  //   INPUT (Cnst,Ary,Abs)
    0xc0,                        //   END_COLLECTION
    0xc0                           // END_COLLECTION
};











DebugLab 发表于 2024-8-10 09:37:00

wnagming 发表于 2024-8-9 16:22
这就是数位板嘛,学习了

还不一样,数位板还有压力信息
页: [1]
查看完整版本: FAQ:绝对值鼠标描述符怎么写?