目录

键盘硬件扫描码邓志

键盘硬件扫描码(邓志)

keyboard scan code 表


我发现搜到的许多其他键盘硬件扫描码的资料都与实际不符,而邓志先生整理的才是正确的。但邓志的MouseOS网站不知为何不能上去了,故转载google缓存的邓志的这篇文档以备查阅。

转载来源

作者邓志,对IA架构有深入研究,编有研究用的图形界面操作系统MouseOS

当按下一键时,产生 mark 码,产生一次 IRQ1 中断。

放开键时,产生 break 码,产生一次 IRQ1 中断。

因此: 当按下 A 键放开,实际上产生了两次 IRQ1 中断

break 是 mark 码的 bit7 置 1 得来,也就是: break = mark + 0x80

1、scan code 集

这里只说一般日常应用中的键盘码集 set 2(有 set 1、set 2 以及 set 3)

  • 基本 scan code:绝大多数 scan code 是 1 byte 的。
  • 扩展 scan code:由 e0e1e2 引导
  • 特殊的 PrintScreen/SysRq 键: e0 2a e0 37
  • 物殊的 Pause/Break 键: e1 1d 45 e1 9d c5

2、小键盘 scan code 表

keymark(Hex)break(Hex)描述
NumLock45c5break = mark + 0x80
/e0 35e0 b5由 e0 引导出 extend scan code
*37b7break = mark + 0x80
-4aca同上
7/Home47c7同上
8/Up48c8同上
9/PgUp49c9同上
4/Left4bcb同上
54ccc同上
6/Right4dcd同上
1/End4fcf同上
2/Down50d0同上
3/PgDn51d1同上
0/Ins52d2同上
./Del53d3同上
+4ece同上
Entere0 1ce0 9cextend scan code

小键盘中的 由 NumLock 按下后再按得来。

因此,会产生一个 mark 码后,再产生上述的 mark 码。 释放 又产生一个 break 码。

3、附加键 scan code 表

keymark(Hex)break(Hex)描述
PrintScreen/SysRqe0 2a e0 37e0 b7 e0 aaextend scan code
Scroll Lock46c6同上
Pause/Breake1 1d 45 e1 9d c5*同上
Inserte0 52e0 d2同上
Homee0 47e0 c7同上
Page Upe0 49e0 c9同上
Deletee0 53e0 d3同上
Ende0 4fe0 cf同上
Page Downe0 51e0 d1同上
left ←e0 46e0 c6同上
right →e0 4de0 cd同上
up ↑e0 48e0 c8同上
down ↓e0 50e0 d0同上

抱歉:我对 PrintScreen/SysRq 和 Pause/Break 的理解未透彻。在这不便讲解。如果您知道,请留言赐教。

4、功能键 scan code 表

keymark(Hex)break(Hex)描述
0181scan code
F13bbb同上
F23cbc同上
F33dbd同上
F43ebe同上
F53fbf同上
F640c0同上
F741c1同上
F842c2同上
F943c3同上
F1044c4同上
F1157d7同上
F1258d8同上

5、主键盘 scan code 表

keymarkbreakkeymarkbreak
~/·29a90f8f
!/10282q1090
@/20383w1191
#/30484e1212
$/40585r1393
%/50686t1494
^/60787y1595
&/70888u1696
*/80989i1797
(/90a8ao1898
)/00b8bp1999
_/-0c8c{/[1a9a
+/=0d8d}/]1b9b
/\2bab
0e8e
keymarkbreakkeymarkbreak
3aba2aaa
a1e9ez2cac
s1f9fx2dad
d20a0c2eae
f21a1v2faf
g22a2b30b0
h23a3n31b1
j24a4m32b2
k25a5</,33b3
l26a6>/.34b4
:/;27a7?//35b5
“/'28a836b6
1c9c1d9d
38b8
39b9
e0 38e0 b8
e0 1de0 9d

若输入字符“ABCD”有两种方法

(1)按下 键后,再输入 abcd 键,再按

这样会产生一个 键 mark 和 break 码,然后依次是 abcd 的 mark 和 break 码, 最后是 的 mark 和 break 码

(2)按着 不放,再按 abcd 键,再放开

这样会产生一个 键的 mark 码,然后依次是 abcd 的 mark 和 break 码,最后是一个 键的 break 码