You are here: Input > Resources
Short URL: https://scripts.sil.org/Kbd_Registry
Keyboard-related registry keys in Microsoft Windows
Marc Durdin, 2001-08-19
Note:
This page is obsolete. For using the Keyman program, please go to the Keyman site.
Introduction
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:
[95] |
Windows 95, 98 and Me |
[98] |
Windows 98 and Me |
[Me] |
Windows Me |
[NT] |
Windows NT 4, 2000 and XP |
[2K] |
Windows 2000 and XP |
[XP] |
Windows XP |
Some precursory topics; see MSDN for details about these topics:
keyboard file |
.kbd file in [95]; .dll file in [NT] |
IME file |
.ime file |
Keyman file |
.kmx file |
|
|
Locale ID: |
is Language ID + Sort Order (MAKELCID) |
Language ID: |
is Sub Language ID and Primary Language ID: (MAKELANGID) LangID = (WORD)((PriLangID & 0x3FF) + (SubLangID * 0x400)) e.g. US English = 0x0409; PriLangID = 0x9, SubLangID = 0x1. |
HKL |
A handle to a keyboard layout, DWORD. |
HIWORD(HKL): |
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 |
LOWORD(HKL): |
indicates language ID for installed keyboard. |
[keyboard layouts] [95] [NT]
HKEY_LOCAL_MACHINESystemCurrentControlSetControlKeyboard Layouts
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.
Subkey values:
layout text: |
Textual name of the layout — displayed in Control Panel, etc. |
layout id: |
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. |
layout file: |
file name of the keyboard (.kbd file in [95], .dll file in [NT]). |
ime file: |
file name of the IME for IME layouts |
keyman install: |
set to 1 when the keyboard layout was created by Keyman. |
[keyboard layout] [NT][95?]
HKEY_LOCAL_MACHINESystemCurrentControlSetControlKeyboard Layout
Translations between DOS keyb codes and Windows keyboard layouts
[preload] [NT][95]
HKEY_CURRENT_USERkeyboard layoutPreload
[95] subkeys; [NT] values (‘1’..n — one for each keyboard installed).
Each subkey or value has a keyboard layout associated. See also [Substitutes]
[substitutes] [NT][95]
HKEY_CURRENT_USERkeyboard layoutsubstitutes
[95] 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 [95] 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...
- [95] Program FilesTavultesoftKeymanKeyboards...
ERROR: missing end-if: directive
© 2003-2024 SIL International, all rights reserved, unless otherwise noted elsewhere on this page.
Provided by SIL's Writing Systems Technology team (formerly known as NRSI). Read our Privacy Policy. Contact us here.