Keyman Developer 10 - Beginning

See Keyman 10 Documentation on the Keyman website.
Watch the recorded Keyman Workshop Videos

Advance Preparation

Bring an orthography statement on the language.

Are tone marks or accents considered independently? Or are they considered part of a unit?  Should backspace remove just the tone, or should it delete the whole unit? Are digraphs considered separate characters or a unit?

Prepare keyboard layout grids for the language

Physical keyboards

Have participants fill out a keyboard grid for both the normal and shift layers for their target language. Here are two different grids to choose from:

​​ Keyboard Layout Keyboard Layout (2)

Mobile Keyboards

Two Basic mobile grids + long-press list.

Keyman Dev basic training

Create a folder for Keyman projects on your hard drive

In the past, Keyman files were stored in \Documents\Keyman\. Check to see if you have that directory and look at what is in there.  If you have existing projects, you have two choices:

  • Move them elsewhere and use the empty Keyman folder for Keyman 11+ projects
  • Create a different data directory for Keyman that will only contain data managed by Keyman 11+

Starting with Keyman Developer 11, the project directory structure is in the format needed for uploading keyboards to the Keyman.com repository. It also includes the source files inside the folder so that they can be modified and updated.

Create a project in Keyman Developer

  1. Select Create a New Project from the Project menu
  2. Choose Basic.
    (The option to import a Windows keyboard is about importing a Windows system keyboard to use as a starting point, not a Keyman keyboard)
  3. Name the keyboard, assign copyright, version, author
  4. Targets
    The default is "any". Since this includes all the others, we can leave this. Since Keyman 10, a single keyboard package can contain keyboards that will work on all major platforms.
  5. Set the Path
    At the time of this tutorial, the default path was set to "Documents", which would make every keyboard a subdirectory of Documents. Not a good option! Make sure to select the directory you designated at the beginning of this document.
  6. Keyboard ID
    The proposed name must be all lowercase. This is important for the Keyman.com directory structure.
  7. Languages
    1. Choose Add language...
    2. Select the appropriate BCP47 (or ISO 639-3) code for each language the keyboard will support. You can usually find these codes on ethnologue.com.  For Windows keyboards, the language code should also include the script.  Keyman already inserts what it thinks the script is for the language you choose, but you can correct this if needed.
  8. Select OK

Create a keyboard in the project

  • Note: Keyboard filename should be all lowercase for cross-platform compatibility.
  • Name keyboard
  • Choose targets:
    • ​Windows, Mac, Linux (not active yet), iPhone, iPad, androidphone, androidtablet
  • ​Add copyright, version
  • Add features
    • ​Desktop Onscreen keyboard
    • Touch-optimized keyboard
      • ​Select template-basic.js
Create the layout onscreen first
  • Copy from your paper template
Switch to code view to create the logic
  • It might be better to avoid “dead” keys or comma/semicolon modifier keys if it isn’t too disruptive. Keys that modify after are more easily discoverable.
  • Should output NFC
  • Avoid using groups in this introduction to keyboard building.

Create an onscreen keyboard

  • Fill from layout

Create a mobile keyboard

  • Select template-basic.js
  • Import onscreen keyboard
  • Select basic template again
  • Arrange the keys as needed visually.
  • Add the output code
    • K_A - Virtual keys
    • U_NNN - Unicode direct output
      • If your physical keyboard is already outputting the code 
    • T_NNN - Touch variables for use in coding logic.
  • Create long-press characters
  • Add the output code for the long-press characters (as explained above)

Compile the keyboard

Test the keyboard

  • Type a whole page of text in the language

Create the documentation for the keyboard

  • The HTML file that will be shown on installation, within the app it will appear in help menus. (Use LibreOffice Write to create HTML docs, not Word.)
  • Include pictures of the layout

Make the Keyman Package

  • Name the package file (lowercase)
  • Specify the language(s)
  • Bundling fonts don’t work well on mobile except that you can specify the font used on the keyboard display.

Practice installing

  • On windows with Keyman Desktop
  • On Android with Keyman Mobile

Submit to Keyman

  • Using GitHub, but that is a whole lesson in itself. Find out how on this page.



Mnemonic vs Positional

Mnemonic can avoid having to create different keyboards for French/German/US/UK computers.  But much thought needs to go into the actuators used. Alt+GR is a good key in this situation

Contributors to this page: dhigby .
Page last modified on Friday August 9, 2019 12:49:57 GMT-0000 by dhigby.


Creative Commons License
All content on this LingTranSoft wiki are by SIL International are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.