Keyman 17.0 Beta Release

Keyman 17.0 is now in beta!

:arrow_forward: Keyman 17 Beta Download

In version 17.0, the Keyman team has been working hard to improve Keyman and we are excited to introduce the following new features:

  • Support for the new LDML Keyboard Standard on desktop computers and laptops.
  • Improving gesture support on touch layouts. This includes introducing new gestures such as flicks, and multitap, and improving the usability of existing gestures, such as holding a modifier key while tapping on another key.
  • Enhancements to the predictive text suggestion banner, showing more suggestions and handling longer words better.
  • In Keyman Developer, an all new keyboard compiler that runs on Windows, macOS, and Linux.

Alongside the new features, there have been many less visible improvements:

  • Keyboarding on macOS is now much more reliable with the introduction of Keyman Core into Keyman for macOS.
  • Diacritics and other marks can now be more consistently and clearly displayed on the On Screen Keyboard.
  • Keyman for Linux now works with Wayland.

Using Gestures on the Touch Layout Keys

There are now several gestures available to interact with some keys on the keyboard. Keys which have gestures available will normally show a hint in the top right of the key:

  • Long press: Press and hold a key, and after a moment a submenu will appear. Slide the finger to the submenu to select a key. Release the finger, and the highlighted key from the submenu will be output.

  • Flick: Press and hold a key, and then slide the finger in various directions on a key to reach alternate outputs. The key will animate to show the expected output when the finger is released. A common flick is to slide down to reach numerals on the top row of the keyboard.

    flick down on y to get 6

  • Multitap: Some keys can be pressed repeatedly and rapidly to reach alternate outputs. Tapping rapidly twice on Shift will activate Caps Lock on many keyboards.

Improved Suggestion Banner

  • Drag the banner horizontally to see more suggestions
  • Overly-long suggestions are partially hidden, but expand when a finger is held on them
  • Displays up to 8 suggestions

improved banner

Creating LDML Keyboards with Keyman Developer

  • New project wizard for creating LDML keyboards
  • Integrated LDML keyboard test window

New Keyman Developer compiler toolchain

  • The Windows-only kmcomp.exe command-line compiler has been replaced with a cross-platform kmc tool, with more consistent parameters. kmc is also up to 100x faster than kmcomp.exe when batch building keyboards.

The full change log is available here.

Keyman for Windows

  • Minimum supported version of Windows is 10.0

Keyman for macOS

  • Minimum supported version of macOS is 10.10 Yosemite.

  • Internals of Keyman Engine for macOS rewritten to use shared Keyman Core, improving reliability and consistency with other platforms #7857

Keyman for iPhone and iPad

  • Minimum supported version of iOS is 12.2.

  • Multitap and flick gestures are now supported for iOS. #7324

  • Predictive text suggestions are now handled more flexibly on the banner #7934

    • Can now display up to 8 suggestions on screen
    • Can drag the banner left and right to see more suggestions
    • Shortens long suggestions to avoid long words overwhelming the available space.
  • Improves scaling of key caps for some keyboards #10506

Keyman for Android

  • Minimum supported version of Android is 5.0 (Chrome 37.0)

  • Multitap and flick gestures are now supported for Android. #7324

  • When suggestions aren’t enabled, displays a themed banner. This area is for displaying top row key gestures and is also reserved for future enhancements #9696

  • Removes in-app browser #8430

  • Predictive text suggestions are now handled more flexibly on the banner #7934

    • Can now display up to 8 suggestions on screen
    • Can drag the banner left and right to see more suggestions
    • Shortens long suggestions to avoid long words overwhelming the available space.
  • Improves scaling of key caps for some keyboards #10506

Keyman for Linux

  • Keyman for Linux now supports Ubuntu Noble and ends support for Lunar. #10561

  • Works now with Wayland #4273

  • It is now possible to specify an arbitrary language tag when installing a keyboard package from the command line. Previously this only worked for the language tags listed in the keyboard package. #8598


  • Minimum supported version of Chrome is 53.0

  • Now targets ES6 rather than ES5 #10257


  • Updated to Unicode 15.1 #9555

  • BREAKING kmcomp is replaced by kmc #9158

  • kmc is available as an NPM package with npm install @keymanapp/kmc@beta #8954

  • Extra fields are available in packages for license file, welcome file, typing examples, related packages (including deprecated packages), additional font files, replacing these metadata fields previously stored in .keyboard_info files. #9485

  • &displayMap allows keyboard developers to specify a font mapping for the On Screen Keyboard and Touch Layout to resolve diacritic rendering issues. #9032

  • Adds non-printing characters such as spacing, joiner, and marker characters for On Screen Keyboards and Touch Layouts. #9846

  • Keyman Developer now warns if attempting to use virtual keys in output of rules #10062

  • Keyman Developer now includes basic LDML keyboard editing and testing #10459

  • Keyman Developer now supports ngrok v3 #10359

Keyman Core

  • Keyman Core on Windows, Linux, and macOS now supports LDML Keyboards

  • Keyman Core on Windows, Linux, and macOS supports full normalization for LDML keyboard output #10390

  • BREAKING header file has been renamed from keyboardprocessor.h to keyman_core_api.h #9723

  • BREAKING API identifiers have been renamed from km_kbp_ to km_core_ #9724

  • BREAKING Context APIs have been dramatically simplified, with only 2 APIs to be used by most consumers #10401

  • BREAKING Introduced debug logging API for retrieving context #10644

  • BREAKING Action APIs have now been simplified #10644

Keyman Engine for Android

  • BREAKING Changes package name from com.tavultesoft.kmea to com.keyman.engine #7881

  • BREAKING Updates to Java 11 #8543

