The updates all the apis so that the basekeyboardid or klid
can be passed in as an argument. This in needed so that
elevated process required to compile the keyboard has
the call users keyboard base id.
What we was needed was the ability to recompile
installed keyboards against a basekeyboard id.
MCompileForBaseKeyboard which will take the
base keyboard id. This allows the call to be done
elevated and seperates out the actuall selecting
the base keyboard.
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
# Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
# Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
As we have a lot of code that does not have comprehensive null checking,
and TypeScript has moved to enable this by default in recent versions,
for now, disable at top-level to avoid being spammed with unhelpful null
errors in editors.
Test-bot: skip
Build-bot: skip
When the user clicks either Shift key on the OSK, that emits a VK_LSHIFT
down key event. If the user subsequently presses and releases the Right
Shift key on their hardware keyboard, that does not reset the isDown
state for the Left Shift key, so the key is not released on the OSK, and
the state becomes inconsistent for apps also.
This change emits a key up event, if when Right Shift is released,
Keyman detects that Left Shift is still "down". Note that if the user
presses and holds Left Shift, and presses and releases Right Shift, the
left shift state will be reset before the users releases Left Shift. But
that's a pathological state!
Fixes: #12611
Deprecate the following obsolete functions and properties:
* `keyman.helpURL`
* `keyman.util.rgba`
* `keyman.util.toFloat`
* `keyman.util.toNumber`
* `keyman.util.toNzString`
Use correct language for code blocks in Keyman Engine for Web
documentation.
Test-bot: skip
The `loaduserinterface` and `unloaduserinterface` events were
incompletely implemented, and the documentation was incomplete. This
change:
1. ensures `loaduserinterface` is called any time a UI is set, either
during initialization or when the property is set later.
2. ensures `unloaduserinterface` is called immediately before a UI is
shutdown.
3. updates documentation
4. removes misleading commented code in kmwuifloat.ts
Test-bot: skip
KeymanWeb has long had `keyman.build` and `keyman.version`. Neither of
these properties expose the full version string, and consumers are
forced to manipulate them to get a partial version string.
This change deprecates both these properties, and introduces a new
`keyman.versionInfo` property, which returns an object with all the
version information, most importantly `full`.
Update documentation and add a unit test for this, following the unit
test pattern established throughout Keyman of a unit test filename
matching the implementation class. The `KeymanEngineBase` class is a
little difficult to instantiate so this unit test module currently has
a minimal instantiation which provides enough to fulfill the one
included test.
Test-bot: skip