Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Eberhard Beilharz f23dd7563f
refactor(linux): Implement ordered output sentinel in keyman-system-service
This change allows to press F24 as ordered output sentinel from
keyman-system-service.

This is part of implementing serialized output with keyman-system-service
instead of requiring a patched ibus.

The problem both approaches try to solve is that with non-compliant apps
it is not possible to directly delete characters from the context. Instead
we have to emit a backspace key before we can commit the new
characters. However, the backspace key press goes through a different
code path in ibus and so it can happen that the commit gets processed
before the backspace which then deletes from the characters we just
added instead of from the old content.

The previous implementation solved this by forwarding a F24 ordered output
sentinel key to ibus and relying on the patched ibus to send that back to
us. When we received the F24 key we committed the characters that we
queued when we forwarded the F24 key (implemented in #7079).

The new approach implemented in this change instead sends the F24 ordered
output sentinel key through keyman-system-service and so follows the
regular key processing without requiring a patched ibus to send the key
back to us. The rest of the algorithm stays mostly the same: when we receive
the F24 key we commit the characters previously queued. The difference to
the previous implementation is that we now also queue the backspace keys
that we generate.

Part-of: #10799
2025-02-05 11:42:04 +01:00
.github chore(linux): add support for Ubuntu 25.04 Plucky Puffin 2024-11-14 19:31:53 +01:00
android Merge pull request #13033 from keymanapp/android-titles-docs 2025-01-31 09:14:25 +07:00
common Merge pull request #13076 from keymanapp/feat/developer/13073-kmc-copy-ui-in-developer 2025-02-05 11:30:22 +07:00
core chore(developer): update comments per review 2025-01-30 23:13:36 -06:00
developer Merge pull request #13080 from keymanapp/chore/developer/add-verbose-logs-for-copier 2025-02-05 11:30:33 +07:00
docs refactor: move langtags to @keymanapp/langtags npm module 2025-01-27 09:59:38 +07:00
ios Merge pull request #13077 from keymanapp/chore/mac/12696-xcode-16-upgrade 2025-02-05 13:14:15 +07:00
linux refactor(linux): Implement ordered output sentinel in keyman-system-service 2025-02-05 11:42:04 +01:00
mac Merge pull request #13077 from keymanapp/chore/mac/12696-xcode-16-upgrade 2025-02-05 13:14:15 +07:00
oem/firstvoices chore(mac): update sentry version for firstvoices 2025-02-05 12:12:57 +07:00
resources Merge pull request #13099 from keymanapp/feat/developer/12749-ldml-local-import-workaround 2025-01-31 11:16:12 -06:00
web Merge pull request #12927 from keymanapp/fix/web/context-match-applied-suggestions 2025-02-03 15:11:01 +07:00
windows Merge pull request #13026 from keymanapp/windows-titles 2025-01-31 09:14:42 +07:00
.clang-format chore(common): update C/C++ formatting options 2024-06-19 20:19:12 +02:00
.editorconfig chore(linux): Address a few more lintian warnings 2022-03-15 15:32:10 +01:00
.eslintrc.cjs chore(developer): add eslint devDependency for kmc 2023-04-25 13:44:56 +07:00
.flake8 chore(linux): Add integration tests for ibus-keyman 2021-11-04 09:22:28 +01:00
.gitignore chore(common): create flag file without node 2024-09-30 14:51:24 +02:00
.nycrc.json feat(developer): fixup and prepare build scripts and docs for kmc 2022-09-19 06:36:06 +10:00
.shellcheckrc chore(linux): Properly fix shellcheck SC1091 warnings 2023-05-11 11:59:15 +02:00
build.sh feat(common): add top-level build.sh 2024-08-07 10:46:39 +07:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-10-08 10:46:53 +11:00
configure-repo.sh chore: update docs and non-standard readlink refs 2023-02-22 10:41:54 +07:00
CONTRIBUTING.md chore(common): Add link to onboarding doc to CONTRIBUTING.md 2024-11-25 16:11:12 +01:00
crowdin.yml fix(mac): Specify el.lproj folders 2024-08-07 10:01:42 +07:00
HISTORY.md auto: increment master version to 18.0.185 2025-02-04 13:02:14 -05:00
LICENSE.md chore: rename SIL International to SIL Global 2024-08-13 12:04:53 +08:00
package-lock.json chore(developer): use langtags.json for kmc-generate language names 2025-01-27 11:47:25 +07:00
package.json chore: include sourcemap-path-remapper tool in package.json 2025-01-27 10:22:28 +07:00
README.md chore: rename SIL International to SIL Global 2024-08-13 12:04:53 +08:00
TIER.md Update TIER.md 2022-11-14 07:34:26 +11:00
tsconfig.base.json refactor: move langtags to @keymanapp/langtags npm module 2025-01-27 09:59:38 +07:00
tsconfig.json chore: address review comments 2025-01-30 14:00:34 +07:00
VERSION.md auto: increment master version to 18.0.185 2025-02-04 13:02:14 -05:00

Keyman

Keyman makes it possible for you to type in any language on Windows, macOS, Linux, iPhone, iPad, Android tablets and phones, and even instantly in your web browser. Create keyboard layouts with Keyman Developer and share them with the community in the keyboards repository. The Keyman Community have already contributed keyboard layouts for over 2,000 languages!

License

Copyright (c) SIL Global.

Keyman is an open source project distributed under the MIT license.

Get Involved

Development Status

Important Links