You are here: Input >
Resources
Short URL: http://scripts.sil.org/Kbd_Registry
Keyboard-related registry keys in Microsoft Windows
Marc Durdin, 2001-08-19; 76335 reads
Introduction
[keyboard layouts] [95] [NT]
[keyboard layout] [NT][95?]
[preload] [NT][95]
[substitutes] [NT][95]
Important Keyman Registry keys
Keyboard installation locations
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-2012 SIL International, all rights
reserved, unless otherwise noted elsewhere on this page.
Provided by SIL's Non-Roman Script Initiative. Contact us at .