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.) |
||
|---|---|---|
| .github | ||
| android | ||
| common | ||
| developer | ||
| docs | ||
| ios | ||
| linux | ||
| mac | ||
| oem/firstvoices | ||
| resources | ||
| web | ||
| windows/src | ||
| .clang-format | ||
| .editorconfig | ||
| .flake8 | ||
| .gitignore | ||
| configure-repo.sh | ||
| crowdin.yml | ||
| HISTORY.md | ||
| lerna.json | ||
| linux.code-workspace | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| TIER.md | ||
| VERSION.md | ||
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
Development Status on status.keyman.com
| Platform | Alpha | Beta | Stable |
|---|---|---|---|
| Windows | |||
| macOS | |||
| Web | |||
| Android | |||
| iOS | |||
| Linux |
Getting Started
Desktop Platforms
Web & Mobile Platforms
Release Types
Each platform maintains multiple types of releases:
- Stable: A released version. On a
stableorstable-<version>branch. - Beta: A version that is nearing full "stable" release. On the
betabranch. - Alpha: Contains the very latest code. These versions are published daily whenever the code changes. On
masterbranch.
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.
