keyboard scan code 表

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

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

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

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

 

1scan code 

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

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

 

 

2、小键盘 scan code 

key

markHex

breakHex

描述

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 按下后再按得来。

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

 

3、附加键 scan code 

key

markHex

breakHex

描述

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 的理解未透彻。在这不便讲解。

如果您知道,请留言赐教。

 

 

4、功能键 scan code 

key

markHex

breakHex

描述

<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

同上

 

 

5、主键盘 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 

 

posted @ 2013-06-14 15:21  Max Woods  阅读(1452)  评论(0编辑  收藏  举报