feat(windows): emit keystrokes for imx keydown/up actions 🥑#6137
Conversation
Relates to #3621. Initial draft of keyboard to test start-of-sentence detection.
Relates to #3621. This adds basic compiler support for the `begin newContext` and `begin postKeystroke` statements, along with the corresponding `gn` and `gpk` entry points in the compiled JavaScript keyboard. TODO: `readonly` semantics, usage constraints, `&layerChanged`.
Relates to #3621. Adds basic support for `begin newContext`.
Relates to #3621. This adds support for `begin postKeystroke` to KeymanWeb. This is now close to final, apart from support for `&layerChanged`.
Relates to #3621. Add support for `&layerChanged` system store. This store is set to `1` before a `begin postKeystroke`, if the keystroke it follows resulted in a layer change, either programatically through a keyboard rule, or through a `nextlayer` property of the touched key.
Relates to #3621. Adds `readonly` group support and verifies that keyboards meet constraints around usage of these groups. (Note: fixes test_valid.kps and test.bat which seemed to have some invalid tests?)
Picked up in development of #5963.
…-overflow-1 fix(developer): kmdecomp string overflow
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Relates to #3621. Adds `&layoutChanged`, `begin newcontext`, `begin postkeystroke` support to IDE editor and keyword help.
Relates to #3620. Allows keyboard developers to add a Caps Lock layer (called 'caps'), which will be accessible through double-tap of Shift key, in an upcoming PR. Also adds test keyboards to exercise the functionality when it is available.
Fixes #3620. Implements the Caps Lock layer support and the double-tap gesture on the shift key to access it. The double-tap gesture has been implemented with a view to extension to support other multi-tap gestures in the future. However, for now, it is limited to supporting the Shift key, if and only if the keyboard includes a Caps layer. The reason for this v15 limitation is that multi-tap on regular keys would involve either rewinding the previous keystroke (the first tap), or forcing keyboard developers to consider 'rota' style rules in their keyboards to support the multi-tap gestures, as we need to make sure that the first tap is accepted and processed for immediate feedback. This needs more design, to avoid unnecessary complexity in the keyboards and/or the rewinding of the keystroke (even though that is conceptually supported in Keyman Engine for Web already). Basically, we don't want to constrain the way that a keyboard author may use the multi-tap gesture by hard-coding the rewind, but neither do we want to make all multi-tap gestures needlessly complex to author. The shift key (and other modifiers, potentially in future) needs special support for multi-tap as the key that is being tapped changes with the layer change. This is currently managed through recognising `K_SHIFT` in the key id. I have tried to follow the `PendingGesture` pattern for multi-tap, and the gesture itself supports a series of taps, not just a double-tap. The maximum time to complete the tap series is 125msec * number-of-taps, so for a double-tap is 250msec. The changes to support a Caps Lock layer itself were minimal; just adding the `text.KeyboardProcessor.getStateFromLayer` function and calling it during `KeyEvent` construction. The remaining changes relate to the multi-tap gesture. Minor changes: * I moved `constructNullKeyEvent` to `KeyEvent` in order to make it more accessible to other classes. * The multi-tap gesture does not have a promise to complete, so that is now an optional member of the `PendingGesture` interface.
Removed the 'heuristic' test as it is probably not appropriate for testing. Removed the mobile-specific platform from the touch layout as it did not include a caps layer (and should have been identical to the tablet one anyway).
…-ide-support feat(developer): support for start-of-sentence in IDE 🍆
Relates to #3621. Ensures that the `begin postKeystroke` entry point is called when the user accepts a suggestion.
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
Co-authored-by: rc-swag <58423624+rc-swag@users.noreply.github.com>
This checks in the crowdin strings for the locale `kr` for Kanuri. Does not include macOS. TODO: Check on adding ckl locale in XCode
This checks in the crowdin strings for the locale `mrt` for Marghi. Does not include macOS. TODO: Check on adding mrt locale in XCode
chore(linux): Update changelogs for 14.0.284 🍒
chore(linux): Revert workaround for Python bug
auto: increment master version to 15.0.184
|
This is currently failing to build on most platforms. Some suggestions:
|
|
This seems to extend feat/windows/imx-support-common-core but is not currently based on it, meaning we'd have to review a lot of code twice. Can you rebase? |
It is cut from |
fix: only auto-merge if `auto:` prefix in title
I fixed the linux / macos comments. I will hold off merging master untill you have a chance to review as it will show the differences between |
Fixes #6099
Moving this testing to #5936 As that branch needs this work merged to proceed.
@keymanapp-test-bot skip
Needs CapsTest User Testing
SUITE_SIMPLIFIED_CHINESE:
This keyboard will display the IMX window as soon as a string that matches the pinyin for one or more characters are typed.
For all these tests install the Simplified Chinese Keyboard cs-pinyin.cmp
TEST_SIMPLIFIED_ENTER_KEY:
Using Notepad or equivalent.
Type h a n z i - The IMX window will appear and in the top left the letters hanzi will be present
Choose the 5th option
Expected result: 汉字变换
Type
EnterThe cursor should be on a new line.
Type
hanziand press EnterExpected Result:
汉字变换
汉子