Keyman language history
Keyman 3
- The structure of rules is not backwardly compatible with earlier versions of Keyman. The left hand side of the rule changed from being a sequence of keystrokes to being a context + single keystroke.
- Stores were introduced.
- Long line support
Keyman 4
- The
+character became required, and usage became stricter to follow the standard now: the plus character must separate context from keystroke in a rule. - Keyboards are now compiled by the developer into .kmx files, rather than being distributed as .kmn files.
Keyman 5
- Added Unicode support
- Added Input Method eXtension support
- Deprecated
bitmapsstatement - Deprecated
languagestatement. Note that thelanguagestatement was reintroduced in Keyman 6 with a new meaning - Keyman 5.0 added system stores
- Deprecated
layoutstatement
Keyman 6
- Added named character constant support
- Added Ethnologue (ISO 639-3) code support
- Added Mnemonic layouts (reworked in Keyman 8 and 9)
- Added Virtual character keys to support mnemonic layouts
- Keyman 6.0 added support for deadkeys and virtual keys in stores
- Enhanced
context()statement to work on left hand side of rule
Keyman 7
- Added
&visualkeyboardstore - Enhanced
&languagestore to support combined codes - Added
notany()statement - Added web keyboard support
- Enhanced
&bitmapstore to support .ico format files - Added
&windowslanguagesstore - Keyman 7.0 extended maximum store length to 4095 characters
Keyman 8
- Added
if()statement - Added
set()statement - Added
save()statement - Added
reset()statement
Keyman 9
- Added touch device support
- Added
&keyboardversionstore - Added
&kmw_embedcssstore - Added
platformstatement - Added
layerstatement - Added
&targetsstore - Enforced requirement that
use()is last statement in a rule
Keyman 10
- Changed language tags from ISO 639-3 to BCP 47
- Deprecated
ðnologuecodestore - Deprecated
&languagestore - Deprecated
&windowslanguagesstore - Left and right modifiers and Caps Lock modifier are supported for Virtual Keys in KeymanWeb 10.0 and later
- Deadkeys now work 100% identically in KeymanWeb 10.0 and Keyman Desktop 10.0, in particular using multiple deadkeys in a row.
Keyman 11
&targetsstore now supportslinux- .kmn files without BOM are now treated as UTF-8 unless they contain invalid UTF-8 sequences
Keyman 12
- No language changes.
Keyman 13
- Virtual keys no longer need to be in quotes for the
&hotkeystore
Keyman 14
- Added range expansions
- Added
&CasedKeysstore - Virtual keys may now be identified
by ISO9995 key ids (e.g.
+ [SHIFT E01]) - The compiler now enforces order of certain statements in the context part of the rule
notany()andcontext()are now supported together for KeymanWeb, iOS, Android (#3816)- Hangul named constants were corrected
Keyman 15
- Unicode key identifiers in
touch layouts can now have multiple characters, e.g.
U_1000_1001 - Casing support is now available for touch layouts, including Caps Lock layer, start of sentence support, and double-tap Shift for Caps.
- Added support for
begin NewContextandbegin PostKeystrokeentrypoints - Added support for
readonlygroups - Added support for
&newLayersystem store and&oldLayersystem store
Keyman 16
- Initial support for LDML keyboard format in compiled files. Note that this is not a change to the Keyman keyboard language.
Keyman 17
- Support for flick and multi-tap gestures in touch layouts
- Support for additional special key caps in
touch layouts:
*Sp*,*NBSp*,*NarNBSp*,*EnQ*,*EmQ*,*EnSp*,*EmSp*,*PunctSp*,*ThSp*,*HSp*,*ZWSp*,*ZWJ*,*WJ*,*CGJ*,*LTRM*,*RTLM*,*SH*,*HTab*
Keyman 19
- Support for decimal, hexadecimal, and octal character code formats has been removed.
- Support for compile targets has been removed.
- Validity of store, group, and deadkey names has been tightened (disallowing space, comma, non-characters, parentheses, square brackets)


