The keyboard driver consists of two parts: the main driver and a set of language-specific dynamic-link libraries. The main driver services the keyboard hardware and translates scan and virtual-key codes using default translation tables for U.S. keyboards. The language-specific libraries contain translation tables for different types of keyboards (that is, tables for other countries and other physical keyboard layouts). The main driver loads the appropriate language-specific library and retrieves its tables when Windows enables the keyboard driver.
The Windows keyboard driver consists of the following:
Keyboard-interrupt handler
Virtual-key translation functions and tables
ANSI-character translation functions and tables
Keyboard-service functions
Windows requires the keyboard to generate an interrupt whenever the user presses or releases a key. In response to an interrupt, the driver's keyboard-interrupt handler translates corresponding scan codes (and corresponding shift state) to Windows virtual-key codes. The keyboard passes both scan codes and virtual-key codes to Windows for generating keyboard messages, or for initiating some other action.