Keyboard Support

Contact and Search Homepage

Header bottom

Other versions
Version 17.0 (current version)Version 16.0Version 15.0Version 14.0Version 13.0Version 12.0Version 11.0

On this page

KMConvert Command Line Keyboard Conversion Utility

KMConvert generates keyboards and models from templates, and converts keyboard layouts between different formats.

The New Project dialog in Keyman Developer provides a graphical version of the functionality in KMConvert.

In a default installation of Keyman Developer on Windows, it is located in %ProgramFiles(x86)%\Keyman\Keyman Developer, and should be on your PATH. KMConvert will generate a full Keyman template project from the imported layout or data, in a new folder named with the ID of the keyboard. It will not overwrite an existing folder.

The following parameters are available:

kmconvert import-windows -klid <source-klid> [additional-options]
kmconvert template -id <keyboard_id> [additional-options]
kmconvert lexical-model -id-author <id-author> -id-language <id-language> -id-uniq <id-uniq> [additional-options]

Available conversion modes

The conversion mode must be specified as the first parameter.

Imports a Windows keyboard into a new Keyman keyboard project. The -klid parameter is required. This mode only functions on Windows platforms.
Creates a blank keyboard project in the repository template format. The -id parameter is required.
Creates a wordlist lexical model project in the repository template format. The -id-author, -id-language, and -id-uniq parameters are required.

General parameters

-author <data>
Name of author of the keyboard or model, no default.
-copyright <data>
Copyright string for the keyboard or model, defaults to Copyright (C), used everywhere except license file.
-full-copyright <data>
Longer copyright string for the keyboard or model, defaults to Copyright (C) yyyy, used in license file.
-languages <data>
Space-separated list of BCP 47 tags, e.g. en-US tpi-PG
-name <data>
Name of the keyboard or model, e.g. My First Keyboard, %s Basic. Format strings are only valid in import-windows mode; %s will be replaced with the friendly English name of the imported keyboard.
Don't show the program description and copyright banner
-o <destination>
The target folder to write the keyboard project into, defaults to .\
-version <data>
Version number of the keyboard or model, defaults to 1.0

template and import-windows parameters

-id <keyboard_id>
The id of the keyboard to create. Required for template, optional for import-windows, not valid for -lexical-model. In import-windows mode, you can use a format string with the placeholder %s which will be replaced with the source filename, e.g. kbdus. If not specified, then the source filename will form the id of the generated keyboard.
-targets <data>
Space-separated list of targets, e.g. linux windows phone

import-windows parameters

-klid <source-klid>
The KLID of the keyboard to import, per LoadKeyboardLayout. This must be an eight digit hex identifier, such as 00000409 for English (US), kbdus.dll. This parameter is only valid for import-windows conversion mode.

Lexical model parameters

-id-author <data>
Identifier for author of model
-id-language <data>
Single BCP 47 tag identifying primary language of model
-id-uniq <data>
Unique name for the model

Note: model identifiers are constructed from parameters: <id-author>.<id-language>.<id-uniq>

The values for -id-author and -id-uniq must be valid tokens: lower case a-z, 0-9, and underscore. These should also start with a letter or underscore.


Create a lexical model for Tok Pisin:

kmconvert lexical-model -id-author james -id-language tpi-PG -id-uniq tokpisin -name "Tok Pisin" -languages tpi-PG

Create a keyboard for Javanese from a template:

kmconvert template -id sample -author "James Example" -name "My Javanese Keyboard" -copyright "Copyright (C) James Example" -full-copyright "Copyright (C) 2021 James Example" -languages jv-java

Create a new keyboard based on the Windows German keyboard:

kmconvert import-windows -klid 00000407 -id german_plus -name "German Plus" -copyright "Copyright (C) James Example" -full-copyright "Copyright (C) 2021 James Example" -author "James Example"