Keyman Engine for iOS

  • BREAKING Now uses the framework weichsel/ZIPFoundation in place of marmelroy/Zip for unzipping Keyman packages. #9958

Keyman Engine for Web

  • BREAKING Initialization option setActiveOnRegister is now a boolean and not a string #8458

  • BREAKING Reworks Keyman Engine for Web internally to use ES modules throughout; this has resulted in significant internal changes.
    The current API will continue to work without modification, but use of undocumented functionality may break #8560

  • The on-screen-keyboard for Keyman Engine for Web has been modularized in preparation for embedding in other Keyman platforms #8560

  • Multitap and flick gestures are now supported for Web. #7324

New Localizations

  • Mon (Burmese script) added for Windows, Android, Linux #9550

Very significant improvements. Thumbs up to the Keyman team. More grace. Please include the download link (assuming I don’t know or I’ve forgotten).

Apologies Keyman Pre-release Versions is the download link, Darcy has edited the post!

Hi, I installed KMC as an NPM package on both Windows and Linux computers using the following command:

npm install -g @keymanapp/kmc@beta

Then I successfully built my keyboard using the following commands:

  • In Windows Terminal - kmc.cmd build ./path-to-my-keyboard

  • In Linux Terminal - kmc build ./path-to-my-keyboard

  1. Can we avoid adding .cmd as a suffix to kmc.cmd for usage in Windows? If possible, it will be identical in Linux and Windows.

  2. Is the zip download of the KMC beta release available using the method mentioned at: keyman/developer/src/kmc at beta · keymanapp/keyman · GitHub ?
    curl -L -o

  3. Does the repository - exist? Or is it private? Because it is mentioned in the documentation at keyman/developer/src/kmc at beta · keymanapp/keyman · GitHub

1 Like

Thanks for the feedback @Ramesh_Kunnappully!

  1. Yes, .cmd extension is optional in Windows
  2. No that link is for stable releases. You can use to get the beta version, or for a specific release in beta. (We will try and add a shortlink as well at some point but the kmcomp link will continue to work into the future.)
  3. See chore: establish · Issue #10832 · keymanapp/keyman · GitHub This is scheduled to be completed during the beta cycle. We have some infrastructure work we need to complete in order to make this single-keyboard-repository model viable.
1 Like

Thanks for the reply, @Marc

I understand that the kmc command without the .cmd extension did not work in Windows Terminal (PowerShell) due to the default ExecutionPolicy being set as Restricted.

I ran the PowerShell -ExecutionPolicy Bypass command in Windows Terminal, and then I was able to run the kmc command successfully.

1 Like

Great, thanks for the update @Ramesh_Kunnappully – that makes sense.

Thanks for all the hard work. Having been under a rock for the last few months, I now am hunting around to see if you’ve been able to make any progress on the iOS/Android text selection behaviour referenced here: iOS and Android - Undesirable behaviour with selected text I’ll try it and see.

@rowbory, We’ve made some progress on a bunch of related issues, but I don’t think we’ve actually fixed any of the three specific issues listed in that topic, sadly:

I’ll ping the team on #7865 and #7866 and see what we can do – even if it’s a partial mitigation. I don’t like letting usability issues like these linger.

@rowbury, we’ve got a proposed fix now for #7866, which I think was the most icky bug.

Double-tap the shift key to switch to caps layer.

If you double-tap as fast as you do on other keyboards, it will not switch the layer, instead it will go back to the previous layer. But if you tap and wait for about one second and tap again, it will switch to caps. Too slow.

Android 12, Tecno Pop 7
Keyman for Android 17.296

and @rowbory hurrah, finally, the fix for the selection clearing is in, with fix(web): prevent layer switch key from erasing selection by mcdurdin · Pull Request #11032 · keymanapp/keyman · GitHub, in the next beta build! And sorry for misspelling your handle in my last post…

@katelem, I’m not entirely clear on your description. Are you saying you want the maximum delay for double-tap to be shorter, or something else? Can you clarify for me?

Double-tapping on shift to switch to caps layer is not working. But if you tap and wait then tap again, it will switch the layer. I think the length of time between the double-tap should be reduced in this new version. Double-tap was working well in KM 16, but it’s not working fine now.

Can you let me know which keyboard and the version of the keyboard? I am not seeing the behaviour you describe on sil_euro_latin 3.0.1 on my Keyman 17.0.292 beta on Android.

I’m using 17.296 which I downloaded yesterday before giving this feedback. This issue affects sil-eurolatin 3.0.1 also. I wanted to share a screen recording but this site says the format is not authorised.

Perhaps you could open an issue on GitHub with the video? New Issue · keymanapp/keyman

There’s a considerable chance this is related to bug(android): Keyboard Stuck and Displaying Error Message While Rapidly Typing on Text Input Screen · Issue #10592 · keymanapp/keyman · GitHub and/or bug(android): typing rapidly can lead to stuck keys · Issue #10646 · keymanapp/keyman · GitHub.

We’ve got a fix (capped off by fix(web): proper linkage of sources to events 🪠 by jahorton · Pull Request #10960 · keymanapp/keyman · GitHub) prepared for these issues that still needs a bit of internal testing first. We can’t guarantee it’s the fix without further examination and a successful reproduction of what you see on our end, though.

@joshua_horton I’ve noticed on my own end the first two issues you cited. Key pop-ups getting stuck and blocking the way to other keys or remaining blue as if it’s active. I didn’t report since it was an alpha version.

I wish you and the entire Keyman team good luck in fixing these issues. More grace.