Skip to content

Conversation

@mcdurdin
Copy link
Member

Design document: https://docs.google.com/document/d/15EjtSH7NAsGrdapfB3E7SlS6CqI-2zPy3PNyfUiAv54/edit?tab=t.0

Relates-to: #12620
Relates-to: #12610
Relates-to: #12695
Relates-to: #13424
Relates-to: #12741
Relates-to: #9055
Relates-to: #9021
Build-bot: skip
Test-bot: skip

Relates-to: #12620
Relates-to: #12610
Relates-to: #12695
Relates-to: #13424
Relates-to: #12741
Relates-to: #9055
Relates-to: #9021
Build-bot: skip
Test-bot: skip
@keymanapp-test-bot
Copy link

User Test Results

Test specification and instructions

User tests are not required

@github-actions github-actions bot added the docs label Sep 29, 2025
@keymanapp-test-bot keymanapp-test-bot bot added this to the A19S13 milestone Sep 29, 2025
@mcdurdin mcdurdin added epic A long lived branch, home for a new feature, usually will have child PRs based on it common/ labels Sep 29, 2025
mcdurdin and others added 6 commits September 30, 2025 14:13
These two files were largely the same, with legacy_kmx_file.h trailing
kmx_file.h in features. The primary difference was that
legacy_kmx_file.h still had Windows-specific types, but the types in
km_types.h made this a drop-in replacement.

Test-bot: skip
Use legacy_kmx_memory.h instead of mc_kmxfile.h for mcompile. Removing
the unused 'hbitmap' and replacing with the binary file dword data.

Test-bot: skip
Add version 19.0 flags and metadata relating to embed-osk-in-kmx to
kmx_file.h and corresponding headers for other languages.

Test-bot: skip
…to-embed-osk-in-kmx

auto: A19S13 merge master into embed-osk-in-kmx 🔱
@github-actions github-actions bot added common/ and removed common/ labels Oct 10, 2025
@darcywong00 darcywong00 modified the milestones: A19S13, A19S14 Oct 11, 2025
…-legacy_kmx_file.h

refactor(windows): consolidate legacy_kmx_file.h into kmx_file.h 🔱
Build-bot: skip
…-mc_kmxfile.h

refactor(windows): consolidate mc_kmxfile.h 🔱
…g-in-header

feat(common): add KF_KMXPLUSOSK and VERSION_190 to kmx_file.h 🔱
Split kmx-plus.ts into two files, so that the in-memory parsed
representation of the file can be maintained separately from the binary
structures, which need to maintain version metadata.

This refactor makes no functional changes.

Test-bot: skip
Build-bot: build
Special key caps such as '*ZWNJ*' are defined in a number of places in
the source. In theory, we could DRY these definitions out, but that
would add a number of unhelpful dependencies or take considerable time
to implement. So, for now I opted to write a unit test to compare the
definitions as found in the following files, treating web's definition
as primary:

 *   web/src/engine/osk/src/specialCharacters.ts
 *   developer/src/tike/xml/layoutbuilder/constants.js
 *   developer/src/kmc-kmn/kmw-compiler/constants.ts
 *   developer/docs/help/reference/file-types/keyman-touch-layout.md
 *   core/include/ldml/keyman_core_ldml.ts

Note that the keyman_core_ldml.ts file changes are not included in this
commit, and hence the unit test for it is currently skipped. This will
be enabled in a subsequent commit along with other KMX+ changes to
support epic/embed-osk-in-kmx.

Test-bot: skip
@keyman-server keyman-server modified the milestones: A19S16, A19S17 Nov 22, 2025
mcdurdin and others added 12 commits November 24, 2025 04:58
…k-extra-data-and-move-helpers-for-embed

refactor(developer): pass extra data from kmcmplib and move helpers for embed 🔱
Add a function to inject KMX+ data into a .kmx file, along with unit
tests. Groundwork for embedding the OSK into KMX.

Test-bot: skip
Implement the conversion from .kvk into KMX+ format, and embed the
result into the .kmx file. This change does not yet support &displaymap.

Move some virtual key modifier state helpers out of
visual-keyboard-compiler.ts and into shared module
modifier-key-constants.ts.

This change also flags the need to update the package compiler to
rewrite the font metadata into the KMX+ tables.

Test-bot: skip
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
In order to avoid embedding unused tables of constants into KeymanWeb,
we need to make their declarations pure.

https://esbuild.github.io/api/#tree-shaking-and-side-effects
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
…ect-kmxplus-into-kmx

feat(developer): inject KMX+ into .kmx 🔱
…vert-kvk-into-kmx-plus

feat(developer): convert .kvk into KMX+ and embed into .kmx 🔱
…o-embed-osk-in-kmx

auto: A19S17 merge master into embed-osk-in-kmx 🔱
@keyman-server keyman-server modified the milestones: A19S17, A19S18 Dec 6, 2025
@keyman-server keyman-server modified the milestones: A19S18, A19S19 Dec 21, 2025
@keyman-server keyman-server modified the milestones: A19S19, A19S20 Jan 3, 2026
…o-embed-osk-in-kmx

auto: A19S20 merge master into embed-osk-in-kmx 🔱
@keyman-server keyman-server modified the milestones: A19S20, A19S21 Jan 16, 2026
@keyman-server keyman-server modified the milestones: A19S21, A19S22 Jan 31, 2026
…o-embed-osk-in-kmx

auto: A19S21 merge master into embed-osk-in-kmx 🔱
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

3 participants