我发现搜到的许多其他键盘硬件扫描码的资料都与实际不符,而邓志先生整理的才是正确的。但邓志的MouseOS网站不知为何不能上去了,故转载google缓存的邓志的这篇文档以备查阅。
转载来源http://www.mouseos.com/os/doc/scan_code.html
作者邓志,对IA架构有深入研究,编有研究用的图形界面操作系统MouseOS
当按下一键时,产生 mark 码,产生一次 IRQ1 中断。
放开键时,产生 break 码,产生一次 IRQ1 中断。
因此:当按下 A 键放开,实际上产生了两次 IRQ1 中断
break 是 mark 码的 bit7 置 1 得来,也就是: break = mark + 0x80
这里只说一般日常应用中的键盘码集 set 2(有 set 1、set 2 以及 set 3)
key
|
mark(Hex)
|
break(Hex)
|
描述
|
NumLock
|
45
|
c5
|
break = mark + 0x80
|
/
|
e0 35
|
e0 b5
|
由 e0 引导出 extend scan code
|
*
|
37
|
b7
|
break = mark + 0x80
|
-
|
4a
|
ca
|
同上
|
7/Home
|
47
|
c7
|
同上
|
8/Up
|
48
|
c8
|
同上
|
9/PgUp
|
49
|
c9
|
同上
|
4/Left
|
4b
|
cb
|
同上
|
5
|
4c
|
cc
|
同上
|
6/Right
|
4d
|
cd
|
同上
|
1/End
|
4f
|
cf
|
同上
|
2/Down
|
50
|
d0
|
同上
|
3/PgDn
|
51
|
d1
|
同上
|
0/Ins
|
52
|
d2
|
同上
|
./Del
|
53
|
d3
|
同上
|
+
|
4e
|
ce
|
同上
|
Enter
|
e0 1c
|
e0 9c
|
extend scan code
|
小键盘中的 由 NumLock 按下后再按得来。
因此,会产生一个
key
|
mark(Hex)
|
break(Hex)
|
描述
|
PrintScreen/SysRq
|
e0 2a e0 37
|
e0 b7 e0 aa
|
extend scan code
|
Scroll Lock
|
46
|
c6
|
同上
|
Pause/Break
|
e1 1d 45 e1 9d c5
|
*
|
同上
|
Insert
|
e0 52
|
e0 d2
|
同上
|
Home
|
e0 47
|
e0 c7
|
同上
|
Page Up
|
e0 49
|
e0 c9
|
同上
|
Delete
|
e0 53
|
e0 d3
|
同上
|
End
|
e0 4f
|
e0 cf
|
同上
|
Page Down
|
e0 51
|
e0 d1
|
同上
|
left ←
|
e0 46
|
e0 c6
|
同上
|
right →
|
e0 4d
|
e0 cd
|
同上
|
up ↑
|
e0 48
|
e0 c8
|
同上
|
down ↓
|
e0 50
|
e0 d0
|
同上
|
抱歉:我对 PrintScreen/SysRq 和 Pause/Break 的理解未透彻。在这不便讲解。如果您知道,请留言赐教。
key
|
mark(Hex)
|
break(Hex)
|
描述
|
|
01
|
81
|
scan code
|
F1
|
3b
|
bb
|
同上
|
F2
|
3c
|
bc
|
同上
|
F3
|
3d
|
bd
|
同上
|
F4
|
3e
|
be
|
同上
|
F5
|
3f
|
bf
|
同上
|
F6
|
40
|
c0
|
同上
|
F7
|
41
|
c1
|
同上
|
F8
|
42
|
c2
|
同上
|
F9
|
43
|
c3
|
同上
|
F10
|
44
|
c4
|
同上
|
F11
|
57
|
d7
|
同上
|
F12
|
58
|
d8
|
同上
|
key
|
mark
|
break
|
key
|
mark
|
break
|
~/·
|
29
|
a9
|
|
0f
|
8f
|
!/1
|
02
|
82
|
q
|
10
|
90
|
@/2
|
03
|
83
|
w
|
11
|
91
|
#/3
|
04
|
84
|
e
|
12
|
12
|
$/4
|
05
|
85
|
r
|
13
|
93
|
%/5
|
06
|
86
|
t
|
14
|
94
|
^/6
|
07
|
87
|
y
|
15
|
95
|
&/7
|
08
|
88
|
u
|
16
|
96
|
*/8
|
09
|
89
|
i
|
17
|
97
|
(/9
|
0a
|
8a
|
o
|
18
|
98
|
)/0
|
0b
|
8b
|
p
|
19
|
99
|
_/-
|
0c
|
8c
|
{/[
|
1a
|
9a
|
+/=
|
0d
|
8d
|
}/]
|
1b
|
9b
|
|/\
|
2b
|
ab
|
|||
|
0e
|
8e
|
key
|
mark
|
break
|
key
|
mark
|
break
|
|
3a
|
ba
|
|
2a
|
aa
|
a
|
1e
|
9e
|
z
|
2c
|
ac
|
s
|
1f
|
9f
|
x
|
2d
|
ad
|
d
|
20
|
a0
|
c
|
2e
|
ae
|
f
|
21
|
a1
|
v
|
2f
|
af
|
g
|
22
|
a2
|
b
|
30
|
b0
|
h
|
23
|
a3
|
n
|
31
|
b1
|
j
|
24
|
a4
|
m
|
32
|
b2
|
k
|
25
|
a5
|
,
|
33
|
b3
|
l
|
26
|
a6
|
>/.
|
34
|
b4
|
:/;
|
27
|
a7
|
?//
|
35
|
b5
|
"/'
|
28
|
a8
|
|
36
|
b6
|
|
1c
|
9c
|
|
1d
|
9d
|
|
38
|
b8
|
|||
|
39
|
b9
|
|||
|
e0 38
|
e0 b8
|
|||
|
e0 1d
|
e0 9d
|
这样会产生一个
这样会产生一个