-
-
Notifications
You must be signed in to change notification settings - Fork 137
spec(developer): LDML to KVKS tool 🙀 #5077
Description
Proposal
This will be a compile-time tool written in Rust that takes a .kmx-ldml file and uses the DataBlob Library to interrogate the LDML file and generate a corresponding .kvks file.
This will then be used by the existing compiler toolchain to generate:
- .kvk files for desktop platforms
- the .js
.KV.KLSproperty for web/touch platforms.
This tool should be accessible as a standalone library, wrapped with a command-line tool, so that it can be used for unit testing as well.
The library may have external dependencies as it is a development-side component, not an engine-side component.
Note that while Keyman for Linux generates an LDML file for use by onboard, we will still use the .kvk file in Keyman for Linux so that we are working from a consistent source (and also we won't be distributing the source LDML file anyway).
Notes
- KeymanWeb layouts:
- Core Web’s layout spec + geometry is currently handled in defaultLayouts.ts
- The default desktop spec starts at line 542 of the same. Most desktop layouts merely “fill out” the key specifications, keeping things otherwise the same.
- We have a different set of modifier keys on LDML and KVK - LDML has platform-specific modifiers that we don't as well as shiftL, shiftR.
- Issue: shiftL, shiftR not currently supported in KVK/KVKS
- Issue: longpress ‘hint’ not supported in KVK/KVKS/touch layouts
- Latter uses a simple ‘dot’ in the same position.
- This may only be an issue for touch layouts not KVK
- Keycaps, by default, are determined by the output from a keystroke
- Custom keycaps are set per output, not by the source key + modifier set.
- Multiple keys with matching keystroke will always use the same keycap.
References
- spec(core): LDML KeyboardProcessor 🙀 #5015 Keyman Core for LDML -- DataBlob Library host issue
- Draft spec
Keyman Developer:
- OS: any
- Keyman Developer version: 15.0