INT 9 - Hardware Keyboard Make/Break Codes
Key Make Break Key Make Break
Backspace 0E 8E F1 3B BB
Caps Lock 3A BA F2 3C BC
Enter 1C 9C F3 3D BD
Esc 01 81 F4 3E BE
Left Alt 38 B8 F7 41 C1
Left Ctrl 1D 9D F5 3F BF
Left Shift 2A AA F6 40 C0
Num Lock 45 C5 F8 42 C2
Right Shift 36 B6 F9 43 C3
Scroll Lock 46 C6 F10 44 C4
Space 39 B9 F11 57 D7
Sys Req (AT) 54 D4 F12 58 D8
Tab 0F 8F
Keypad Keys Make Break
Keypad 0 (Ins) 52 D2
Keypad 1 (End) 4F CF
Keypad 2 (Down arrow) 50 D0
Keypad 3 (PgDn) 51 D1
Keypad 4 (Left arrow) 4B CB
Keypad 5 4C CC
Keypad 6 (Right arrow) 4D CD
Keypad 7 (Home) 47 C7
Keypad 8 (Up arrow) 48 C8
Keypad 9 (PgUp) 49 C9
Keypad . (Del) 53 D3
Keypad * (PrtSc) 37 B7
Keypad - 4A CA
Keypad + 4E CE
Key Make Break Key Make Break
A 1E 9E N 31 B1
B 30 B0 O 18 98
C 2E AE P 19 99
D 20 A0 Q 10 90
E 12 92 R 13 93
F 21 A1 S 1F 9F
G 22 A2 T 14 94
H 23 A3 U 16 96
I 17 97 V 2F AF
J 24 A4 W 11 91
K 25 A5 X 2D AD
L 26 A6 Y 15 95
M 32 B2 Z 2C AC
Key Make Break Key Make Break
1 02 82 - 0C 8C
2 03 83 = 0D 8D
3 04 84 [ 1A 9A
4 05 85 ] 1B 9B
5 06 86 ; 27 A7
6 07 87 ' 28 A8
7 08 88 ` 29 A9
8 09 89 \ 2B AB
9 0A 8A , 33 B3
0 0B 8B . 34 B4
/ 35 B5
Enhanced Keyboard Keys (101/102 keys)
Control Keys Make Break
Alt-PrtSc (SysReq) 54 D4
Ctrl-PrtSc E0 37 E0 B7
Enter E0 1C E0 9C
PrtSc E0 2A E0 37 E0 B7 E0 AA
Right Alt E0 38 E0 B8
Right Ctrl E0 1D E0 9D
Shift-PrtSc E0 37 E0 B7
/ E0 35 E0 B5
Pause E1 1D 45 E1 9D C5 (not typematic)
Ctrl-Pause (Ctrl-Break) E0 46 E0 C6 (not typematic)
- Keys marked as "not typematic" generate one stream of bytes
without corresponding break scan code bytes (actually the
break codes are part of the make code).
Normal Mode or
Shift w/Numlock
Key Make Break |----- Numlock on ------.
Make Break
Del E0 53 E0 D3 E0 2A E0 53 E0 D3 E0 AA
Down arrow E0 50 E0 D0 E0 2A E0 50 E0 D0 E0 AA
End E0 4F E0 CF E0 2A E0 4F E0 CF E0 AA
Home E0 47 E0 C7 E0 2A E0 47 E0 C7 E0 AA
Ins E0 52 E0 D2 E0 2A E0 52 E0 D2 E0 AA
Left arrow E0 4B E0 CB E0 2A E0 4B E0 CB E0 AA
PgDn E0 51 E0 D1 E0 2A E0 51 E0 D1 E0 AA
PgUp E0 49 E0 C9 E0 2A E0 49 E0 C9 E0 AA
Right arrow E0 4D E0 CD E0 2A E0 4D E0 CD E0 AA
Up arrow E0 48 E0 C8 E0 2A E0 48 E0 C8 E0 AA
Key |--Left Shift Pressed--. |--Right Shift Pressed--.
Make Break Make Break
Del E0 AA E0 53 E0 D3 E0 2A E0 B6 E0 53 E0 D3 E0 36
Down arrow E0 AA E0 50 E0 D0 E0 2A E0 B6 E0 50 E0 D0 E0 36
End E0 AA E0 4F E0 CF E0 2A E0 B6 E0 4F E0 CF E0 36
Home E0 AA E0 47 E0 C7 E0 2A E0 B6 E0 47 E0 C7 E0 36
Ins E0 AA E0 52 E0 D2 E0 2A E0 B6 E0 52 E0 D2 E0 36
Left arrow E0 AA E0 4B E0 CB E0 2A E0 B6 E0 4B E0 CB E0 36
PgDn E0 AA E0 51 E0 D1 E0 2A E0 B6 E0 51 E0 D1 E0 36
PgUp E0 AA E0 49 E0 C9 E0 2A E0 B6 E0 49 E0 C9 E0 36
Right arrow E0 AA E0 4D E0 CD E0 2A E0 B6 E0 4D E0 CD E0 36
Up arrow E0 AA E0 48 E0 C8 E0 2A E0 B6 E0 48 E0 C8 E0 36
/ E0 AA E0 35 E0 B5 E0 2A E0 B6 E0 35 E0 B5 E0 36
- The PS/2 models have three make/break scan code sets. The first
set matches the PC & XT make/break scan code set and is the one
listed here. Scan code sets are selected by writing the value F0
to the keyboard via the 8042 (port 60h). The following is a brief
description of the scan code sets (see the PS/2 Technical Reference
manuals for more information on scan code sets 2 and 3):
/ set 1, each key has a base scan code. Some keys generate
extra scan codes to generate artificial shift states. This
is similar to the standard scan code set used on the PC and XT.
/ set 2, each key sends one make scan code and two break scan
codes bytes (F0 followed by the make code). This scan code
set is available on the IBM AT also.
/ set 3, each key sends one make scan code and two break scan
codes bytes (F0 followed by the make code) and no keys are
altered by Shift/Alt/Ctrl keys.
/ typematic scan codes are the same as the make scan code
- Some Tandy 1000's do not handle Alt key combinations when multiple
shift keys are pressed. The Alt-Shift-H combination loses the Alt.
- extended keys like (F11, F12) can only be read with systems that
have extended keyboard BIOS support (or INT 9 extensions); to
read these special keys on these systems INT 16,10 must be used
- see SCAN CODES KB FLAGS KEYBOARD COMMANDS