Keyboard Layout Control Entries

The Keyboard Layout subkey maintains the mapping of keyboard layout names to keyboard layout DLL names, under the following Registry path:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

The Keyboard Layout subkey is used by the system to determine which DLL to load. The mapping may contain duplicated keyboard layout DLL names if that DLL implements the layout for more than one language (in other words, a keyboard layout may have more than one name). Individual preferences are stored under HKEY_CURRENT_USER\Keyboard Layout.

The Keyboard Layout subkey contains an entry in this format:

KeyboardLayout REG_SZ DLL filename

By convention, a keyboard layout name is a null-terminated string of 8 hexadecimal digits representing a language ID (in the last four digits) and a variation number (in the first four digits).

For example, the language ID of Swiss German is 0x807, so, by convention, keyboard layout names could be 00000807, 00010807, and so on.

The DosKeybCodes subkey is used by the system to convert Windows NT keyboard layout names into MS-DOS–style two-character keyboard layout names as used by the kb16 command (equivalent to keyb in MS-DOS). The system must automatically switch the VDM keyboard layout whenever the Windows NT keyboard layout is changed. Entries are found under this Registry path:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
\Keyboard Layout\DosKeybCodes

KeyboardLayout REG_SZ Two-character code

These entries define the two-character equivalent for each keyboard layout. This list summarizes the entries under DosKeybCodes:

00000405=cz

00000414=no

0000080C=be

00000406=dk

00000415=pl

00000813=be

00000407=gr

00000416=br

00000816=po

00000409=us

00000419=ru

00000C0C=cf

0000040A=sp

0000041A=yu

00001009=us

0000040B=su

0000041B=sl

0000100C=sf

0000040C=fr

0000041D=sv

00010409=dv

0000040E=hu

00000807=sg

0001040A=sp

0000040F=us

00000809=uk

00010C0C=cf

00000410=it

0000080A=la

00020409=us

00000413=nl