一图顶所有,有需要的直接看图吧。
意外收到了一名网友的打赏,能否留个言。互动一下?
键帽规格




HID设备描述符



按键值







HID Usage ID table 文字速查:
| Key | HID Usage | HID Usage ID | Key | HID Usage | HID Usage ID |
|---|---|---|---|---|---|
| `(~) | 07 | 35 | X | 07 | 1B |
| 1 | 07 | 1E | C | 07 | 06 |
| 2 | 07 | 1F | V | 07 | 19 |
| 3 | 07 | 20 | B | 07 | 05 |
| 4 | 07 | 21 | N | 07 | 11 |
| 5 | 07 | 22 | M | 07 | 10 |
| 6 | 07 | 23 | ,(<) | 07 | 36 |
| 7 | 07 | 24 | .(>) | 07 | 37 |
| 8 | 07 | 25 | /(?) | 07 | 38 |
| 9 | 07 | 26 | SHIFT_R | 07 | E5 |
| 0 | 07 | 27 | CTRL_L | 07 | E0 |
| -(-) | 07 | 2D | ALT_L | 07 | E2 |
| =(+) | 07 | 2E | SPACE | 07 | 2C |
| BACK SPACE | 07 | 2A | ALT_R | 07 | E6 |
| TAB | 07 | 2B | CTRL_R | 07 | E4 |
| Q | 07 | 14 | NUM | 07 | 53 |
| W | 07 | 1A | (7) | 07 | 5F |
| E | 07 | 08 | (4) | 07 | 5C |
| R | 07 | 15 | (1) | 07 | 59 |
| T | 07 | 17 | (8) | 07 | 60 |
| Y | 07 | 1C | (5) | 07 | 5D |
| U | 07 | 18 | (2) | 07 | 5A |
| I | 07 | 0C | (0) | 07 | 62 |
| O | 07 | 12 | (*) | 07 | 55 |
| P | 07 | 13 | (9) | 07 | 61 |
| [({} | 07 | 2F | (6) | 07 | 5E |
| ]()) | 07 | 30 | (3) | 07 | 5B |
| (¦)@1 | 07 | 31 | (DEL) | 07 | 63 |
| CAPS | 07 | 39 | (-) | 07 | 56 |
| A | 07 | 04 | (+) | 07 | 57 |
| S | 07 | 16 | (ENTER) | 07 | 58 |
| D | 07 | 07 | ESC | 07 | 29 |
| F | 07 | 09 | F1 | 07 | 3A |
| G | 07 | 0A | F2 | 07 | 3B |
| H | 07 | 0B | F3 | 07 | 3C |
| J | 07 | 0D | F4 | 07 | 3D |
| K | 07 | 0E | F5 | 07 | 3E |
| L | 07 | 0F | F6 | 07 | 3F |
| ;(:) | 07 | 33 | F7 | 07 | 40 |
| '(") | 07 | 34 | F8 | 07 | 41 |
| K42 | 07 | 32 | F9 | 07 | 42 |
| ENTER | 07 | 28 | F10 | 07 | 43 |
| SHIFT_L | 07 | E1 | F11 | 07 | 44 |
| K45 | 07 | 64 | F12 | 07 | 45 |
| Z | 07 | 1D | SCROLL | 07 | 47 |
| INS | 07 | 49 | (/) | 07 | 54 |
| DEL | 07 | 4C | 07 | 46 | |
| LEFT | 07 | 50 | PAUSE | 07 | 48 |
| HOME | 07 | 4A | BREAK(PAUSE+CTRL) | 07 | 48 |
| END | 07 | 4D | |||
| UP | 07 | 52 | WWW Back | 0C | 0224 |
| DOWN | 07 | 51 | WWW Forward | 0C | 0225 |
| PAGE UP | 07 | 4B | WWW stop | 0C | 0226 |
| PAGE DOWN | 07 | 4E | WWW Refresh | 0C | 0227 |
| RIGHT | 07 | 4F | WWW Search | 0C | 0221 |
| WIN_L | 07 | E3 | WWW Favorite | 0C | 022A |
| WIN_R | 07 | E7 | WWW Home | 0C | 0223 |
| APP | 07 | 65 | 0C | 018A | |
| N-CHG(131) | 07 | 8B | Mute | 0C | 00E2 |
| CHG(132) | 07 | 8A | Volume + | 0C | 00E9 |
| ROMA(133) | 07 | 88 | Volume - | 0C | 00EA |
| K14 | 07 | 89 | Play/Pause | 0C | 00CD |
| K56 | 07 | 87 | Stop | 0C | 00B7 |
| K107 | 07 | 85 | PreTrack | 0C | 00B6 |
| KL | 07 | 91 | Nexttrack | 0C | 00B5 |
| KR | 07 | 90 | Media Select | 0C | 0183 |
| POWER | 01 | 81 | My Computer | 0C | 0194 |
| SLEEP | 01 | 82 | Calculator | 0C | 0192 |
| WAKE UP | 01 | 83 |
实例
鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 --
|--bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动
|--bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动
|--bit3: 恒为1
|--bit2: 1表示中键按下
|--bit1: 1表示右键按下
|--bit0: 1表示左键按下
BYTE2 -- X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 -- 滚轮变化。
由于手上没有USB鼠标,对BYTE1的4-7位没有测试,对于BYTE2 BYTE3做个测试,BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向
键盘发送给PC的数据每次8个字节
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8
定义分别是:
BYTE1 --
|--bit0: Left Control是否按下,按下为1
|--bit1: Left Shift 是否按下,按下为1
|--bit2: Left Alt 是否按下,按下为1
|--bit3: Left GUI 是否按下,按下为1
|--bit4: Right Control是否按下,按下为1
|--bit5: Right Shift 是否按下,按下为1
|--bit6: Right Alt 是否按下,按下为1
|--bit7: Right GUI 是否按下,按下为1
BYTE2 -- 暂不清楚,有的地方说是保留位
BYTE3--BYTE8 -- 这六个为普通按键
键盘经过测试。
例如:键盘发送一帧数据 02 00 0x04 0x05 00 00 00 00
表示同时按下了Left Shift + ‘a’+‘b’三个键
3 comments
没记错的话是CSS,时间久远记不清了。可以扒一下试试嘛!