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; 52525 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]. |
| |
else: indicates keyboard layout, loword in [keyboard layouts]. |
| LOWORD(HKL): |
indicates language ID for installed keyboard. |
[keyboard layouts] [95] [NT]
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard 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_MACHINE\System\CurrentControlSet\Control\Keyboard Layout
Translations between DOS keyb codes and Windows keyboard layouts
[preload] [NT][95]
HKEY_CURRENT_USER\keyboard layout\Preload
[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_USER\keyboard layout\substitutes
[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_MACHINE\Software\Tavultesoft\Keyman\5.0 — Keyman machine-wide settings
- HKEY_CURRENT_USER\Software\Tavultesoft\Keyman\5.0 — Keyman curuser settings
- HKEY_LOCAL_MACHINE\Software\Tavultesoft\Keyman\5.0\Installed Keyboards — Keyboards installed for all users
- HKEY_CURRENT_USER\Software\Tavultesoft\Keyman\5.0\Installed Keyboards — Keyboards installed for current user
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard 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_USER\Software\Microsoft\Windows\CurrentVersion\Run — Keyman.exe: starts Keyman on Windows startup
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Tavultesoft 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 Settings\All Users\Application Data\Tavultesoft\Keyman\Keyboards\...
- [2K] cur user: Documents and Settings\curuser\Local Settings\Application Data\Tavultesoft\Keyman\Keyboards\...
- [95] Program Files\Tavultesoft\Keyman\Keyboards\...
© 2003-2009 SIL International, all rights reserved, unless otherwise noted elsewhere on this page.
Provided by SIL's Non-Roman Script Initiative. Contact us at nrsi@sil.org.