[comp.os.msdos.programmer] key scan code from int 9

leeda@frith.egr.msu.edu (Dae Hee Lee) (03/19/91)

Could you help me looking for any public utility to show key scan codes from
int 9, not from int 16h?

Thank you for your help again.

Daehee Lee

markh@csd4.csd.uwm.edu (Mark William Hopkins) (03/29/91)

In article <1991Mar18.173205.21380@msuinfo.cl.msu.edu> leeda@frith.egr.msu.edu (Dae Hee Lee) writes:
>Could you help me looking for any public utility to show key scan codes from
>int 9, not from int 16h?

A MAKE code is a keyboard scan code generated when a key is pressed down,
a BREAK code when the key is released.

If memory serves me correct they are:

(1)
For the PCJr: the same as the PC XT owing to some extensive pre-processing
in software (INT 02 and INT 48 hex) before iNT 09.

(2)
For the PC XT (MAKE codes):      (it's obvious why it's easy to remember)
01 hex to 0e hex: Esc 1 2 3 4 5 6 7 8 9 0 - = Backspace
0f hex to 1c hex: Tab Q W E R T Y U I O P [ ] Enter
1d hex to 29 hex: Ctrl A S D F G H J K L ; ' `
2a hex to 36 hex: Left-Shift \ Z X C V B N M , . / Right-Shift
37 hex to 3a hex: Print-Screen Alt Spacebar Caps-Lock
3b hex to 44 hex: F1 F2 F3 F4 F5 F6 F7 F8 F9 F10

Numeric keypad (45 hex to 53 hex left-to-right, top-to-bottom):
Num-Lock   Scroll-Lock
Home       Up-Arrow     Pg-Up     -
Left-Arrow    5      Right-Arrow  +
End       Down-Arrow    Pg-Dn
      Ins                Del

All BREAK codes = corresponding MAKE code + 80 hex.

(3)
For the PC AT (MAKE codes):
The same as for the PC XT with the addition of
54 hex: Sys-Req.

BREAK CODES consist of two bytes: f0 hex following by the corresponding
MAKE code.

(4) PS/2's can be configured to one of 3 sets.  Set #2 is the system default,
but BIOS initializes it to set #1 during startup.

In set 1
BREAK code = PC XT's MAKE code + 80 hex.
MAKE code = XT's MAKE code,
Except
(1) Print-Screen is (I think) E0 hex, 2A hex for MAKE and E0, 37 for BREAK.
(2) Addition of new keys

Editing and Cursor Keypads:
Home:        E0, 47  Up Arrow:    E0, 48  Page Up:     E0, 49
Left Arrow:  E0, 4B  Right Arrow: E0, 4D  End:         E0, 4F
Down Arrow:  E0, 50  Page Down:   E0, 51  Insert:      E0, 52
Delete:      E0, 53

New PS/2 keys:
Keypad Enter:  E0, 1C
Right Ctrl:    E0, 1D
Keypad /:      E0, 35
Right Alt:     E0, 38
Pause:         E1, 1D, 45, E1, 9D, C5
F11:           57
F12:           58

Their break keys you get by adding 80 hex to the appropriate byte, except
that Pause has no break code (since it's never used as a repeat key).