keyboard scan code 表

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

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

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

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

 

一、scan code 集

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

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

 

 

二、小鍵盤 scan code 表

key擴展

mark(Hex)方法

break(Hex)d3

描述tab

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 碼。

 

三、附加鍵 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 的理解未透徹。在這不便講解。

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

 

 

四、功能鍵 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 碼

相關文章
相關標籤/搜索