After this change uninstalling a keyboard will remove all installed
language/keyboard combinations for that particular keyboard.
Previously we only uninstalled for the first language listed in the
keyboard.
We no longer ask the user if he tries to install a keyboard that is
already installed with the same version. The only time we ask is for
downgrades.
A similar change is implemented in `km-package-install` where we
changed the logic to match `install_window.py`. We now silently
install the new version unless it's a downgrade in which case we
output a error message and exit. This change also introduces the
`--force` parameter which allows to install the downgrade. For
upgrades or re-installing the same version it will cause an
uninstall of the current version first.
This change makes it possible to install the same keyboard again
for a different language. It won't be visible in the GUI if the
keyboard is installed for more than language, but it will show up
for the installed languages in the keyboard dropdown.
Closes#8619.
Fixes#9184.
kmcomp was unable to track pure whitespace in .kvks files. To match this
behaviour, we should strip pure space whitespace from key element values
in .kvks files only.
Fixes#9183.
* CSS: blank line required at EOF if not present, but only if the CSS
file was not empty!
* Embedded HTML needs a blank line at EOF if not present
* `\r` is converted to `\\n` and `\n` is converted to ` `, to match
kmcomp
Fixes#9181.
Two issues:
* First use of a `call` statement had an incorrect index (misuse of
`push` return value)
* The .call_js files were incorrectly prepended with the basename of the
keyboard
Fixes#9178.
The values `pad`, `width`, and `hint` should not be emitted in a
compiled touch layout file, if they have default values of `0`, `0`,
or `""`, respectively. This matches the legacy kmcomp pattern.
Fixes#9177.
Some imported visual keyboards include `K_oDF` or `K_?C1` key codes.
These are not made visible in the UI but as they are "valid" VK codes,
they should not cause an error.
- remove async SectionCompiler.init() and all callers
- the usetparser lives on the DependencySections, initialized by kmc-ldml (and by the test harnesses)
for: #7377
- update docs on UnicodeSet
- uset parser: fix/clarify that the wasm interface takes a bufferSize, but the ts interface takes a range count. This was muddled before.
For: #7377