鍵盤掃描碼(表格)

轉載: http://www.mouseos.com/os/doc/scan_code.htmlhtml

當按下一鍵時,產生 mark 碼,產生一次 IRQ1 中斷。web

放開鍵時,產生 break 碼,產生一次 IRQ1 中斷。svg

所以:當按下 A 鍵放開,實際上產生了兩次 IRQ1 中斷spa

break 是 mark 碼的 bit7 置 1 得來,也就是: break = mark + 0x80.net

 

一、scan code 集

這裏只說通常平常應用中的鍵盤碼集 set 2(有 set 一、set 2 以及 set 3)3d

  • 基本 scan code:絕大多數 scan code 是 1 byte 的。
  • 擴展 scan code:由 e0e1 或 e2 引導
  • 特殊的 PrintScreen/SysRq 鍵:e0 2a e0 37
  • 物殊的 Pause/Break 鍵:e1 1d 45 e1 9d c5

 

 

二、小鍵盤 scan code 表

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

小鍵盤中的 <home><Up><PgUp><Left><Right><End><Down><PgDn><Ins><Del> 由 NumLock 按下後再按得來。code

所以,會產生一個 <NumLock> mark 碼後,再產生上述的 mark 碼。 釋放 <NumLock> 又產生一個 break 碼。xml

 

三、附加鍵 scan code 表

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 的理解未透徹。在這不便講解。htm

若是您知道,請留言賜教。blog

 

 

四、功能鍵 scan code 表

key
mark(Hex)
break(Hex)
描述
<esc>
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
同上

 

 

五、主鍵盤 scan code 表

key
mark
break
key
mark
break
key
mark
break
key
mark
break
~/·
29
a9
<tab>
0f
8f
<scapslock>
3a
ba
<L-shift>
2a
aa
!/1
02
82
q
10
90
a
1e
9e
z
2c
ac
@/2
03
83
w
11
91
s
1f
9f
x
2d
ad
#/3
04
84
e
12
12
d
20
a0
c
2e
ae
$/4
05
85
r
13
93
f
21
a1
v
2f
af
%/5
06
86
t
14
94
g
22
a2
b
30
b0
^/6
07
87
y
15
95
h
23
a3
n
31
b1
&/7
08
88
u
16
96
j
24
a4
m
32
b2
*/8
09
89
i
17
97
k
25
a5
</,
33
b3
(/9
0a
8a
o
18
98
l
26
a6
>/.
34
b4
)/0
0b
8b
p
19
99
:/;
27
a7
?//
35
b5
_/-
0c
8c
{/[
1a
9a
"/'
28
a8
<R-shift>
36
b6
+/=
0d
8d
}/]
1b
9b
<Enter>
1c
9c
<L-ctrl>
1d
9d
|/\
2b
ab
           
<L-alt>
38
b8
<backspace>
0e
8e
           
<space>
39
b9
                 
<R-alt>
e0 38
e0 b8
                 
<R-ctrl>
e0 1d
e0 9d

若輸入字符「ABCD」有兩種方法

(1)按下 <CapsLock> 鍵後,再輸入 abcd 鍵,再按 <CapsLock> 鍵

這樣會產生一個 <CapsLock> 鍵 mark 和 break 碼,而後依次是 abcd 的 mark 和 break 碼, 最後是 <CapsLock> 的 mark 和 break 碼

 

(2)按着 <L-shift> 或 <R-shift> 不放,再按 abcd 鍵,再放開 <L-shift> 或 <R-shift> 鍵

這樣會產生一個 <L-shift> 或 <R-shift> 鍵的 mark 碼,而後依次是 abcd 的 mark 和 break 碼,最後是一個 <L-shift> 或 <R-shift> 鍵的 break 碼