|
WIN mode descriptor. |
|
|
|
$ sudo sh -c 'echo -n "3-3.2:1.0" > /sys/bus/usb/drivers/usbhid/unbind' |
|
$ sudo sh -c 'echo -n "3-3.2:1.1" > /sys/bus/usb/drivers/usbhid/unbind' |
|
$ sudo sh -c 'echo -n "3-3.2:1.2" > /sys/bus/usb/drivers/usbhid/unbind' |
|
$ sudo lsusb -d 04fe: -v |
|
|
|
Bus 003 Device 036: ID 04fe:0020 PFU, Ltd |
|
Device Descriptor: |
|
bLength 18 |
|
bDescriptorType 1 |
|
bcdUSB 1.10 |
|
bDeviceClass 0 (Defined at Interface level) |
|
bDeviceSubClass 0 |
|
bDeviceProtocol 0 |
|
bMaxPacketSize0 64 |
|
idVendor 0x04fe PFU, Ltd |
|
idProduct 0x0020 |
|
bcdDevice 0.01 |
|
iManufacturer 1 PFU Limited |
|
iProduct 2 HHKB-Classic |
|
iSerial 0 |
|
bNumConfigurations 1 |
|
Configuration Descriptor: |
|
bLength 9 |
|
bDescriptorType 2 |
|
wTotalLength 91 |
|
bNumInterfaces 3 |
|
bConfigurationValue 1 |
|
iConfiguration 0 |
|
bmAttributes 0xa0 |
|
(Bus Powered) |
|
Remote Wakeup |
|
MaxPower 100mA |
|
Interface Descriptor: |
|
bLength 9 |
|
bDescriptorType 4 |
|
bInterfaceNumber 0 |
|
bAlternateSetting 0 |
|
bNumEndpoints 1 |
|
bInterfaceClass 3 Human Interface Device |
|
bInterfaceSubClass 1 Boot Interface Subclass |
|
bInterfaceProtocol 1 Keyboard |
|
iInterface 5 keyboard |
|
HID Device Descriptor: |
|
bLength 9 |
|
bDescriptorType 33 |
|
bcdHID 1.11 |
|
bCountryCode 0 Not supported |
|
bNumDescriptors 1 |
|
bDescriptorType 34 Report |
|
wDescriptorLength 65 |
|
Report Descriptor: (length is 65) |
|
Item(Global): Usage Page, data= [ 0x01 ] 1 |
|
Generic Desktop Controls |
|
Item(Local ): Usage, data= [ 0x06 ] 6 |
|
Keyboard |
|
Item(Main ): Collection, data= [ 0x01 ] 1 |
|
Application |
|
Item(Global): Usage Page, data= [ 0x07 ] 7 |
|
Keyboard |
|
Item(Local ): Usage Minimum, data= [ 0xe0 ] 224 |
|
Control Left |
|
Item(Local ): Usage Maximum, data= [ 0xe7 ] 231 |
|
GUI Right |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Global): Report Count, data= [ 0x08 ] 8 |
|
Item(Main ): Input, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x08 ] 8 |
|
Item(Main ): Input, data= [ 0x01 ] 1 |
|
Constant Array Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x05 ] 5 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Global): Usage Page, data= [ 0x08 ] 8 |
|
LEDs |
|
Item(Local ): Usage Minimum, data= [ 0x01 ] 1 |
|
NumLock |
|
Item(Local ): Usage Maximum, data= [ 0x05 ] 5 |
|
Kana |
|
Item(Main ): Output, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x03 ] 3 |
|
Item(Main ): Output, data= [ 0x03 ] 3 |
|
Constant Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x06 ] 6 |
|
Item(Global): Report Size, data= [ 0x08 ] 8 |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 |
|
Item(Global): Usage Page, data= [ 0x07 ] 7 |
|
Keyboard |
|
Item(Local ): Usage Minimum, data= [ 0x00 ] 0 |
|
No Event |
|
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255 |
|
(null) |
|
Item(Main ): Input, data= [ 0x00 ] 0 |
|
Data Array Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Main ): End Collection, data=none |
|
Endpoint Descriptor: |
|
bLength 7 |
|
bDescriptorType 5 |
|
bEndpointAddress 0x81 EP 1 IN |
|
bmAttributes 3 |
|
Transfer Type Interrupt |
|
Synch Type None |
|
Usage Type Data |
|
wMaxPacketSize 0x0008 1x 8 bytes |
|
bInterval 1 |
|
Interface Descriptor: |
|
bLength 9 |
|
bDescriptorType 4 |
|
bInterfaceNumber 1 |
|
bAlternateSetting 0 |
|
bNumEndpoints 1 |
|
bInterfaceClass 3 Human Interface Device |
|
bInterfaceSubClass 0 No Subclass |
|
bInterfaceProtocol 0 None |
|
iInterface 6 Multi-Media |
|
HID Device Descriptor: |
|
bLength 9 |
|
bDescriptorType 33 |
|
bcdHID 1.11 |
|
bCountryCode 0 Not supported |
|
bNumDescriptors 1 |
|
bDescriptorType 34 Report |
|
wDescriptorLength 119 |
|
Report Descriptor: (length is 119) |
|
Item(Global): Usage Page, data= [ 0x01 ] 1 |
|
Generic Desktop Controls |
|
Item(Global): Usage Page, data= [ 0x0c ] 12 |
|
Consumer |
|
Item(Local ): Usage, data= [ 0x01 ] 1 |
|
Consumer Control |
|
Item(Main ): Collection, data= [ 0x01 ] 1 |
|
Application |
|
Item(Global): Report ID, data= [ 0x01 ] 1 |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Global): Report Count, data= [ 0x07 ] 7 |
|
Item(Local ): Usage, data= [ 0xcd ] 205 |
|
Play/Pause |
|
Item(Local ): Usage, data= [ 0xb7 ] 183 |
|
Stop |
|
Item(Local ): Usage, data= [ 0xb6 ] 182 |
|
Scan Previous Track |
|
Item(Local ): Usage, data= [ 0xb5 ] 181 |
|
Scan Next Track |
|
Item(Local ): Usage, data= [ 0xe2 ] 226 |
|
Mute |
|
Item(Local ): Usage, data= [ 0xea ] 234 |
|
Volume Decrement |
|
Item(Local ): Usage, data= [ 0xe9 ] 233 |
|
Volume Increment |
|
Item(Main ): Input, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Main ): Input, data= [ 0x01 ] 1 |
|
Constant Array Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Main ): End Collection, data=none |
|
Item(Global): Usage Page, data= [ 0x01 ] 1 |
|
Generic Desktop Controls |
|
Item(Local ): Usage, data= [ 0x06 ] 6 |
|
Keyboard |
|
Item(Main ): Collection, data= [ 0x01 ] 1 |
|
Application |
|
Item(Global): Report ID, data= [ 0x02 ] 2 |
|
Item(Global): Usage Page, data= [ 0x07 ] 7 |
|
Keyboard |
|
Item(Global): Report Count, data= [ 0x01 ] 1 |
|
Item(Global): Report Size, data= [ 0x08 ] 8 |
|
Item(Main ): Input, data= [ 0x03 ] 3 |
|
Constant Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0xe8 ] 232 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0x01 ] 1 |
|
Item(Global): Usage Page, data= [ 0x07 ] 7 |
|
Keyboard |
|
Item(Local ): Usage Minimum, data= [ 0x00 ] 0 |
|
No Event |
|
Item(Local ): Usage Maximum, data= [ 0xe7 ] 231 |
|
GUI Right |
|
Item(Main ): Input, data= [ 0x00 ] 0 |
|
Data Array Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Main ): End Collection, data=none |
|
Item(Global): Usage Page, data= [ 0x01 ] 1 |
|
Generic Desktop Controls |
|
Item(Global): Usage Page, data= [ 0x0c ] 12 |
|
Consumer |
|
Item(Local ): Usage, data= [ 0x01 ] 1 |
|
Consumer Control |
|
Item(Main ): Collection, data= [ 0x01 ] 1 |
|
Application |
|
Item(Global): Report ID, data= [ 0x03 ] 3 |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0x01 ] 1 |
|
Item(Global): Report Count, data= [ 0x06 ] 6 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Local ): Usage, data= [ 0x23 0x02 ] 547 |
|
AC Home |
|
Item(Local ): Usage, data= [ 0x8a 0x01 ] 394 |
|
AL Email Reader |
|
Item(Local ): Usage, data= [ 0x92 0x01 ] 402 |
|
AL Calculator |
|
Item(Local ): Usage, data= [ 0x83 0x01 ] 387 |
|
AL Consumer Control Configuration |
|
Item(Local ): Usage, data= [ 0x94 0x01 ] 404 |
|
AL Local Machine Browser |
|
Item(Local ): Usage, data= [ 0x2a 0x02 ] 554 |
|
(null) |
|
Item(Main ): Input, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Global): Report Count, data= [ 0x02 ] 2 |
|
Item(Global): Report Size, data= [ 0x01 ] 1 |
|
Item(Main ): Input, data= [ 0x01 ] 1 |
|
Constant Array Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Main ): End Collection, data=none |
|
Endpoint Descriptor: |
|
bLength 7 |
|
bDescriptorType 5 |
|
bEndpointAddress 0x82 EP 2 IN |
|
bmAttributes 3 |
|
Transfer Type Interrupt |
|
Synch Type None |
|
Usage Type Data |
|
wMaxPacketSize 0x0020 1x 32 bytes |
|
bInterval 1 |
|
Interface Descriptor: |
|
bLength 9 |
|
bDescriptorType 4 |
|
bInterfaceNumber 2 |
|
bAlternateSetting 0 |
|
bNumEndpoints 2 |
|
bInterfaceClass 3 Human Interface Device |
|
bInterfaceSubClass 0 No Subclass |
|
bInterfaceProtocol 0 None |
|
iInterface 0 |
|
HID Device Descriptor: |
|
bLength 9 |
|
bDescriptorType 33 |
|
bcdHID 1.11 |
|
bCountryCode 0 Not supported |
|
bNumDescriptors 1 |
|
bDescriptorType 34 Report |
|
wDescriptorLength 34 |
|
Report Descriptor: (length is 34) |
|
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 |
|
(null) |
|
Item(Local ): Usage, data= [ 0x01 ] 1 |
|
(null) |
|
Item(Main ): Collection, data= [ 0x01 ] 1 |
|
Application |
|
Item(Local ): Usage, data= [ 0x02 ] 2 |
|
(null) |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 |
|
Item(Global): Report Size, data= [ 0x08 ] 8 |
|
Item(Global): Report Count, data= [ 0x40 ] 64 |
|
Item(Main ): Input, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Local ): Usage, data= [ 0x03 ] 3 |
|
(null) |
|
Item(Global): Logical Minimum, data= [ 0x00 ] 0 |
|
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 |
|
Item(Global): Report Size, data= [ 0x08 ] 8 |
|
Item(Global): Report Count, data= [ 0x40 ] 64 |
|
Item(Main ): Output, data= [ 0x02 ] 2 |
|
Data Variable Absolute No_Wrap Linear |
|
Preferred_State No_Null_Position Non_Volatile Bitfield |
|
Item(Main ): End Collection, data=none |
|
Endpoint Descriptor: |
|
bLength 7 |
|
bDescriptorType 5 |
|
bEndpointAddress 0x83 EP 3 IN |
|
bmAttributes 3 |
|
Transfer Type Interrupt |
|
Synch Type None |
|
Usage Type Data |
|
wMaxPacketSize 0x0040 1x 64 bytes |
|
bInterval 1 |
|
Endpoint Descriptor: |
|
bLength 7 |
|
bDescriptorType 5 |
|
bEndpointAddress 0x04 EP 4 OUT |
|
bmAttributes 3 |
|
Transfer Type Interrupt |
|
Synch Type None |
|
Usage Type Data |
|
wMaxPacketSize 0x0040 1x 64 bytes |
|
bInterval 1 |
|
Device Status: 0x0000 |
|
(Bus Powered) |
|
|
|
|
|
|
|
|
|
--------------------------- |
|
usbhid-dump |
|
--------------------------- |
|
$ sudo usbhid-dump -d04fe:0020 -i0 | grep -v : | xxd -r -p | hidrd-convert -o spec |
|
Usage Page (Desktop), ; Generic desktop controls (01h) |
|
Usage (Keyboard), ; Keyboard (06h, application collection) |
|
Collection (Application), |
|
Usage Page (Keyboard), ; Keyboard/keypad (07h) |
|
Usage Minimum (KB Leftcontrol), ; Keyboard left control (E0h, dynamic value) |
|
Usage Maximum (KB Right GUI), ; Keyboard right GUI (E7h, dynamic value) |
|
Logical Minimum (0), |
|
Logical Maximum (1), |
|
Report Size (1), |
|
Report Count (8), |
|
Input (Variable), |
|
Report Count (1), |
|
Report Size (8), |
|
Input (Constant), |
|
Report Count (5), |
|
Report Size (1), |
|
Usage Page (LED), ; LEDs (08h) |
|
Usage Minimum (01h), |
|
Usage Maximum (05h), |
|
Output (Variable), |
|
Report Count (1), |
|
Report Size (3), |
|
Output (Constant, Variable), |
|
Report Count (6), |
|
Report Size (8), |
|
Logical Minimum (0), |
|
Logical Maximum (255), |
|
Usage Page (Keyboard), ; Keyboard/keypad (07h) |
|
Usage Minimum (None), ; No event (00h, selector) |
|
Usage Maximum (FFh), |
|
Input, |
|
End Collection |
|
|
|
$ sudo usbhid-dump -d04fe:0020 -i1 | grep -v : | xxd -r -p | hidrd-convert -o spec |
|
Usage Page (Desktop), ; Generic desktop controls (01h) |
|
Usage Page (Consumer), ; Consumer (0Ch) |
|
Usage (Consumer Control), ; Consumer control (01h, application collection) |
|
Collection (Application), |
|
Report ID (1), |
|
Logical Minimum (0), |
|
Logical Maximum (1), |
|
Report Size (1), |
|
Report Count (7), |
|
Usage (Play Pause), ; Play/pause (CDh, one-shot control) |
|
Usage (Stop), ; Stop (B7h, one-shot control) |
|
Usage (Scan Previous Track), ; Scan previous track (B6h, one-shot control) |
|
Usage (Scan Next Track), ; Scan next track (B5h, one-shot control) |
|
Usage (Mute), ; Mute (E2h, on/off control) |
|
Usage (Volume Dec), ; Volume decrement (EAh, re-trigger control) |
|
Usage (Volume Inc), ; Volume increment (E9h, re-trigger control) |
|
Input (Variable), |
|
Report Count (1), |
|
Report Size (1), |
|
Input (Constant), |
|
End Collection, |
|
Usage Page (Desktop), ; Generic desktop controls (01h) |
|
Usage (Keyboard), ; Keyboard (06h, application collection) |
|
Collection (Application), |
|
Report ID (2), |
|
Usage Page (Keyboard), ; Keyboard/keypad (07h) |
|
Report Count (1), |
|
Report Size (8), |
|
Input (Constant, Variable), |
|
Report Count (232), |
|
Report Size (1), |
|
Logical Minimum (0), |
|
Logical Maximum (1), |
|
Usage Page (Keyboard), ; Keyboard/keypad (07h) |
|
Usage Minimum (None), ; No event (00h, selector) |
|
Usage Maximum (KB Right GUI), ; Keyboard right GUI (E7h, dynamic value) |
|
Input, |
|
End Collection, |
|
Usage Page (Desktop), ; Generic desktop controls (01h) |
|
Usage Page (Consumer), ; Consumer (0Ch) |
|
Usage (Consumer Control), ; Consumer control (01h, application collection) |
|
Collection (Application), |
|
Report ID (3), |
|
Logical Minimum (0), |
|
Logical Maximum (1), |
|
Report Count (6), |
|
Report Size (1), |
|
Usage (AC Home), ; AC home (0223h, selector) |
|
Usage (AL Email Reader), ; AL email reader (018Ah, selector) |
|
Usage (AL Calculator), ; AL calculator (0192h, selector) |
|
Usage (AL Consumer Control Config), ; AL consumer control configuration (0183h, selector) |
|
Usage (AL Local Machine Brwsr), ; AL local machine browser (0194h, selector) |
|
Usage (AC Bookmarks), ; AC bookmarks (022Ah, selector) |
|
Input (Variable), |
|
Report Count (2), |
|
Report Size (1), |
|
Input (Constant), |
|
End Collection |
|
|
|
$ sudo usbhid-dump -d04fe:0020 -i2 | grep -v : | xxd -r -p | hidrd-convert -o spec |
|
Usage Page (FF00h), ; FF00h, vendor-defined |
|
Usage (01h), |
|
Collection (Application), |
|
Usage (02h), |
|
Logical Minimum (0), |
|
Logical Maximum (255), |
|
Report Size (8), |
|
Report Count (64), |
|
Input (Variable), |
|
Usage (03h), |
|
Logical Minimum (0), |
|
Logical Maximum (255), |
|
Report Size (8), |
|
Report Count (64), |
|
Output (Variable), |
|
End Collection |