INT 16h, INT 0x16, INT 16H or INT 22 is shorthand for BIOS interrupt call 16hex, the 23rd interrupt vector in an x86-based computer system. The BIOS typically sets up a real mode interrupt handler at this vector that provides keyboard services. This interrupt is responsible for control of the PC keyboard.
Features
This interrupt is responsible for obtaining basic keyboard functionality, i.e. is responsible for collecting the keystrokes, obtain the status of the buffer of keyboard, etc. The standard encoding of the keyboard that offers the INT 16h is a US keyboard. To adapt the coding of the INT 16h to another type of keyboard (for example, an international keyboard), the code must analyze the scan-code of the key pressed, and then perform suitable interpreting.
For keyboards with 101 letters or more, there are some keys that INT 16h interprets as expanded keys, which have a scan-code that is different from normal keys (e.g., key pause).
List of services of the INT 16 h FunctionFunction code(AH)DeviceRead key press 00h KeyboardGet the State of the keyboard buffer 01h Keyboard Get the State of the keyboard 02h Keyboard Establish repetition factor 03h Keyboard Keyboard Click adjustment04hKeyboard Simulate a keystroke 05h Keyboard Get the ID of the keyboard 0Ah Keyboard Read expanded keyboard character 10h Expanded keyboard Obtain status of the expanded keyboard buffer 11h Expanded keyboard Get expanded keyboard status 12h Expanded keyboard
INT 16h Detailed Function List FunctionFunction code(AH)DeviceInputsReturn Read key press 0h KeyboardNone AH = Scan code of the key pressed down AL = ASCII character of the button pressedGet the State of the keyboard buffer1hKeyboardNoneAH = Scan code, ZF = 0 if key pressed downAL = ASCII character, AX = 0 if no Scan codesGet the State of the keyboard2hKeyboardNoneAH = BIOS Keyboard flagsEstablish repetition factor3hKeyboardAL = Mode, BH = Repeat delay (if AL = 5), BL = Typematic rateNoneKeyboard Click adjustment4hKeyboardAL = 0 (off) or 1 (on)NoneSimulate a keystroke5hKeyboardCH = Scan code, CL = ASCII CharacterAL = 0 If successful, 1 otherwiseGet the ID of the keyboardAhKeyboardNoneAL = Keyboard Id
See also BIOS PS/2 port
References
External links explained and complete list of interrupt 16h