You are here: Input > Resources
Short URL: http://scripts.sil.org/Kbd_Registry
Keyboard-related registry keys in Microsoft Windows
Document version 0.01: covers Windows 95, 98, 98/2, Me, NT4, 2K, XP.
This document lists a number of registry keys and file types and locations that are used for keyboard management in Windows, and also some Keyman-specific settings.
Each key will have one or more of the following tags to indicate what it refers to:
||Windows 95, 98 and Me
||Windows 98 and Me
||Windows NT 4, 2000 and XP
||Windows 2000 and XP
Some precursory topics; see MSDN for details about these topics:
||.kbd file in ; .dll file in [NT]
||is Language ID + Sort Order (MAKELCID)
||is Sub Language ID and Primary Language ID: (MAKELANGID) LangID = (WORD)((PriLangID & 0x3FF) + (SubLangID * 0x400)) e.g. US English = 0x0409; PriLangID = 0x9, SubLangID = 0x1.
||A handle to a keyboard layout, DWORD.
||0xExxx: indicates IME, search [keyboard layouts] to find.
||0xFxxx: alternate layout, layoutID = HIWORD(HKL) and 0x0FFF; search for layout ID in [keyboard layouts].
ERROR: unexpected else: directive
||indicates language ID for installed keyboard.
[keyboard layouts]  [NT]
Each subkey is a keyboard layout. Subkey can have following formats:
- 0x000xxxxx: normal keyboard layout; xxxxx indicates Language ID.
- 0x0xxyyyyy: substitute keyboard layout; yyyyy indicates Language ID; xx indicates layout # — not the same as layout id.
- 0xExxyyyyy: IME; xx indicates IME #, yyyyy indicates language ID.
- 0xDxxyyyyy: [NT] alternate keyboard layout; where multiple keyboard layouts are installed for a single language — xx is a incrementing number, yyyyy is the language ID.
||Textual name of the layout — displayed in Control Panel, etc.
||Layout ID used in HKL (see HKL description); you need to search for this when doing reverse lookups on an HKL for a keyboard layout. Do not search on the “layout #” as defined in the subkey name.
||file name of the keyboard (.kbd file in , .dll file in [NT]).
||file name of the IME for IME layouts
||set to 1 when the keyboard layout was created by Keyman.
[keyboard layout] [NT][95?]
Translations between DOS keyb codes and Windows keyboard layouts
 subkeys; [NT] values (‘1’..n — one for each keyboard installed).
Each subkey or value has a keyboard layout associated. See also [Substitutes]
 subkeys or [NT] values for each substituted layout — where the layout is not the default layout associated with a language; for instance, if you use Dvorak keyboard with US English, there will be an entry in [preload] titled 00000409, which has a substitute 00000409=00010409. [NT only:] For multiple substitutes, e.g. you also have US International installed for US English language ID, you’ll have an entry in [preload] titled dxx00409, where xx is an incrementing number, and an entry in [substitutes] dxx00409=0050409.
Important Keyman Registry keys
The important Keyman registry keys are:
- HKEY_LOCAL_MACHINESoftwareTavultesoftKeyman5.0 — Keyman machine-wide settings
- HKEY_CURRENT_USERSoftwareTavultesoftKeyman5.0 — Keyman curuser settings
- HKEY_LOCAL_MACHINESoftwareTavultesoftKeyman5.0Installed Keyboards — Keyboards installed for all users
- HKEY_CURRENT_USERSoftwareTavultesoftKeyman5.0Installed Keyboards — Keyboards installed for current user
- HKEY_LOCAL_MACHINESystemCurrentControlSetControlKeyboard Layouts — Keyman will install shadow keyboard layouts for Keyman keyboards in this location; you can identify these because they have the value keyman install set to 1.
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun — Keyman.exe: starts Keyman on Windows startup
- HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstallTavultesoft Keyman — Keyman uninstall key. Also creates uninstall keys under parent key for all Keyman keyboards installed under  or keyboards installed for all users in [NT].
Keyboard installation locations
Keyman keyboards are installed in:
- [2K] all users: Documents and SettingsAll UsersApplication DataTavultesoftKeymanKeyboards...
- [2K] cur user: Documents and SettingscuruserLocal SettingsApplication DataTavultesoftKeymanKeyboards...
-  Program FilesTavultesoftKeymanKeyboards...
ERROR: missing end-if: directive
© 2003-2018 SIL International, all rights reserved, unless otherwise noted elsewhere on this page.
Provided by SIL's Non-Roman Script Initiative. Contact us here.