USB 设备与主机通信的数据格式

USB 设备与主机通信的数据定义的数据格式如下表格所示。

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
第1字节 右 GUI 右 Alt 右 Shift 右 Ctrl 左 GUI 左 Alt 左 Shift 左 Ctrl
第2字节 保留 0x00
第3字节 0x00
第4字节 0x00
第5字节 0x00
第6字节 0x00
第7字节 0x00
第8字节 0x00

若要在电脑上使用复制功能(left Ctrl + C),那么键盘按下 left Ctrl 和 C 键(C 键对应 Key Code 为 0x06),设备向主机发送的数据格式 01,00,06,00,00,00,00,00,这样设备便向主机发送了 left CTRL 键和 C 键按下的信号,主机执行复制功能,下表格对应按下的按键键码数据。

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
第1字节 右 GUI 右 Alt 右 Shift 右 Ctrl 左 GUI 左 Alt 左 Shift 左 Ctrl
第2字节 保留 0x00
第3字节 0x06
第4字节 0x00
第5字节 0x00
第6字节 0x00
第7字节 0x00
第8字节 0x00

键盘按键名称及HID扫描码及VK虚拟键码对照表

按键名称 按键名称 HID码(扫描码)十进制 [十六进制] 虚拟键码VK 十进制 [十六进制]
ESC 41 [0X29] 27 [0x1B]
F1 58 [0X3a] 112 [0x70]
F2 59 [0X3b] 113 [0x71]
F3 60 [0X3c] 114 [0x72]
F4 61 [0X3d] 115 [0x73]
F5 62 [0X3e] 116 [0x74]
F6 63 [0X3f] 117 [0x75]
F7 64 [0X40] 118 [0x76]
F8 65 [0X41] 119 [0x77]
F9 66 [0X42] 120 [0x78]
F10 67 [0X43] 121 [0x79]
F11 68 [0X44] 122 [0x7A]
F12 69 [0X45] 123 [0x7B]
Esc 41 [0X29] 27 [0x1B]
回退 Back 42 [0X2a] 8 [0x08]
Tab 43 [0X2b] 9 [0x09]
大小写 CapLck 57 [0X39] 20 [0x14]
回车 Enter 40 [0X28] 13 [0x0D]
空格 Space 44 [0X2c] 32 [0x20]
Scroll 71 [0X47] 145 [0x91]
暂停 Pause 72 [0X48] 19 [0x13]
插入 Insert 73 [0X49] 45 [0x2D]
截屏 PrintScr 70 [0X46] 44 [0x2C]
删除 Delete 76 [0X4c] 46 [0x2E]
首页 Home 74 [0X4a] 36 [0x24]
结尾 End 77 [0X4d] 35 [0x23]
上一页 PageUp 75 [0X4b] 33 [0x21]
下一页 PageDn 78 [0X4e] 34 [0x22]
Left 80 [0X50] 37 [0x25]
Up 82 [0X52] 38 [0x26]
Right 79 [0X4f] 39 [0x27]
Down 81 [0X51] 40 [0x28]
小键盘0 Num0 98 [0X62] 96 [0x60]
Num1 89 [0X59] 97 [0x61]
Num2 90 [0X5a] 98 [0x62]
Num3 91 [0X5b] 99 [0x63]
Num4 92 [0X5c] 100 [0x64]
Num5 93 [0X5d] 101 [0x65]
Num6 94 [0X5e] 102 [0x66]
Num7 95 [0X5f] 103 [0x67]
Num8 96 [0X60] 104 [0x68]
Num9 97 [0X61] 105 [0x69]
加号 NumAdd 87 [0X57] 107 [0x6B]
减号 NumSub 86 [0X56] 109 [0x6D]
乘号 NumMult 85 [0X55] 106 [0x6A]
除号 NumDiv 84 [0X54] 111 [0x6F]
NumDecim 99 [0X63] 110 [0x6E]
数字锁定键 NumLock 83 [0X53] 144 [0x90]
Ctrl 1 [0X01] 17 [0x11]
左CTR LCtrl 1 [0X01] 162 [0xA2]
RCtrl 16 [0X10] 163 [0xA3]
Shift 2 [0X02] 16 [0x10]
LShift 2 [0X02] 160 [0xA0]
RShift 32 [0X20] 161 [0xA1]
Alt 4 [0X04] 18 [0x12]
LAlt 4 [0X04] 164 [0xA4]
RAlt 64 [0X40] 165 [0xA5]
WIN 8 [0X08] 91 [0x5B]
LWIN 8 [0X08] 91 [0x5B]
RWIN 128 [0X80] 92 [0x5C]
A 4 [0X04] 65 [0x41]
B 5 [0X05] 66 [0x42]
C 6 [0X06] 67 [0x43]
D 7 [0X07] 68 [0x44]
E 8 [0X08] 69 [0x45]
F 9 [0X09] 70 [0x46]
G 10 [0X0a] 71 [0x47]
H 11 [0X0b] 72 [0x48]
I 12 [0X0c] 73 [0x49]
J 13 [0X0d] 74 [0x4A]
K 14 [0X0e] 75 [0x4B]
L 15 [0X0f] 76 [0x4C]
M 16 [0X10] 77 [0x4D]
N 17 [0X11] 78 [0x4E]
O 18 [0X12] 79 [0x4F]
P 19 [0X13] 80 [0x50]
Q 20 [0X14] 81 [0x51]
R 21 [0X15] 82 [0x52]
S 22 [0X16] 83 [0x53]
T 23 [0X17] 84 [0x54]
U 24 [0X18] 85 [0x55]
V 25 [0X19] 86 [0x56]
W 26 [0X1a] 87 [0x57]
X 27 [0X1b] 88 [0x58]
Y 28 [0X1c] 89 [0x59]
Z 29 [0X1d] 90 [0x5A]
0 39 [0X27] 48 [0x30]
1 30 [0X1e] 49 [0x31]
2 31 [0X1f] 50 [0x32]
3 32 [0X20] 51 [0x33]
4 33 [0X21] 52 [0x34]
5 34 [0X22] 53 [0x35]
6 35 [0X23] 54 [0x36]
7 36 [0X24] 55 [0x37]
8 37 [0X25] 56 [0x38]
9 38 [0X26] 57 [0x39]