
 Programming Technical Reference - IBM
 Copyright 1988, Dave Williams


 These scan codes are generated by pressing a key on the PC's keyboard. This 
is the 'make' code. A 'break' code is generated when the key is released. The 
break scancode is 128 higher than the make code, and is generated by setting 
bit 7 of the scan code byte to 1.


                 IBM PC KEYBOARD EXTENDED CODES


        Normal          Shift          Control         Alt

ESC     1
1       2                                               0;120
2       3                                               0;121
3       4                                               0;122
4       5                                               0;123
5       6                                               0;124
6       7                                               0;125
7       8                                               0;126
8       9                                               0;127
9       10                                              0;128
0       11                                              0;129
-       12                                              0;130
=       13                                              0;131
TAB     15              0;15(backtab)
backtab none                                             0;15
RETURN  28

         Normal      Shift     Control      Alt     NumLock

Home      0;71                  0;119      none        7
UpArrow   0;72                  none       none        8
PgUp      0;73                  0;132      none        9
gray -    0;74                                         0;74
LArrow    0;75                  0;115      none        4
keypad 5  none                  none       none        5
RArrow    0;77                  0;116                  6
gray +    0;78                                         0;78  
End       0;79                  0;117      none        1
DnArrow   0;80                                         2
PgDn      0;81                  0;118      none        3
Ins       0;82                             none        11
Del       0;83                  0;128      none        52
PrtSc     55                    0;114       
L shift   42
R shift   54
alt key   56
capslock  58
spacebar  57
control key 29
numlock   69
scrollock 70
;         39
[         26
]         27
"         40
\         43
/         53
,         51
.         52


         Normal      Shift     Control      Alt

a   =     30                               0;30
b   =     48                               0;48
c   =     46                               0;46
d   =     32                               0;32
e   =     18                               0;18
f   =     33                               0;33
g   =     34                               0;34
h   =     35                               0;35
i   =     23                               0;23
j   =     36                               0;36
k   =     37                               0;37
l   =     38                               0;38
m   =     50                               0;50
n   =     49                               0;49
o   =     24                               0;24
p   =     25                               0;25
q   =     16                               0;16
r   =     19                               0;19
s   =     31                               0;31
t   =     20                               0;20
u   =     22                               0;22
v   =     47                               0;47
w   =     17                               0;17
x   =     45                               0;45
y   =     21                               0;21
z   =     44                               0;44

         Normal      Shift     Control      Alt

F1  =     0;59       0;84       0;94       0;104
F2  =     0;60       0;85       0;95       0;105
F3  =     0;61       0;86       0;96       0;106
F4  =     0;62       0;87       0;97       0;107
F5  =     0;63       0;88       0;98       0;108
F6  =     0;64       0;89       0;99       0;109
F7  =     0;65       0;90       0;100      0;110
F8  =     0;66       0;91       0;101      0;111
F9  =     0;67       0;92       0;102      0;112
F10 =     0;68       0;93       0;103      0;113



        "Enhanced" 101/102 key keyboard scancodes
         Normal      Shift     Control      Alt
F11 =     0;152      0;162      0;172      0;182  |
F12 =     0;153      0;163      0;173      0;183  | Tandy?

F11 =     0;133      0;135      0;137      0;139
F12 =     0;134      0;136      0;138      0;140

