Keyboard Support

Contact and Search Homepage

Header bottom

On this page



The &mnemoniclayout store controls whether a keyboard is positional or mnemonic.


store(&mnemoniclayout) isMnemonic


A string value, set to "1" for a mnemonic layout, or "0" for positional.


Keyman supports two different types of keyboards: positional and mnemonic keyboards.

With a mnemonic keyboard, Keyman will instead examine the character output by the current Windows keyboard layout. For example, with English, French, and German Windows keyboard layouts, pressing "z" will produce the same output, even though the "z" key is in different positions on all three layouts.

Virtual keys do change their behaviour somewhat in a mnemonic layout. For the "white" character keys (i.e. numbers, alphabet, and punctuation keys on the primary section of the keyboard), 'virtual character keys' are used instead of regular virtual keys. See the section on virtual keys and virtual character keys for details.

Mnemonic layouts work with Latin-script base layouts. While conceptually they could work with any base layout, the majority of non-Latin script keyboards also include Latin script on the key caps, and most of these follow the US QWERTY layout. European layouts, however, do not follow the US QWERTY layout.

The layout of a positional keyboard is based on the scan codes sent by the keyboard, which are related to the actual key location on the keyboard. This means that if you press any particular key, the output will be the same regardless of the underlying physical keyboard or the keyboard layout selected in Control Panel. In general the layout of the keyboard does not change, but there are a small handful of keys that may move depending on the physical construction of the keyboard.

Positional keyboards are based on a US English layout: any positional keyboard that tries to match keystrokes with characters or virtual keys not present on a US English layout (except [K_oE2], an extra key on European keyboards to the right of the Shift key), will not function correctly. If you are creating a positional keyboard, and you do not use a US English layout normally, we suggest you install another language in Control Panel and assign the US English layout to it, so that you can easily switch to it to write your keyboard. You can also view a reference diagram of the US English keyboard layout.

All Keyman keyboards are positional by default. To make a keyboard mnemonic, include the &mnemonicLayout store and set its value to 1.


Example: Using &mnemoniclayout

store(&mnemoniclayout) "1"


The &mnemoniclayout statement is supported only on desktop keyboards. On touch keyboards, the keys match to US key codes in the touch definition. Web keyboards have limitations due to the inconsistent ability to determine the active physical layout.

While mnemonic keyboards work on Mac or Linux, you cannot select a different base keyboard.

Windows macOS Linux Desktop web Mobile web iOS Android
1/2 1/2

Version history

The &mnemoniclayout store was introduced in Keyman 6.0.