This is an archive of the original scripts.sil.org site, preserved as a historical reference. Some of the content is outdated. Please consult our other sites for more current information: software.sil.org, ScriptSource, FDBP, and silfontdev



Home

Contact Us

General

Initiative B@bel

WSI Guidelines

Encoding

Principles

Unicode

Training

Tutorials

PUA

Conversion

Resources

Utilities

TECkit

Maps

Resources

Input

Principles

Utilities

Tutorials

Resources

Type Design

Principles

Design Tools

Formats

Resources

Font Downloads

Gentium

Doulos

IPA

Rendering

Principles

Technologies

OpenType

Graphite

Resources

Font FAQ

Links

Glossary


Computers & Writing Systems

SIL HOME | SIL SOFTWARE | SUPPORT | DONATE | PRIVACY POLICY

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:

TagWindows version
[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:

TopicDetails
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:

SubkeyValue
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.