Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Marc Durdin 3d488c4ead feat(developer): Debugger keyboard options
Fixes #5642.
Relates to #5013.

This adds support for viewing and setting keyboard options in the
debugger. This initial implementation does not have 100% coverage of
keyboard options; specifically:

1. keyboard options are not saved between debug sessions.
2. in single-step debugging, the keyboard options will be shown as
   updated at the start of a keystroke batch, not when the rule which
   calls `set()` is fired. This level of granularity is not currently
   visible from the engine. It does not impact the correctness of the
   rule processing, only the view of the current state of the keyboard
   option.

I do not anticipate supporting either of those functions in 15.0.

This commit renames the existing `TfrmDebugStatus_Options` to
`TfrmDebugStatus_Platform`. I had originally planned to show both the
platform and keyboard options in the same debug status window, but for
space reasons I have split them. (I'm sorry if this makes reading the
PR a little more challenging.)

There is a significant amount of rewriting of kmxfileutils.pas and
debugkeyboard.pas. This extends support for working with kmx files and
modernises the code (e.g. using generics for list types).

Note in particular the `ExpandSentinel` function in kmxfileutils.pas.
This is copied from CompileKeymanWeb.pas but has different internal
references, so cannot be used as-is -- CompileKeymanWeb works with
intermediate object 'files' from the kmx compiler, whereas the debugger
works with final binary .kmx files which have a different in-memory
layout. It may be possible to unify this in future but that would
involve additional risk. (Seriously, I would probably prefer to rewrite
CompileKeymanWeb.pas in C++, Rust or TypeScript than to invest in
merging these two use cases.)
2021-08-27 11:07:00 +10:00
.github chore: Add cherry-pick label for cherry-pick PRs 2021-04-23 12:14:28 +02:00
android Merge pull request #5621 from keymanapp/chore/android/adjust-height-help 2021-08-24 15:37:43 +07:00
common auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
developer auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
docs Update docs/linux-packaging.md 2021-08-25 15:04:46 +02:00
ios chore(ios): Merge branch 'master' into fix/ios/stuck-settings-toggles 2021-08-19 07:53:45 +07:00
linux Merge pull request #5623 from keymanapp/chore/linux/sentry 2021-08-25 15:05:48 +02:00
mac Merge pull request #5324 from keymanapp/docs/shared-build-docs 2021-07-01 11:57:09 +10:00
oem/firstvoices docs(ios): tweaks build-script help for new flag 2021-08-06 08:16:58 +07:00
resources auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
web auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
windows/src feat(developer): Debugger keyboard options 2021-08-27 11:07:00 +10:00
.clang-format chore(common): Add C++ formatting rules 2021-07-29 18:50:25 +02:00
.editorconfig fix(linux): add more package requirements 2020-02-06 18:26:57 +01:00
.flake8 feat(linux): Install keyboard on Gnome 2020-06-24 19:13:40 +02:00
.gitignore chore(linux): Consolidate Debian source packages 2021-08-06 11:25:00 +02:00
configure-repo.sh feat(common): Support git worktree when configuring local hooks 2020-02-24 18:30:57 +01:00
crowdin.yml chore(common): Check in crowdin strings for Spanish (Latin America) 2021-06-11 07:33:56 +07:00
HISTORY.md auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
lerna.json auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04:00
linux.code-workspace default platform and baselayout for linux 2018-12-18 15:49:56 +07:00
package-lock.json chore(android/engine): Cleanup regex 2021-08-02 09:43:49 +07:00
package.json chore(common): updates lerna to 4.0.0 2021-07-02 14:47:28 +07:00
README.md chore: Add localization progress badge 2021-02-04 11:40:34 +07:00
TIER.md chore: update tier 2020-12-15 06:43:19 +11:00
VERSION.md auto: increment master version to 15.0.104 2021-08-25 14:01:37 -04: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 1,500 languages!

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

Get Involved

Crowdin

Get involved

Development Status on status.keyman.com

Platform Alpha Beta Stable
Windows Alpha Beta Stable
macOS Alpha Beta Stable
Web Alpha Beta Stable
Android Alpha Beta Stable
iOS Alpha Beta Stable
Linux Alpha Beta Stable

Getting Started

Desktop Platforms

Web & Mobile Platforms

Release Types

Each platform maintains multiple types of releases:

  • Stable: A released version. On a stable or stable-<version> branch.
  • Beta: A version that is nearing full "stable" release. On the beta branch.
  • Alpha: Contains the very latest code. These versions are published daily whenever the code changes. On master branch.

License

Copyright (c) 2018-2021 SIL International. All rights reserved.

Licensed under the MIT License.

Keyman for Linux is licensed under the MIT License apart from ibus-kmfl which is licensed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Notes for Contributors

When cloning this repo for local development on a Windows machine, take care not to place it overly deep in your file system. Some of the paths for compilation can push character lengths around 160 characters long, while certain operations on Windows systems may be limited to paths of 260 characters or less. For example, git clean on Windows with msys is limited due to dependence on older Windows APIs.