-
-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spec(web): Keyman Core integration for Web #11293
Comments
I don't think we want to do sniffing and eval as script. The pathway for loading a .js keyboard right now is injecting as a |
ermshiperete
added a commit
that referenced
this issue
Aug 20, 2024
- add temporary function to Core for this POC - add new CoreProcessor to access Keyman Core WASM - add unit tests for new core processor - add code to KeymanEngine and InputProcessor to load the new CoreProcessor - add web server to manual tests and new action `start` to build script This change requires the manual tests to be loaded from a web server instead of loaded as file, because otherwise the wasm code won't be loaded. Currently we always load CoreProcessor. This should be improved in a future change to only load when it is actually needed. Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Aug 20, 2024
- add temporary function to Core for this POC - add new CoreProcessor to access Keyman Core WASM - add unit tests for new core processor - add code to KeymanEngine and InputProcessor to load the new CoreProcessor - add web server to manual tests and new action `start` to build script This change requires the manual tests to be loaded from a web server instead of loaded as file, because otherwise the wasm code won't be loaded. Currently we always load CoreProcessor. This should be improved in a future change to only load when it is actually needed. Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Aug 20, 2024
- add temporary function to Core for this POC - add new CoreProcessor to access Keyman Core WASM - add unit tests for new core processor - add code to KeymanEngine and InputProcessor to load the new CoreProcessor - add web server to manual tests and new action `start` to build script This change requires the manual tests to be loaded from a web server instead of loaded as file, because otherwise the wasm code won't be loaded. Currently we always load CoreProcessor. This should be improved in a future change to only load when it is actually needed. Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Aug 20, 2024
- add temporary function to Core for this POC - add new CoreProcessor to access Keyman Core WASM - add unit tests for new core processor - add code to KeymanEngine and InputProcessor to load the new CoreProcessor - add web server to manual tests and new action `start` to build script This change requires the manual tests to be loaded from a web server instead of loaded as file, because otherwise the wasm code won't be loaded. Currently we always load CoreProcessor. This should be improved in a future change to only load when it is actually needed. Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Aug 20, 2024
- add temporary function to Core for this POC - add new CoreProcessor to access Keyman Core WASM - add unit tests for new core processor - add code to KeymanEngine and InputProcessor to load the new CoreProcessor - add web server to manual tests and new action `start` to build script This change requires the manual tests to be loaded from a web server instead of loaded as file, because otherwise the wasm code won't be loaded. Currently we always load CoreProcessor. This should be improved in a future change to only load when it is actually needed. Part-of: #11293
Draft
ermshiperete
added a commit
that referenced
this issue
Sep 23, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 23, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 23, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 23, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 23, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Sep 24, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Part-of: #11293
ermshiperete
added a commit
that referenced
this issue
Nov 27, 2024
- split keyboard loading into loading KMX file into blob and then loading the keyboard processor from the blob. - deprecate `km_core_keyboard_load` - move file access next to deprecated method. This is now the only place that loads a file in Core; unit tests have some more places that load files. - introduce GTest and add unit tests for loading from blob Cherry-picked from `epic/web-core` branch. Cherry-Pick-Commit: 1deaa32 Cherry-Pick-Commit: 59019cc Cherry-Pick-Commit: bc46458 Cherry-Pick-Commit: d06aa29 Cherry-Pick-Commit: 1c88166 Cherry-Pick-Commit: 069cd21 Cherry-Pick-Commit: 052ae2e Cherry-Pick-Commit: 11a2a3b Part-of: #11293 Part-of: #8093
This was referenced Dec 11, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Introduction
Currently Keyman Core is only used on the desktop platforms (Windows, Mac, Linux). Keyman Core supports KMN as well as LDML keyboards.
Keyman Engine for Web has a separate implementation that only supports KMN based keyboards. This is also used by Keyman for Android and Keyman for iOS.
Keyman Engine for Web currently doesn't use the .kmx keyboard files but .js files that get generated by
kmc
as well.Keyman Core doesn't deal with touch and OSK aspects of a keyboard.
LDML keyboards use an enhanced version of KMX (KMX+).
We would like to integrate Keyman Core in Keyman Engine for Web.
Architecture
Implementation
Refactorings/Cleanup in Keyman Engine for Web (#11374)
move
gesture-recognizer
,input-processor
,keyboard-processor
fromcommon
toweb/src
(do we still need{input,keyboard}-processor
in the future or will this be replaced by Core?)for clarity, renameKeymanEngine.core
toKeymanEngine.inputProcessor
rename
keyboardCache
tokeyboardStore
(andStubAndKeyboardCache
toStubAndKeyboardStore
?)chore(web): restructure repo #11374
Changes required to Keyman Engine for Web
nothingDeletable
- make sure LDML's return is understood by the K_BKSP fixup codeKeyboardHarness
(orKeyboardInterface
, or in-between) for LDMLKeyboardHarness
->AbstractKeyboardInterface
->KeyboardInterface
CoreKeyboardInterface
KeyboardProcessor
needs to know when to loadCoreKeyboardInterface
KeyboardProcessor.activeKeyboard
called by another layer.kmx
instead of a.js
KMX Loader
Keyman Engine for Web will load .kmx files instead of .js. The .kmx loader should detect at load time if first bytes are
KXTS
and treat it as kmx, otherwisereject it and it will be loaded by the existing .js loader.eval()
as a scriptChanges required to Core API
layerId
Related issues and discussions
The text was updated successfully, but these errors were encountered: