Commit graph

1123 commits

Author SHA1 Message Date
Marc Durdin
068da83e50 chore: Merge branch 'epic/web-core' into chore/merge-master-into-web-core 2025-03-14 11:05:17 +07:00
Marc Durdin
c35e0dac5f chore: Merge branch 'epic/web-core' into chore/merge-master-into-web-core 2025-03-14 11:02:37 +07:00
Marc Durdin
27e53011af
Merge pull request #13450 from keymanapp/fix/core/13419-uset-unaligned
fix(core): unalign `usetCount` and `rangeCount`
2025-03-13 13:19:04 +07:00
Marc Durdin
3cdaa2fee0 chore(core): add clean actions for :mac and :win targets
Fixes: #13381
2025-03-10 07:53:32 +07:00
Marc Durdin
577cbd3a07 fix(core): unalign usetCount and rangeCount
Fixes: #13419
2025-03-07 12:50:22 +07:00
Eberhard Beilharz
5c7030ffa2
refactor(core): address code review comment 2025-03-05 18:05:35 +01:00
Marc Durdin
03001bd971 chore(common): add unit test for nul and context() in context part of rule
The compiler and Core appear to be working correctly in this situation;
this test verifies Core's behaviour.

Fixes: #13299
2025-03-04 11:22:35 +01:00
Eberhard Beilharz
b2cccdd996
feat(core): expose context and actions APIs to WASM 2025-03-03 11:29:17 +01:00
Eberhard Beilharz
c297c66a64
feat(core): expose state and event API to WASM 2025-03-03 11:28:57 +01:00
Eberhard Beilharz
fe3e02cf9e
feat(web): implement getting properties of KMXKeyboard 2025-03-01 17:18:31 +01:00
Marc Durdin
d83454ab77 chore(windows): ensure dependencies for keyman32 exclude core:wasm
Fixes: #13374
2025-02-28 17:52:27 +01:00
Marc Durdin
b973bcc0d9 fix(core): include nul in context offset calculations in kmx processor
Two separate bugs addressed, with `index()` references and with
`context()` references -- both have the same root cause, of not taking
`nul` at the start of the context into account (as `nul` is not included
in the `m_miniContext` member, being a non-character). We already fixed
this issue for `if()` quite a long time ago, and some of the same
patterns can be with `m_miniContextIfLen` for example.

Fixes: #13304
Fixes: #13316
2025-02-21 17:17:19 +07:00
Marc Durdin
2b9b8eb419 chore(core): add unit tests to validate nul with index and context
Add 4 test keyboards to validate `nul` and `if` used in conjunction with
`index` and `context` and corresponding references in core unit tests.

Add a script to rebuild baseline keyboards using a copy of kmcomp.exe
16.0.138; this is setup and tested only on Windows (YMMV on WINE, etc).

Add the 4 additional baseline test keyboards to kmcmplib unit tests for
build consistency between kmcomp 16 and kmcmplib 18 (all pass).

Note: two of the new Core tests currently fail. This is expected, see
issue #13304.

Fixes: #13303
2025-02-21 13:06:29 +07:00
Marc Durdin
130e697d40
Merge pull request #13230 from keymanapp/chore/merge-master-into-web-core
chore: merge master into web-core
2025-02-14 05:30:04 +07:00
Steven R. Loomis
b54ea40770 chore(developer): update comments per review
- note that 45,46,47 are the same data and so aliased

Fixes: #11307
2025-01-30 23:13:36 -06:00
Steven R. Loomis
b741a88ca0 chore(core,developer): treat CLDR v45, 46, 46.1, 47 as 46
Fixes: #11307
2025-01-30 15:42:30 -06:00
Steven R. Loomis
2c32fb7903 chore(resources, developer,core): CLDR 46 and workaround
Fixes: #11307
- import from CLDR 46, mostly unchanged

Fixes: #12749
- workaround LDML DTD bug CLDR-18138 where base= does not imply base=cldr
2025-01-30 15:41:34 -06:00
Eberhard Beilharz
fbfa3b5cc2
feat(core): add unit tests for the WASM version of Core API
Note that this requires adding an additional `km-core-node.mjs`
module (since the tests are run with node). We can't create one that
would work for both web and node - if we do trying to load the `km-core.js`
fails with `km-core.mjs: Could not resolve import "module".`
2025-01-20 18:22:56 +01:00
Joshua Horton
0d0c339f67
Merge branch 'epic/web-core' into chore/merge-master-into-web-core 2025-01-17 11:37:51 +07:00
Eberhard Beilharz
b84b651590
Merge pull request #11397 from keymanapp/chore/linux/cicontainer
chore: Add docker images for building the different platforms
2025-01-16 12:31:29 +01:00
Eberhard Beilharz
5a0cb9bff5
Merge pull request #12823 from keymanapp/feat/web/loadkmx
feat(web): load .kmx keyboard from blob 🎼
2025-01-15 10:41:36 +01:00
Eberhard Beilharz
9c8ad2e783
fix(core): fix compile error
Compiling the tests failed in the container.
2025-01-08 17:08:57 +01:00
Eberhard Beilharz
2e5722705b
feat(web): address code review comments 2025-01-06 15:12:09 +01:00
Eberhard Beilharz
69cb2fda59
fix(core): use a specific flag for adjusting alignments
This change adds a new flag `KMX_REQUIRES_REALIGNMENT` instead of the
previous `KMX_64BIT` for the cases where we have to re-align the KMX data
at pointer boundaries. Renamed because Emscripten also needs the
re-alignment even though it's 32-bit.

