// Report ID 1: Mouse buttons + scroll/pan
0x85, 0x01, // Report Id 1
0x09, 0x01, // Usage (Pointer)
0xA1, 0x00, // Collection (Physical)
=============================================================
0x95, 0x05, // Report Count (3)
0x75, 0x01, // Report Size (1)
0x05, 0x09, // Usage Page (Buttons)
0x19, 0x01, // Usage Minimum (01)
0x29, 0x05, // Usage Maximum (05)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x81, 0x02, // Input (Data, Variable, Absolute)
0x95, 0x01, // Report Count (1)
0x75, 0x03, // Report Size (3)
0x81, 0x01, // Input (Constant) for padding
=============================================================
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x38, // Usage (Wheel)
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7F, // Logical Maximum (127)
0x81, 0x06, // Input (Data, Variable, Relative)
=============================================================
0x05, 0x0C, // Usage Page (Consumer)
0x0A, 0x38, 0x02, // Usage (AC Pan)
0x95, 0x01, // Report Count (1)
0x81, 0x06, // Input (Data,Value,Relative,Bit Field)
0xC0, // End Collection (Physical)
1. 간단히 Report ID에 해당하는 디스크립션을 보면..
Report Count, Report Size, Usage page(와 그 내용) 이러한 순서대로 들어가있다.
2. Report Size는 bit단위이다.
3. 하나의 Report ID에 그 Collection에 해당하는 데이터들이 모두 들어간다.
Report ID 1 : Mouse buttons + scroll/pan을 보면..
buffer[0]: 3bit는 버튼, 3bit는 padding, 즉 실제로 3개의 버튼이 각각 3bit만 쓰인다.
buffer[1] : 8bit의 signed, Wheel 데이터.
buffer[2] : (Report size같은게 없어서 잘 이해가 가진 않지만..) AC Pan 이란다..
* 마우스 버튼 클릭
버튼의 Push와 Pop은 Report ID1의 buffer[0]에 데이터를 주면 (001, 010, 100 이면) Push이고
000을 주면 pop으로 인식된다.
반응형
댓글