본문 바로가기
카테고리 없음

HID Mouse Report Description 해석

by Joseph.Lee 2017. 7. 15.




// 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으로 인식된다.


반응형

댓글