)
Values for keyboard make/break (scan) code:
01h Esc 31h N
02h 1 ! 32h M
03h 2 @ 33h , < 63h F16
04h 3 # 34h . > 64h F17
05h 4 $ 35h / ? 65h F18
06h 5 % 36h Right Shift 66h F19
07h 6 ^ 37h Grey* 67h F20
08h 7 & 38h Alt 68h F21 (Fn) [*]
09h 8 * 39h SpaceBar 69h F22
0Ah 9 ( 3Ah CapsLock 6Ah F23
0Bh 0 ) 3Bh F1 6Bh F24
0Ch - _ 3Ch F2 6Ch --
0Dh = + 3Dh F3 6Dh EraseEOF
0Eh Backspace 3Eh F4
0Fh Tab 3Fh F5 6Fh Copy/Play
10h Q 40h F6
11h W 41h F7
12h E 42h F8 72h CrSel
13h R 43h F9 73h <delta> [*]
14h T 44h F10 74h ExSel
15h Y 45h NumLock 75h --
16h U 46h ScrollLock 76h Clear
17h I 47h Home 77h [Note2] Joyst But1
18h O 48h UpArrow 78h [Note2] Joyst But2
19h P 49h PgUp 79h [Note2] Joyst Right
1Ah [ { 4Ah Grey- 7Ah [Note2] Joyst Left
1Bh ] } 4Bh LeftArrow 7Bh [Note2] Joyst Up
1Ch Enter 4Ch Keypad 5 7Ch [Note2] Joyst Down
1Dh Ctrl 4Dh RightArrow 7Dh [Note2] right mouse
1Eh A 4Eh Grey+ 7Eh [Note2] left mouse
1Fh S 4Fh End
20h D 50h DownArrow
21h F 51h PgDn
22h G 52h Ins
23h H 53h Del
24h J 54h SysReq ---non-key codes---
25h K 55h [Note1] F11 00h kbd buffer full
26h L 56h left \| (102-key)
27h ; : 57h F11 AAh self-test complete
28h ' " 58h F12 E0h prefix code
29h ` ~ 59h [Note1] F15 E1h prefix code
2Ah Left Shift 5Ah PA1 EEh ECHO
2Bh \ | 5Bh F13 (LWin) F0h prefix code (key break)
2Ch Z 5Ch F14 (RWin) FAh ACK
2Dh X 5Dh F15 (Menu) FCh diag failure (MF-kbd)
2Eh C FDh diag failure (AT-kbd)
2Fh V FEh RESEND
30h B FFh kbd error/buffer full
Notes: scan codes 56h-E1h are only available on the extended (101/102-key)
keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh
are only available on the 122-key keyboard and the Microsoft Natural
Keyboard; scan codes 5Eh-76h are only available on the 122-key
keyboard
in the default configuration, break codes are the make scan codes with
the high bit set; make codes 60h,61h,70h, etc. are not available
because the corresponding break codes conflict with prefix codes
(code 2Ah is available because the self-test result code AAh is only
sent on keyboard initialization). An alternate keyboard
configuration can be enabled on AT and later systems with enhanced
keyboards, in which break codes are the same as make codes, but
prefixed with an F0h scan code
prefix code E0h indicates that the following make/break code is for a
"gray" duplicate to a key which existed on the original PC keyboard;
prefix code E1h indicates that the following make code has no
corresponding break code (currently only the Pause key generates no
break code)
the Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh
(all with an E0h prefix) for the Left Windows, Right Windows, and
Menu keys on the bottom row
the European "Cherry G81-3000 SAx/04" keyboard contains contacts for
four additional keys, which can be made available by a user
modification; the three new keys located directly below the cursor
pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21);
the fourth new key, named <delta>, sends make code 73h
the SysReq key is often labeled SysRq
the "Accord" ergonomic keyboard with optional touchpad (no other
identification visible on keyboard or in owner's booklet) has an
additional key above the Grey- key marked with a left-pointing
triangle and labeled "Fn" in the owner's booklet which returns
scan codes E0h 68h on make and E0h E8h on break
the "Preh Commander AT" keyboard with additional F11-F22 keys treats
F11-F20 as Shift-F1..Shift-F10 and F21/F22 as Ctrl-F1/Ctrl-F2; the
Eagle PC-2 keyboard with F11-F24 keys treated those additional keys
in the same way
[Note1] the "Cherry G80-0777" keyboard has additional F11-F15 keys
which generate make codes 55h-59h; some other extended keyboards
generate codes 55h and 56h for F11 and F12, which cannot be managed
by standard DOS keyboard drivers
[Note2] the Schneider/Amstrad PC1512 PC keyboards contain extra keys,
a mouse, and a digital joystick, which are handled like extra keys.
The joystick's motion scancodes are converted into standard arrow
keys by the BIOS, and the joystick and mouse button scan codes are
converted to FFFFh codes in the BIOS keyboard buffer
(see CMOS 15h"AMSTRAD").
In addition to the keys listed in the table above, there are
Del-> (delete forward) 70h
Enter 74h
SeeAlso: #00602 at INT 16/AX=6F07h,#03214 at INT 4A/AH=05h