最終更新:2021-01-04 (月) 20:07:02 (1571d)
HID/キーボード
Device Class Definition for Human Interface Devicesの例
ブートプロトコル
Usage Page (Generic Desktop), Usage (Keyboard), Collection (Application), Report Size (1), Report Count (8), Usage Page (Key Codes), Usage Minimum (224), Usage Maximum (231), Logical Minimum (0), Logical Maximum (1), Input (Data, Variable, Absolute), ;Modifier byte Report Count (1), Report Size (8), Input (Constant), ;Reserved byte Report Count (5), Report Size (1), Usage Page (LEDs), Usage Minimum (1), Usage Maximum (5), Output (Data, Variable, Absolute), ;LED report Report Count (1), Report Size (3), Output (Constant), ;LED report padding Report Count (6), Report Size (8), Logical Minimum (0), Logical Maximum(255), Usage Page (Key Codes), Usage Minimum (0), Usage Maximum (255), Input (Data, Array), End Collection
キーボードのレポート
- Input (8 bytes)
バイト メモ 0 Modifier keys 1 Reserved 2 Keycode 1 3 Keycode 2 4 Keycode 3 5 Keycode 4 6 Keycode 5 7 Keycode 6 - Output (1 byte)
ビット メモ 0 NUM LOCK 1 CAPS LOCK 2 SCROLL LOCK 3 COMPOSE 4 KANA 5 to 7 CONSTANT
Modifier
Since only one array element can be reported in each array field, modifier keys should be reported as bitmap data (a group of 1-bit variable fields). For example, keys such as CTRL, SHIFT, ALT, and GUI keys make up the 8 bit modifier byte in a standard keyboard report. Although these usage codes are defined in the Usage Table as E0–E7, the usage is not sent as array data. The modifier byte is defined as follows.
0 LEFT CTRL 1 LEFT SHIFT 2 LEFT ALT 3 LEFT GUI 4 RIGHT CTRL 5 RIGHT SHIFT 6 RIGHT ALT 7 RIGHT GUI
55Y9024 (ThinkPad USB トラックポイントキーボード)
05 01 Usage Page (Generic Desktop Controls) 09 06 Usage (Keyboard) A1 01 Collection (Application) 05 07 Usage Page (Keyboard) 19 E0 Usage Minimum (0xE0) 29 E7 Usage Maximum (0xE7) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 95 08 Report Count (8) 75 01 Report Size (1) 81 02 Input (Var) 95 08 Report Count (8) 75 01 Report Size (1) 81 01 Input (Const) 05 08 Usage Page (LEDs) 19 01 Usage Minimum (1) 29 03 Usage Maximum (3) 95 03 Report Count (3) 75 01 Report Size (1) 91 02 Output (Var) 95 01 Report Count (1) 75 05 Report Size (5) 91 01 Output (Const) 05 07 Usage Page (Keyboard) 19 00 Usage Minimum (0) 2A FF 00 Usage Maximum (255) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 95 06 Report Count (6) 75 08 Report Size (8) 81 00 Input () C0 End Collection
ThinkPad Compact USB Keyboard with TrackPoint
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x06, // Usage (Keyboard) 0xA1, 0x01, // Collection (Application) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x19, 0xE0, // Usage Minimum (0xE0) 0x29, 0xE7, // Usage Maximum (0xE7) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x95, 0x01, // Report Count (1) 0x75, 0x08, // Report Size (8) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x95, 0x05, // Report Count (5) 0x75, 0x01, // Report Size (1) 0x05, 0x08, // Usage Page (LEDs) 0x19, 0x01, // Usage Minimum (Num Lock) 0x29, 0x05, // Usage Maximum (Kana) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x95, 0x01, // Report Count (1) 0x75, 0x03, // Report Size (3) 0x91, 0x01, // Output (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x95, 0x06, // Report Count (6) 0x75, 0x08, // Report Size (8) 0x16, 0x00, 0x00, // Logical Minimum (0) 0x26, 0xAF, 0x00, // Logical Maximum (175) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x1A, 0x00, 0x00, // Usage Minimum (0x00) 0x2A, 0xAF, 0x00, // Usage Maximum (0xAF) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x00, // Usage (Unassigned) 0x15, 0x80, // Logical Minimum (-128) 0x25, 0x7F, // Logical Maximum (127) 0x75, 0x08, // Report Size (8) 0x95, 0x08, // Report Count (8) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 81 bytes