INT 09 - IRQ1 - KEYBOARD DATA READY
Desc:   this interrupt is generated when data is received from the keyboard.
This is normally a scan code (from either a keypress *or* a key
release), but may also be an ACK or NAK of a command on AT-class
keyboards.
Notes:  this IRQ may be masked by setting bit 1 on I/O port 21h
if the BIOS supports an enhanced (101/102-key) keyboard, it calls
INT 15/AH=4Fh after reading the scan code from the keyboard and
before further processing; all further processing uses the scan
code returned from INT 15/AH=4Fh
the default interrupt handler is at F000h:E987h in 100%-compatible
BIOSes
the interrupt handler performs the following actions for certain
special keystrokes:
Ctrl-Break   clear keyboard buffer, place word 0000h in buffer,
invoke INT 1B, and set flag at 0040h:0071h
SysRq        invoke INT 15/AH=85h
Ctrl-Numlock place system in a tight wait loop until next INT 09
Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
destination of the jump at that address)
Shift-PrtSc  invoke INT 05
DRDOS hooks this interrupt to control the cursor shape (underscore/
half block) for overwrite/insert mode
DR Multiuser DOS hooks this interrupt for cursor shape control and to
control whether Ctrl-Alt-Del reboots the current session or the
entire system
SeeAlso: INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B

Values for scan code:
01h    Esc              21h    F                41h    F7
02h    1 !              22h    G                42h    F8
03h    2 @              23h    H                43h    F9
04h    3 #              24h    J                44h    F10
05h    4 $              25h    K                45h    NumLock
06h    5 %              26h    L                46h    ScrollLock
07h    6 ^              27h    ; :              47h    Home
08h    7 &              28h    ' "              48h    UpArrow
09h    8 *              29h    ` ~              49h    PgUp
0Ah    9 (              2Ah    Left Shift       4Ah    Grey-
0Bh    0 )              2Bh    \ |              4Bh    LeftArrow
0Ch    - _              2Ch    Z                4Ch    Keypad 5
0Dh    = +              2Dh    X                4Dh    RightArrow
0Eh    Backspace        2Eh    C                4Eh    Grey+
0Fh    Tab              2Fh    V                4Fh    End
10h    Q                30h    B                50h    DownArrow
11h    W                31h    N                51h    PgDn
12h    E                32h    M                52h    Ins
13h    R                33h    , <              53h    Del
14h    T                34h    . >              54h    SysRq
15h    Y                35h    / ?              57h    F11
16h    U                36h    Right Shift      58h    F12
17h    I                37h    Grey*
18h    O                38h    Alt
19h    P                39h    SpaceBar
1Ah    [ {              3Ah    CapsLock
1Bh    ] }              3Bh    F1
1Ch    Enter            3Ch    F2               E0h    prefix code
1Dh    Ctrl             3Dh    F3               E1h    prefix code
1Eh    A                3Eh    F4               FAh    ACK
1Fh    S                3Fh    F5               FEh    RESEND
20h    D                40h    F6               FFh    kbd error/buffer full

See also: 05

09 - IRQ1 - KEYBOARD DATA READY