alt-home                                    0;151
UpArr                           0;141       0;152
Ctrl -                          0;142
Ctrl 5                          0;143
Ctrl +                          0;144
DnArr                           0;145       0;160
Ins                             0;146       0;162
Del                             0;147       0;163
Tab                             0;148       0;165
/                               0;149       0;164
Ctrl-*                          0;150
alt-Enter                                   0;166
alt-PgUp                                    0;153
alt-LArr                                    0;154
alt-RArr                                    0;155
alt-End                                     0;156
alt-PgDn                                    0;161



    BIOS keystroke codes, hexadecimal

    Key      Normal         Shift          Control        Alt

    Esc      011B           011B           011B            --
    1!       0231 '1'       0221 '!'        --            7800
    2@       0332 '2'       0340 '@'       0300           7900
    3#       0433 '3'       0423 '#'        --            7A00
    4$       0534 '4'       0524 '$'        --            7B00
    5%       0635 '5'       0625 '%'        --            7C00
    6^       0736 '6'       075E '^'       071E           7D00
    7&       0837 '7'       0826 '&'        --            7E00
    8*       0938 '8'       092A '*'        --            7F00
    9(       0A39 '9'       0A28 '('        --            8000
    0)       0B30 '0'       0B29 ')'        --            8100
    -_       0C2D '-'       0C5F '_'       0C1F           8200
    =+       0D3D '='       0D2B '+'        --            8300
    BkSpc    0E08           0E08           0E7F            --
    tab      0F09           0F00            --             --
    q        1071 'q'       1051 'Q'       1011           1000
    w        1177 'w'       1157 'W'       1117           1100
    e        1265 'e'       1245 'E'       1205           1200
    r        1372 'r'       1352 'R'       1312           1300
    t        1474 't'       1454 'T'       1414           1400
    y        1579 'y'       1559 'Y'       1519           1500
    u        1675 'u'       1655 'U'       1615           1600
    i        1769 'i'       1749 'I'       1709           1700
    o        186F 'o'       184F 'O'       180F           1800
    p        1970 'p'       1950 'P'       1910           1900
    [{       1A5B '['       1A7B '{'       1A1B            --
    ]}       1B5D ']'       1B7D '}'       1B1D            --
    enter    1C0D           1C0D           1C0A            --
    Ctrl      --             --             --             --
    a        1E61 'a'       1E41 'A'       1E01           1E00
    s        1F73 's'       1F53 'S'       1F13           1F00
    d        2064 'd'       2044 'D'       2004           2000
    f        2166 'f'       2146 'F'       2106           2100
    g        2267 'g'       2247 'G'       2207           2200
    h        2368 'h'       2348 'H'       2308           2300
    j        246A 'j'       244A 'J'       240A           2400
    k        256B 'k'       254B 'K'       250B           2500
    l        266C 'l'       264C 'L'       260C           2600
    ;:       273B ';'       273A ':'        --             --
    '"       2827 '''       2822 '"'        --             --
    `~       2960 '`'       297E '~'        --             --
    l shift   --             --             --             --
    \|       2B5C '\'       2B7C '|'       2B1C            --
    z        2C7A 'z'       2C5A 'Z'       2C1A           2C00
    x        2D78 'x'       2D58 'X'       2D18           2D00
    c        2E63 'c'       2E43 'C'       2E03           2E00
    v        2F76 'v'       2F56 'V'       2F16           2F00
    b        3062 'b'       3042 'B'       3002           3000
    n        316E 'n'       314E 'N'       310E           3100
    m        326D 'm'       324D 'M'       320D           3200
    ,<       332C ','       333C '<'        --             --
    .>       342E '.'       343E '>'        --             --
    /?       352F '/'       353F '?'        --             --
    r shift   --             --             --             --
    PrtSc    372A '*'        --            7200            --
    Alt       --             --             --             --
    spacebar 3920 ' '       3920 ' '       3920 ' '       3920 ' '
    CapsLock  --             --             --             --
    F1       3B00           5400           5E00           6800
    F2       3C00           5500           5F00           6900
    F3       3D00           5600           6000           6A00
    F4       3E00           5700           6100           6B00
    F5       3F00           5800           6200           6C00
    F6       4000           5900           6300           6D00
    F7       4100           5A00           6400           6E00
    F8       4200           5B00           6500           6F00
    F9       4300           5C00           6600           7000
    F10      4400           5D00           6700           7100
    NumLock   --             --             --             --
    Scroll    --             --             --             --
    7 Home   4700           4737 '7'       7700            --
    8 up     4800           4838 '8'        --             --
    9 PgUp   4900           4939 '9'       8400            --
    grey -   4A2D '-'       4A2D '-'        --             --
    4 left   4B00           4B34 '4'       7300            --
    5         --            4C35 '5'        --             --
    6 right  4D00           4D36 '6'       7400            --
    grey +   4E2B '+'       4E2B '+'        --             --
    1 End    4F00           4F31 '1'       7500            --
    2 down   5000           5032 '2'        --             --
    3 PgDn   5100           5133 '3'       7600            --
    Ins      5200           5230 '0'        --             --
    Del      5300           532E '.'        --             --

    A table entry of "--" means you can't get that combination out of BIOS.


