21 Keyman 19.0 Release Notes
Marc Durdin edited this page 2026-10-05 16:21:33 +02:00

For end users

Keyman for Windows

  • Minimum supported version of Windows is 10.0
  • Keyboard search is now localized for several languages (#15510)
  • Keyman now supports Windows on Arm devices (e.g. Snapdragon X laptops) (#14621)

Keyman for macOS

  • Minimum supported version of macOS is 10.13 High Sierra.
  • Keyboard search is now localized for several languages (#15510)
  • Redesigned and modernized app - new installer, new configuration app (#####)

Keyman for iPhone and iPad

  • Minimum supported version of iOS is 15.6.
  • Keyboard search is now localized for several languages (#15510)
  • Automatic acceptance of corrections (#12893)

Keyman for Android

  • Minimum supported version of Android is 5.0 (requires minimum version of Chrome 95.0)
  • Keyboard search is now localized for several languages (#15510)
  • Support for dark mode (#15827)
  • Refreshed and modernized settings user interface (#15827)
  • Automatic acceptance of corrections (#12893)
  • Improvements to interface for keyboard resizing (#15267)

Keyman for Linux

  • Minimum supported version for Ubuntu is Ubuntu 22.04 Jammy (#12003)
  • Keyboard search is now localized for several languages (#15510)
  • onboard-keyman package no longer gets installed automatically when installing keyman. The reason is that it doesn't work properly with Wayland and is not available in the official Debian/Ubuntu repos (#14769). It is still possible to install it manually in your package manager, or in a terminal window with sudo apt install onboard-keyman.
  • Generate a diagnostic report for technical support feat(linux): implement diagnostic report (#15576)

For keyboard authors

Keyman Developer

  • Updated to Unicode 17.0 (#14728)
  • Updated to latest ISO639-3, langtags.json, and language-subtag-registry (#####)
  • Compiler is now more restrictive on allowed group names, store names, and deadkey names (#14746)
  • LDML compiler now reports line numbers on errors (#13375)
  • Can now validate a project from within Keyman Developer IDE (#16076)

For integrators

KeymanWeb

  • Minimum supported version of Chrome is 95.0
  • BREAKING file: protocol is no longer supported, as keyboards are loaded with fetch() API (#12334)
  • Bug fix: the keyboardloaded event now fires only once per loaded keyboard (#16297). Previously the event fired twice.
  • New keyman.versionInfo API endpoint (#16351)
  • Fixed loaduserinterface and unloaduserinterface events to fire consistently (#16353)
  • Newly deprecated API endpoints (#16351, #16354), to be removed in version 20 (#16385):
    • keyman.helpURL
    • keyman.util.rgba()
    • keyman.util.toFloat()
    • keyman.util.toNumber()
    • keyman.util.toNzString()
  • Previously deprecated API endpoints to be removed in version 20 (#16385):
    • keyman.util.createShim()
    • keyman.util.showShim()
    • keyman.util.hideShim()
    • keyboard.KeyboardID
  • Deprecated IMX functions and endpoints that will be removed in v20 (#16385):
    • keyman.interface.focusLastActiveElement()
    • keyman.interface.getLastActiveElement()
    • keyman.interface.hideHelp()
    • keyman.interface.showHelp()
    • keyman.interface.showPinnedHelp()
  • To be removed in version 21 (#16386):
    • keyman.build (use keyman.versionInfo)
    • keyman.version (use keyman.versionInfo)
    • keyman.moveToElement(elem) (use elem.focus()) (#16661)
  • Deprecated functions and endpoints that will be retained for compatibility with legacy keyboards:
    • KeymanWeb.KA()
    • KeymanWeb.KC()
    • KeymanWeb.KCM()
    • KeymanWeb.KDM()
  • Deprecated IMX functions and endpoints that will be retained for compatibility with legacy IMX keyboards:
    • KeymanWeb.FocusLastActiveElement()
    • KeymanWeb.GetLastActiveElement()
    • KeymanWeb.HideHelp()
    • KeymanWeb.ShowHelp()
    • KeymanWeb.ShowPinnedHelp()

Keyman Engine for Windows

  • kmcomapi: Added the MCompileForBaseKeyboard(long KLID) COM method to the new IKeymanKeyboardInstalled2 interface, which extends IKeymanKeyboardInstalled. The method accepts the user's base keyboard ID and allows mcompile to compile all installed keyboard layouts against that keyboard ID. See #16162 for details.
  • kmcomapi: Added the Install3 COM method, which accepts a base keyboard ID. The base keyboard ID is passed to mcompile during installation so that the keyboard layout can be compiled against the specified base keyboard. Install3 has been added to the following interfaces: IKeymanKeyboardFile3, IKeymanPackageFile3, IKeymanKeyboardsInstalled3, and IKeymanPackagesInstalled3. See #16528 for details.

Keyman Core

  • Removed deprecated folder_path field from km_core_keyboard_attrs struct (#15471)

Keyman Engine for Android

  • BREAKING Apps that use the functionality of Keyman Engine for Android will have to add androidx.webkit:webkit:1.14.0 as a dependency (#16146)
  • KNOWN ISSUE sil_euro_latin keyboard must be included in an app if setDefaultKeyboard() is not called during initialization (#16215)
  • BREAKING Android Engine: the font parameters (kFont and kOskFont, renamed to textFont and oskFont) of setKeyboard() only accept a font filename and no longer a font description (#16211)
  • BREAKING * Keyman Engine for Android 18.0.252 has been released and this out-of-band change requires an additional import in build.gradle for apps using it. Add: implementation 'androidx.webkit:webkit:1.14.0'. This change is required due to a bug fix relating to a Chrome issue with importScripts and impacts any Keyman Engine for Android dependent app that uses lexical models. See #13862, #16628 for details.

Keyman Engine for iOS

  • No changes

Other changes

New Localizations

  • We've started to localize the keyboard search on https://keyman.com/keyboards. For the initial rollout, we've added French, Spanish, German,Khmer, and Portuguese. The UI language can be selected by a globe key when browsing on desktop.