扫描码和虚拟键值是处理键盘输入时使用的两种不同概念:
-
扫描码(Scan Code):
- 扫描码是硬件级的键盘输入信号。
- 每个键在键盘上都有一个唯一的扫描码。
- 键盘将按键转换为扫描码发送给操作系统。
- 扫描码表示的是物理键的位置,与具体的字符或功能无关。
-
虚拟键值(Virtual Key Code):
- 虚拟键值是操作系统级别的抽象。
- 操作系统将扫描码转换为虚拟键值,用于识别键的功能。
- 虚拟键值与具体的字符或功能关联,而不是键的位置。
- 例如,字母 'A' 和小键盘的 'A' 可能有相同的虚拟键值,但不同的扫描码。
总结来说,扫描码与键盘硬件直接相关,而虚拟键值则是操作系统用于处理键盘输入的抽象表示。
Windows 下的虚拟键值(Virtual Key Codes)有很多,这里列出一些常用的:
VK_LBUTTON
(0x01): 左鼠标按钮VK_RBUTTON
(0x02): 右鼠标按钮VK_CANCEL
(0x03): 控制中断VK_MBUTTON
(0x04): 中鼠标按钮VK_XBUTTON1
(0x05): 第一个 X 鼠标按钮VK_XBUTTON2
(0x06): 第二个 X 鼠标按钮VK_BACK
(0x08): Backspace 键VK_TAB
(0x09): Tab 键VK_CLEAR
(0x0C): Clear 键VK_RETURN
(0x0D): Enter 键VK_SHIFT
(0x10): Shift 键VK_CONTROL
(0x11): Ctrl 键VK_MENU
(0x12): Alt 键VK_PAUSE
(0x13): Pause 键VK_CAPITAL
(0x14): Caps Lock 键VK_ESCAPE
(0x1B): Escape 键VK_SPACE
(0x20): 空格键VK_PRIOR
(0x21): Page Up 键VK_NEXT
(0x22): Page Down 键VK_END
(0x23): End 键VK_HOME
(0x24): Home 键VK_LEFT
(0x25): 左箭头键VK_UP
(0x26): 上箭头键VK_RIGHT
(0x27): 右箭头键VK_DOWN
(0x28): 下箭头键VK_SELECT
(0x29): Select 键VK_PRINT
(0x2A): Print 键VK_EXECUTE
(0x2B): Execute 键VK_SNAPSHOT
(0x2C): Print Screen 键VK_INSERT
(0x2D): Insert 键VK_DELETE
(0x2E): Delete 键VK_HELP
(0x2F): Help 键VK_0
-VK_9
(0x30 - 0x39): 0-9 数字键VK_A
-VK_Z
(0x41 - 0x5A): A-Z 字母键VK_NUMPAD0
-VK_NUMPAD9
(0x60 - 0x69): 数字小键盘 0-9VK_MULTIPLY
(0x6A): 小键盘乘号键VK_ADD
(0x6B): 小键盘加号键VK_SEPARATOR
(0x6C): 分隔符键VK_SUBTRACT
(0x6D): 小键盘减号键VK_DECIMAL
(0x6E): 小键盘小数点键VK_DIVIDE
(0x6F): 小键盘除号键VK_F1
-VK_F24
(0x70 - 0x87): F1-F24 功能键VK_NUMLOCK
(0x90): Num Lock 键VK_SCROLL
(0x91): Scroll Lock 键
这只是部分常用的虚拟键值,完整列表可以在微软的官方文档中找到。
以下是 Windows 下常见的 104 键盘的扫描码和虚拟键值的对应表:
按键 | 扫描码 | 虚拟键值 |
---|---|---|
Esc |
01 | VK_ESCAPE (0x1B) |
F1 |
3B | VK_F1 (0x70) |
F2 |
3C | VK_F2 (0x71) |
F3 |
3D | VK_F3 (0x72) |
F4 |
3E | VK_F4 (0x73) |
F5 |
3F | VK_F5 (0x74) |
F6 |
40 | VK_F6 (0x75) |
F7 |
41 | VK_F7 (0x76) |
F8 |
42 | VK_F8 (0x77) |
F9 |
43 | VK_F9 (0x78) |
F10 |
44 | VK_F10 (0x79) |
F11 |
57 | VK_F11 (0x7A) |
F12 |
58 | VK_F12 (0x7B) |
~ |
29 | VK_OEM_3 (0xC0) |
1 |
02 | VK_1 (0x31) |
2 |
03 | VK_2 (0x32) |
3 |
04 | VK_3 (0x33) |
4 |
05 | VK_4 (0x34) |
5 |
06 | VK_5 (0x35) |
6 |
07 | VK_6 (0x36) |
7 |
08 | VK_7 (0x37) |
8 |
09 | VK_8 (0x38) |
9 |
0A | VK_9 (0x39) |
0 |
0B | VK_0 (0x30) |
- |
0C | VK_OEM_MINUS (0xBD) |
= |
0D | VK_OEM_PLUS (0xBB) |
Backspace |
0E | VK_BACK (0x08) |
Tab |
0F | VK_TAB (0x09) |
Q |
10 | VK_Q (0x51) |
W |
11 | VK_W (0x57) |
E |
12 | VK_E (0x45) |
R |
13 | VK_R (0x52) |
T |
14 | VK_T (0x54) |
Y |
15 | VK_Y (0x59) |
U |
16 | VK_U (0x55) |
I |
17 | VK_I (0x49) |
O |
18 | VK_O (0x4F) |
P |
19 | VK_P (0x50) |
[ |
1A | VK_OEM_4 (0xDB) |
] |
1B | VK_OEM_6 (0xDD) |
\ |
2B | VK_OEM_5 (0xDC) |
Caps Lock |
3A | VK_CAPITAL (0x14) |
A |
1E | VK_A (0x41) |
S |
1F | VK_S (0x53) |
D |
20 | VK_D (0x44) |
F |
21 | VK_F (0x46) |
G |
22 | VK_G (0x47) |
H |
23 | VK_H (0x48) |
J |
24 | VK_J (0x4A) |
K |
25 | VK_K (0x4B) |
L |
26 | VK_L (0x4C) |
; |
27 | VK_OEM_1 (0xBA) |
' |
28 | VK_OEM_7 (0xDE) |
Enter |
1C | VK_RETURN (0x0D) |
Shift (左) |
2A | VK_SHIFT (0x10) |
Z |
2C | VK_Z (0x5A) |
X |
2D | VK_X (0x58) |
C |
2E | VK_C (0x43) |
V |
2F | VK_V (0x56) |
B |
30 | VK_B (0x42) |
N |
31 | VK_N (0x4E) |
M |
32 | VK_M (0x4D) |
, |
33 | VK_OEM_COMMA (0xBC) |
. |
34 | VK_OEM_PERIOD (0xBE) |
/ |
35 | VK_OEM_2 (0xBF) |
Shift (右) |
36 | VK_SHIFT (0x10) |
Ctrl (左) |
1D | VK_CONTROL (0x11) |
Alt (左) |
38 | VK_MENU (0x12) |
Space |
39 | VK_SPACE (0x20) |
Alt (右) |
E038 | VK_MENU (0x12) |
Ctrl (右) |
E01D | VK_CONTROL (0x11) |
请注意,右侧的 Ctrl 和 Alt 键的扫描码有前缀 E0,表示扩展键。
标签:VK,扫描,小键盘,虚拟,键值,OEM From: https://www.cnblogs.com/cuish/p/18620844