Addresses code review comments.
2025-01-06 14:29:57 +01:00
Eberhard Beilharz
a072171ec8
feat(web): load .kmx keyboard from blob
This change adds the web side of loading a .kmx keyboard from a
blob. It also replaces the `CoreProcessor` class with `CoreFactory`
that allows to directly use the methods defined in WASM without
having to add another wrapper for each method.
2024-12-20 18:01:42 +01:00
Eberhard Beilharz
6bef09f68b
fix(core): work around alignment problem when using Emscripten
The data we read from the KMX file is not in places 32-bit aligned, e.g.
`dpGroupArray` will often start at a 16-bit boundary. Emscripten doesn't
like this and will abort the program if `SAFE_HEAP=1` is defined.

This change works around the problem by calling `CopyKeyboard` and thus
expanding the structure.

See #12844.
2024-12-20 18:01:41 +01:00
Meng-Heng
328687435d chore: change to https in docs 2024-12-17 15:27:07 +07:00
Eberhard Beilharz
d48acd3204
chore(web): rename type library to match target name
This change renames the type library from `km-core=-interface.d.ts`
to `keymancore.d.ts` to match the name of the target (`keymancore`)
to make it more obvious where this comes from and where/how it gets
build.
2024-12-16 18:01:09 +01:00
Eberhard Beilharz
06a8c7a867
feat(core): properly implement converting blob 2024-12-16 17:27:02 +01:00
Eberhard Beilharz
193dd77ffb
fix(core): fix build of unit tests
Without this change building unit tests fail with an error that
`--shared-memory` is disallowed.
2024-12-16 17:27:02 +01:00
Eberhard Beilharz
067c8a0a5b
chore(core): cleanup meson.build 2024-12-16 17:25:18 +01:00
Eberhard Beilharz
e069c3ad2a
chore(core): remove meson warnings for wasm builds
Replace deprecated function calls. Also add `strip` command to wasm
build defaults.
2024-12-12 19:48:13 +01:00
Eberhard Beilharz
1bedc62b57
feat(core): expose km_core_keyboard_load_from_blob to WASM 2024-12-09 16:06:31 +01:00
Steven R. Loomis
de3397b476
Merge pull request #12644 from keymanapp/fix/core/12298-get-key-list
fix(core): implement ldml_processor::get_key_list() 🙀
2024-12-09 08:14:44 -06:00
Steven R. Loomis
feba97979a fix(core): update get_key_list to account for other combinatorics
- yes, expand 'other' to all possible combinations
- use ALT  and CTRL instead of RALT,LALT and RCTRL,LCTRL in the key list (reduce expansions up to 4x)

Fixes: #12298
2024-12-06 12:24:53 -06:00
Eberhard Beilharz
8252a95f61
chore: Merge remote-tracking branch 'origin/master' into chore/merge-master-into-web-core 2024-12-06 09:12:36 +01:00
Marc Durdin
88f20d7bf7
Merge pull request #12769 from keymanapp/chore/core/12497-remove-km_core_keyboard_load
chore(core): remove `km_core_keyboard_load` API
2024-12-05 23:51:27 +01:00
Marc Durdin
e6cf6186c2 chore: Merge remote-tracking branch 'origin/epic/web-core' into chore/merge-master-into-web-core 2024-12-05 15:04:11 +07:00
Sabine
b7990d1b46 chore(core): Add link to Keyman Glossary 2024-12-05 06:27:22 +01:00
Marc Durdin
5ec2ce7863 chore: address review comments 2024-12-05 05:35:27 +07:00
Steven R. Loomis
da7c864f54 Merge remote-tracking branch 'origin/master' into fix/core/12298-get-key-list 2024-12-04 13:58:24 -06:00
Marc Durdin
4c3b2132ee chore(core): remove km_core_keyboard_load API
Fixes: #12497
2024-12-04 13:38:07 +07:00
Marc Durdin
f97a19db91 chore(core): build parameters 2024-12-02 07:21:30 +07:00
Marc Durdin
9a01ac166d chore(core): Merge branch 'master' into fix/core/12619-disable-assertions-vcwin-release-build 2024-12-01 16:17:21 +07:00
Steven R. Loomis
9e2b8d0d8c feat(core): improvements for get_key_list()
- reintroduce example keycaps

Fixes: #12298
2024-11-29 18:28:05 -06:00
Steven R. Loomis
7f3bd30961 feat(core): improvements for get_key_list()
- expand OTHER and ALT / CTRL appropriately
- add KM_CORE_MODIFIER_NONE=0
- disable test of get_key_list() for now

Fixes: #12298
2024-11-29 17:25:31 -06:00
Steven R. Loomis
d92dc175c2 chore(core): update to ldmL_test_source.cpp 2024-11-29 15:47:30 -06:00
Steven R. Loomis
29db34f252 chore(core): update to ldmL_test_source.cpp 2024-11-29 15:40:48 -06:00
Steven R. Loomis
c9643642a8 Merge remote-tracking branch 'origin/master' into fix/core/12298-get-key-list 2024-11-29 15:33:53 -06:00
Eberhard Beilharz
b8c120dd5c
Merge pull request #12721 from keymanapp/chore/core/cherry-pick/load-from-blob-api
feat(core,linux,developer,windows): implement loading KMX from blob 🍒
2024-11-29 12:40:51 +01:00