Skip to content
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

epic: kmc-kmw KeymanWeb compiler in Typescript 🗜 #8954

Merged
merged 306 commits into from
Aug 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
306 commits
Select commit Hold shift + click to select a range
fc043c9
chore: tweak CompilerLogLevel
mcdurdin Jun 9, 2023
16c40d0
Merge pull request #8951 from keymanapp/feat/KmxFileReader-error-hand…
mcdurdin Jun 9, 2023
db06dfd
chore(developer): Merge branch 'feature-kmc-kmw' into feat/developer/…
mcdurdin Jun 9, 2023
cc95611
chore: remove commented code
mcdurdin Jun 10, 2023
459f42b
chore(developer): refactor CompilerOptions
mcdurdin Jun 9, 2023
8bfd4c0
chore(developer): refactor LdmlCompilerOptions
mcdurdin Jun 10, 2023
d2029c4
chore(common): Create file-types.ts module
mcdurdin Jun 12, 2023
01b5751
chore: address review comments
mcdurdin Jun 12, 2023
8a4c005
chore(common): define constants for file types
mcdurdin Jun 12, 2023
a96c38b
Merge pull request #8723 from keymanapp/feat/developer/kmc-analyze
mcdurdin Jun 12, 2023
0b5b674
Merge pull request #8968 from keymanapp/chore/developer/enable-eslint…
mcdurdin Jun 12, 2023
66f2489
Merge pull request #8982 from keymanapp/chore/developer/refactor-comp…
mcdurdin Jun 12, 2023
7ad2df0
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-fe…
mcdurdin Jun 12, 2023
f04900a
chore(developer): fixup .kpj reference
mcdurdin Jun 12, 2023
769a08f
chore(developer): remove old comment
mcdurdin Jun 12, 2023
f6900d9
chore(developer): merge kmc-kmw messages with kmc-kmn messages
mcdurdin Jun 12, 2023
b050d01
chore(developer): prevent recursion when analyzing projects
mcdurdin Jun 12, 2023
da29d82
chore(developer): complete error checking in kmc-analyze
mcdurdin Jun 12, 2023
6ac3ccb
Merge pull request #8983 from keymanapp/chore/merge-master-into-featu…
mcdurdin Jun 12, 2023
d684e58
Merge branch 'feature-kmc-kmw' into chore/common/web/file-types-modul…
mcdurdin Jun 12, 2023
8306c5f
Merge pull request #8987 from keymanapp/chore/developer/merge-kmw-err…
mcdurdin Jun 12, 2023
b29c78a
chore: remove redundant check
mcdurdin Jun 12, 2023
f7b524b
Merge pull request #8984 from keymanapp/chore/common/web/file-types-m…
mcdurdin Jun 13, 2023
d2bf05c
Merge pull request #8991 from keymanapp/chore/developer/prevent-proje…
mcdurdin Jun 13, 2023
d19f902
Merge pull request #8994 from keymanapp/chore/developer/complete-erro…
mcdurdin Jun 13, 2023
fac3cb0
chore(developer): fixup merge bump
mcdurdin Jun 13, 2023
9c376ab
Merge pull request #9006 from keymanapp/chore/developer/fixup-merge-bump
mcdurdin Jun 13, 2023
df4ec7d
feat(developer): analyze osk char use continued
mcdurdin Jun 14, 2023
3d56bc6
chore(common): export KvksFileWriter
mcdurdin Jun 14, 2023
ce90742
feat(developer): support to rewrite .kvks and .keyman-touch-layout wi…
mcdurdin Jun 14, 2023
e9391f5
chore(developer): refactor osk rewriter
mcdurdin Jun 17, 2023
adfa032
feat(developer): add &displayMap system store
mcdurdin Jun 17, 2023
2ca191d
chore(developer): document displaymap format
mcdurdin Jun 18, 2023
6462b5f
refactor(developer): kmc-kmn now builds .js when needed
mcdurdin Jun 19, 2023
cf91dd3
chore(developer): remove extraneous comment
mcdurdin Jun 19, 2023
0bd2ca4
refactor(developer): kmc-kmw becomes component of kmc-kmn
mcdurdin Jun 20, 2023
c68403f
chore(developer): validate displaymap schema
mcdurdin Jun 20, 2023
608df3b
chore: fix typo
mcdurdin Jun 20, 2023
5c62ed7
Merge pull request #9016 from keymanapp/feat/developer/analyze-char-u…
mcdurdin Jun 20, 2023
198ba46
Merge pull request #9032 from keymanapp/feat/developer/kmc-display-ma…
mcdurdin Jun 20, 2023
5732043
Update developer/src/kmc-kmn/test/kmw/test-compiler-manual.ts
mcdurdin Jun 20, 2023
fa38e30
Merge pull request #9038 from keymanapp/refactor/developer/kmc-kmn-ca…
mcdurdin Jun 20, 2023
dae94fd
chore(developer): move constants for kmw-compiler
mcdurdin Jun 20, 2023
749e42e
chore(developer): move additional consts and globals
mcdurdin Jun 20, 2023
1890176
chore(developer): remove extraneous comment
mcdurdin Jun 20, 2023
78d5682
Merge pull request #9043 from keymanapp/chore/developer/use-schema-to…
mcdurdin Jun 20, 2023
6da441d
chore(common): fixup tests for common/web/ci
mcdurdin Jun 20, 2023
3f507f9
chore(developer): remove font style/color from kvk
mcdurdin Jun 21, 2023
164823a
chore: fix comment in common
mcdurdin Jun 21, 2023
a67abad
chore(developer): cleanup displayUnderlying flag in kmw compiler
mcdurdin Jun 21, 2023
2c2e6fe
chore(developer): load wasm module only once per process
mcdurdin Jun 21, 2023
165dcbe
chore(developer): support embedded files in kmw compiler
mcdurdin Jun 21, 2023
24910fb
chore(developer): cleanup data passing from wasm
mcdurdin Jun 21, 2023
8cd28bd
chore(developer): rename data to extra
mcdurdin Jun 22, 2023
557c400
chore: Apply suggestions from code review
mcdurdin Jun 23, 2023
9216a69
chore: Update developer/src/kmc-kmn/src/compiler/compiler.ts
mcdurdin Jun 23, 2023
23ef2da
Merge pull request #9046 from keymanapp/chore/developer/kmc-web-compi…
mcdurdin Jun 23, 2023
82256d0
Merge pull request #9048 from keymanapp/chore/common/fix-common-web-t…
mcdurdin Jun 23, 2023
6928188
Merge pull request #9054 from keymanapp/chore/developer/cleanup-font-…
mcdurdin Jun 23, 2023
2222e87
Merge pull request #9056 from keymanapp/chore/developer/cleanup-displ…
mcdurdin Jun 23, 2023
fd64028
Merge pull request #9057 from keymanapp/chore/developer/wasm-load-onl…
mcdurdin Jun 23, 2023
3730f2d
Merge pull request #9058 from keymanapp/chore/developer/kmw-support-e…
mcdurdin Jun 23, 2023
c67c21d
Merge branch 'feature-kmc-kmw' into chore/developer/cleanup-wasm-data…
mcdurdin Jun 23, 2023
80551d8
Merge pull request #9059 from keymanapp/chore/developer/cleanup-wasm-…
mcdurdin Jun 23, 2023
8432b06
fix(developer): support option stores in kmc-kmn/kmw
mcdurdin Jun 23, 2023
dee046e
chore(developer): tweak comments
mcdurdin Jun 23, 2023
da51f54
fix(developer): support readonly groups in kmc-kmn/kmw-compiler
mcdurdin Jun 23, 2023
d6721f6
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-fe…
mcdurdin Jun 23, 2023
a89548b
Merge pull request #9077 from keymanapp/chore/merge-master-into-featu…
mcdurdin Jun 24, 2023
d533153
chore(developer): cleanup javascript-strings.ts
mcdurdin Jun 25, 2023
7ccef2e
chore(developer): handle layout file errors in kmw-compiler
mcdurdin Jun 26, 2023
d9b37d8
chore(developer): rename write-compiled-keyboard.ts to kmw-compiler.ts
mcdurdin Jun 26, 2023
7dbf97f
chore(developer): implement HasSupplementaryPlaneChars and FCallFunct…
mcdurdin Jun 26, 2023
b5a1e13
chore(developer): add store.line metadata and cleanup
mcdurdin Jun 26, 2023
90f5ab6
chore(developer): fix tests for layout validity
mcdurdin Jun 26, 2023
c3bb426
Merge pull request #9075 from keymanapp/fix/developer/kmc-kmw-options…
mcdurdin Jun 26, 2023
313ad95
Merge pull request #9076 from keymanapp/fix/developer/kmc-kmw-readonl…
mcdurdin Jun 26, 2023
fbfd8c5
Merge pull request #9086 from keymanapp/chore/developer/kmc-kmw-clean…
mcdurdin Jun 26, 2023
5182b49
Merge pull request #9087 from keymanapp/chore/developer/kmc-kmn-kmwco…
mcdurdin Jun 26, 2023
69f6796
Merge pull request #9088 from keymanapp/chore/developer/kmc-kmn-kmw-c…
mcdurdin Jun 26, 2023
d914b69
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-fe…
mcdurdin Jun 26, 2023
0fc6a63
Merge pull request #9091 from keymanapp/chore/merge-master-into-featu…
mcdurdin Jun 27, 2023
0f42e3c
fix(developer): key type checks were invalid
mcdurdin Jun 27, 2023
afa081a
fix(developer): content files can have mixed case in packages
mcdurdin Jun 27, 2023
ed9975e
fix(developer): handle missing font spec in touch layout file
mcdurdin Jun 27, 2023
d44e781
fix(developer): TypeError: String.prototype.replaceAll called with a …
mcdurdin Jun 27, 2023
1b67691
fix(developer): resetopt and saveopt used uninitialized return variable
mcdurdin Jun 27, 2023
87c70a2
fix(developer): key id and text are optional
mcdurdin Jun 27, 2023
a031367
fix(developer): rewrite version object for followKeyboardVersion
mcdurdin Jun 27, 2023
09a2041
fix(developer): ensure errors cancel the build in kmc
mcdurdin Jun 27, 2023
6027360
fix(developer): handle empty File Details in package reader
mcdurdin Jun 28, 2023
3b735cd
fix(developer): ensure `delete` uses array semantics where appropriate
mcdurdin Jun 30, 2023
562ced5
fix(developer): GetDelimitedString was using wrong strchr
mcdurdin Jun 30, 2023
56da647
fix(common): specify alignment for COMP_ structs
mcdurdin Jun 30, 2023
f2a7efa
fix(developer): kmcmplib was clobbering previous output
mcdurdin Jun 30, 2023
d021526
fix(common): give friendly error when .kvks is in binary format
mcdurdin Jun 30, 2023
f85478a
fix(developer): kmc needs to support .js-only packages
mcdurdin Jun 30, 2023
88eaab5
Merge pull request #9116 from keymanapp/fix/developer/various-kmc-kmw…
mcdurdin Jun 30, 2023
d03dcee
Merge pull request #9132 from keymanapp/fix/developer/kmcmplib-delete…
mcdurdin Jun 30, 2023
c2fe17a
Merge pull request #9133 from keymanapp/fix/developer/kmcmplib-GetDel…
mcdurdin Jun 30, 2023
36341f2
Merge pull request #9134 from keymanapp/fix/common/kmx_file_alignment
mcdurdin Jun 30, 2023
088758e
Merge pull request #9135 from keymanapp/fix/developer/9125-kmcmplib-c…
mcdurdin Jun 30, 2023
15fe1a0
Merge pull request #9136 from keymanapp/fix/developer/more-kmc-cleanup
mcdurdin Jun 30, 2023
33affc6
fix(common): legacy .kpj schema
mcdurdin Jul 3, 2023
7aede78
fix(developer): compiler needs to support loading .kvk files
mcdurdin Jul 3, 2023
be0b2ae
fix(developer): allow kmcmplib memory usage to grow
mcdurdin Jul 3, 2023
9a1b878
fix(developer): split keyboard and model language metadata tests
mcdurdin Jul 3, 2023
92c8c64
fix(developer): improve warnings around keyboard version matching
mcdurdin Jul 3, 2023
3d86e60
fix(developer): strip .kvk extension
mcdurdin Jul 3, 2023
2cc2106
Merge pull request #9151 from keymanapp/fix/developer/kmc-bugs-9112-9…
mcdurdin Jul 3, 2023
4354cd6
Merge pull request #9153 from keymanapp/fix/developer/9152-kvk-extension
mcdurdin Jul 3, 2023
9dacaaa
fix(developer): kmc-kmn/kmw should add/delete certain fields in touch…
mcdurdin Jul 4, 2023
3a54d9b
fix(developer): kmc-kmn/kmw should strip `\r` from inline html
mcdurdin Jul 4, 2023
d2acfde
fix(developer): improve kmcmplib/kmw compiler performance
mcdurdin Jul 4, 2023
4d64cb2
fix(developer): touch layout was not converting all special keycaps
mcdurdin Jul 4, 2023
70f7c16
fix(developer): kvks file reader needs to handle bitmaps
mcdurdin Jul 4, 2023
8ebc849
fix(developer): kmc/kmw was not stripping codes correctly
mcdurdin Jul 4, 2023
1a06133
fix(developer): vk constants requires `K_oDF` and `K_?C1`
mcdurdin Jul 5, 2023
c11393b
fix(developer): strip default values when compiling touch layout
mcdurdin Jul 5, 2023
7ac6bfc
fix(developer): kmc - support `bitmap` field in .kvk/kvks files
mcdurdin Jul 5, 2023
a2c5459
fix(developer): `call` statements were misreferenced in kmc
mcdurdin Jul 5, 2023
2d31055
fix(developer): escape font name correctly in vk
mcdurdin Jul 5, 2023
aa99918
fix(developer): kmc: cleanup handling of whitespace in import files
mcdurdin Jul 5, 2023
0a9c95f
fix(developer): off-by-one index calculations in js output
mcdurdin Jul 5, 2023
413e32f
fix(developer): strip pure whitespace from key text in kvks reader
mcdurdin Jul 5, 2023
8f5ffcc
chore(developer): fixup ldml test for kmw emit
mcdurdin Jul 6, 2023
84c04d5
fix(developer): strip paths from `readmeFile` and `graphicFile`
mcdurdin Jul 6, 2023
2085c26
fix(developer): trim fields when emitting kmp.json
mcdurdin Jul 6, 2023
3773522
feat(developer): kmc-package support for writing kmp.inf
mcdurdin Jul 6, 2023
306934e
fix(developer): kmc-package support for keyboard metadata
mcdurdin Jul 6, 2023
fed39a7
Merge pull request #9186 from keymanapp/fix/developer/kmc-various-fixes
mcdurdin Jul 6, 2023
eeecb72
Merge pull request #9210 from keymanapp/fix/developer/kmc-package-fin…
mcdurdin Jul 6, 2023
5c0f0e8
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-fe…
mcdurdin Jul 7, 2023
7e8ba8b
chore(developer): fixup test parameters
mcdurdin Jul 10, 2023
0e822e1
Merge pull request #9218 from keymanapp/chore/merge-master-into-featu…
mcdurdin Jul 10, 2023
de1c171
chore(developer): cleanup compiler messages in kmc
mcdurdin Jul 10, 2023
acb2e2e
chore(developer): split file and project build messages
mcdurdin Jul 10, 2023
02a1c48
chore(developer): add --color switch to kmc
mcdurdin Jul 10, 2023
8042151
chore(developer): handle compilerWarningsAsErrors option
mcdurdin Jul 11, 2023
31083c2
chore(developer): unit test for compilerWarningsAsErrors
mcdurdin Jul 11, 2023
53e2ae0
fix(developer): touch layout font test should be lower case
mcdurdin Jul 11, 2023
d5aeecd
chore(developer): suppress excessive messages in kmc
mcdurdin Jul 11, 2023
b435471
feat(developer): add sentry reporting for kmc
mcdurdin Jul 11, 2023
11ab1e0
Merge pull request #9228 from keymanapp/chore/developer/kmc-message-f…
mcdurdin Jul 11, 2023
44e5b5a
Merge pull request #9234 from keymanapp/chore/developer/kmc-color-switch
mcdurdin Jul 11, 2023
adbc1c4
Merge pull request #9237 from keymanapp/chore/developer/compiler-warn…
mcdurdin Jul 11, 2023
8082f5f
chore(developer): workaround TS2367
mcdurdin Jul 11, 2023
fa3980f
feat(developer): deploy kmc as ES module
mcdurdin Jul 12, 2023
111de31
chore(developer): fix tests and linting
mcdurdin Jul 12, 2023
1a52e61
fix(developer): use relative paths in kmc messages
mcdurdin Jul 12, 2023
2d69be9
refactor(common): bundle schemas into web/types
mcdurdin Jul 12, 2023
568a814
chore(common): additional cleanup on schema loading
mcdurdin Jul 12, 2023
4a329f9
chore(developer): move touch layout schema load into import
mcdurdin Jul 12, 2023
31ee7bf
feat(developer): use sentry inject for sourcemap resolution
mcdurdin Jul 12, 2023
5cc3732
chore(developer): remove --dist from sentry-cli sourcemaps inject
mcdurdin Jul 13, 2023
4c8d173
chore(developer): enable source maps for bundle
mcdurdin Jul 13, 2023
cbc857f
chore(developer): sourcemap def in wrong file
mcdurdin Jul 13, 2023
68c5ba0
chore(developer): avoid double-map for bundled sourcemap
mcdurdin Jul 13, 2023
b0652c2
chore(developer): wasm debug symbols and upload to sentry
mcdurdin Jul 13, 2023
73f6624
Merge pull request #9238 from keymanapp/chore/developer/unit-test-for…
mcdurdin Jul 13, 2023
29de947
Merge pull request #9241 from keymanapp/fix/developer/9110-touch-layo…
mcdurdin Jul 13, 2023
f4bba37
Merge pull request #9242 from keymanapp/chore/developer/9147-suppress…
mcdurdin Jul 13, 2023
a9cae27
chore: apply review suggestion, delete comment
mcdurdin Jul 13, 2023
ce9c9ec
chore: try removing -t from sentry-cli
mcdurdin Jul 13, 2023
ba0cde5
Merge pull request #9243 from keymanapp/feat/developer/9113-kmc-sentry
mcdurdin Jul 14, 2023
3491463
Merge pull request #9251 from keymanapp/fix/developer/9250-kmc-messag…
mcdurdin Jul 14, 2023
3fa8bc5
Merge branch 'feature-kmc-kmw' into chore/common/bundle-schemas
mcdurdin Jul 14, 2023
4ac6a30
Merge pull request #9254 from keymanapp/chore/common/bundle-schemas
mcdurdin Jul 14, 2023
0fa7d1a
chore(developer): remove old copy_schema call kmc build.sh
mcdurdin Jul 16, 2023
192dafa
feat(developer): support file lists in kmc
mcdurdin Jul 17, 2023
2775ea0
fix(developer): warning suppression should be per file in kmc
mcdurdin Jul 17, 2023
5c1ded3
chore: Update developer/src/kmc/src/commands/build.ts
mcdurdin Jul 17, 2023
3a82951
Merge pull request #9271 from keymanapp/chore/developer/cleanup-kmc-b…
mcdurdin Jul 17, 2023
85c740a
Merge pull request #9273 from keymanapp/feat/developer/9162-file-list…
mcdurdin Jul 17, 2023
60b8042
Merge pull request #9276 from keymanapp/fix/developer/9274-warning-su…
mcdurdin Jul 17, 2023
0e5204b
feat(developer): unit tests for kmc-model-info
mcdurdin Jul 18, 2023
0e65d77
feat(developer): add model_info and keyboard_info build activities to…
mcdurdin Jul 18, 2023
908f5c2
chore(developer): account for .keyboard_info in .kpj test
mcdurdin Jul 18, 2023
88e216d
chore(developer): work around experimental JSON modules in node
mcdurdin Jul 18, 2023
bd3c663
chore(developer): work around line endings for fixture
mcdurdin Jul 18, 2023
90434b0
Merge branch 'feat/developer/kmc-model-info-tests' into feat/develope…
mcdurdin Jul 18, 2023
1c2704c
Merge branch 'feat/developer/add-model-info-keyboard-info-to-kmc-buil…
mcdurdin Jul 18, 2023
b6ba229
chore(developer): ensure schemas are built
mcdurdin Jul 18, 2023
e2dc338
refactor(developer): remove node dependencies from kmc-model-info
mcdurdin Jul 18, 2023
11b6854
refactor(developer): remove node deps from kmc-model
mcdurdin Jul 18, 2023
0ec7ae8
fix(developer): reduce KM0208A to info severity
mcdurdin Jul 19, 2023
db2f708
fix(developer): consistently show filename for messages in kmc
mcdurdin Jul 19, 2023
bf1fa7e
fix(developer): use relative paths for KM05009
mcdurdin Jul 19, 2023
79a31b1
fix(developer): clean up warning KM02093
mcdurdin Jul 19, 2023
fd8e17e
fix(developer): respect checkFilenameConventions in kmc
mcdurdin Jul 19, 2023
e731e1a
fix(developer): don't add .keyboard_info twice
mcdurdin Jul 19, 2023
ab80e3c
fix(developer): LexicalModelCompiler now takes a callbacks constructo…
mcdurdin Jul 19, 2023
6d291f6
Merge branch 'fix/developer/9296-9297-9298-9299-9300-compiler-warning…
mcdurdin Jul 19, 2023
794bf8a
chore(developer): use kmc messages for kmc-model-info
mcdurdin Jul 19, 2023
45dc976
chore: Update common/web/types/build.sh
mcdurdin Jul 19, 2023
f639d1e
Update common/web/types/src/util/file-types.ts
mcdurdin Jul 19, 2023
2a1bbad
chore: Update common/web/types/src/util/compiler-interfaces.ts
mcdurdin Jul 19, 2023
de69ffe
Merge pull request #9280 from keymanapp/feat/developer/kmc-model-info…
mcdurdin Jul 19, 2023
85d3c20
Merge branch 'feature-kmc-kmw' into feat/developer/add-model-info-key…
mcdurdin Jul 19, 2023
ea6f8c1
Merge pull request #9281 from keymanapp/feat/developer/add-model-info…
mcdurdin Jul 19, 2023
23b9f7b
Merge pull request #9283 from keymanapp/chore/developer/9272-work-aro…
mcdurdin Jul 19, 2023
1034d69
Merge pull request #9287 from keymanapp/refactor/developer/9286-remov…
mcdurdin Jul 19, 2023
6fde628
Merge pull request #9289 from keymanapp/refactor/developer/9288-remov…
mcdurdin Jul 19, 2023
887bea8
chore: address review comments
mcdurdin Jul 21, 2023
7c1d2e0
Merge pull request #9301 from keymanapp/fix/developer/9296-9297-9298-…
mcdurdin Jul 21, 2023
f89507a
Merge pull request #9303 from keymanapp/fix/developer/9302-double-add…
mcdurdin Jul 21, 2023
e99288a
chore(developer): remove errant baseUrl tsconfig
mcdurdin Jul 21, 2023
1810434
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-km…
mcdurdin Jul 21, 2023
2c16f68
chore(developer): fixup broken import
mcdurdin Jul 21, 2023
1bfd9e6
refactor(developer): move keyman-targets.ts to common/web/types
mcdurdin Jul 24, 2023
039dda6
chore(developer): use keymanTargetsFromString in kmc-package
mcdurdin Jul 24, 2023
3cc0f37
feat(developer): introduce kmc-keyboard-info
mcdurdin Jul 24, 2023
b369fbb
feat(developer): implement kmc keyboard_info compiler
mcdurdin Jul 25, 2023
95d7be2
chore(developer): dep ref for kmc-keyboard-info configure
mcdurdin Jul 25, 2023
54eddf5
chore(developer): add kmc-analyze makefile
mcdurdin Jul 25, 2023
2465d99
chore(developer): langtags.js not langtags.ts
mcdurdin Jul 25, 2023
b0b83b4
fix(core): tag KMXPlus file-based structs with alignment 🙀
srl295 Jul 25, 2023
e9d552d
Merge pull request #9318 from keymanapp/chore/merge-master-into-kmc-k…
mcdurdin Jul 25, 2023
7f5e075
Merge pull request #9306 from keymanapp/chore/developer/9305-use-kmc-…
mcdurdin Jul 25, 2023
a2d45c0
chore(common): address review comments
mcdurdin Jul 26, 2023
393951c
Merge branch 'chore/developer/move-keyman-targets-to-common' into fea…
mcdurdin Jul 26, 2023
9d6f417
chore(developer): fixup keyman-targets use
mcdurdin Jul 26, 2023
bda6ba1
chore(developer): further kmc-keyboard-info infrastructure
mcdurdin Jul 26, 2023
eab760c
fix(developer): support sourcePath in .model_info files
mcdurdin Jul 26, 2023
4bdb3cc
refactor(developer): projectReader to depend on projectLoader
mcdurdin Jul 26, 2023
52869e0
Merge pull request #9323 from keymanapp/chore/developer/move-keyman-t…
mcdurdin Jul 26, 2023
810f0a0
chore(developer): npm install
mcdurdin Jul 26, 2023
c9e1e82
Merge branch 'feature-kmc-kmw' into feat/developer/introduce-kmc-keyb…
mcdurdin Jul 26, 2023
5aa1c17
Merge branch 'feat/developer/introduce-kmc-keyboard-info' into fix/de…
mcdurdin Jul 26, 2023
4e5a359
Merge branch 'fix/developer/support-sourcePath-for-model-info' into r…
mcdurdin Jul 26, 2023
b012499
Merge pull request #9345 from keymanapp/fix/common-9139-kmxplus-align…
srl295 Jul 26, 2023
246c02e
chore(developer): address review comments
mcdurdin Jul 31, 2023
ab4e124
chore(developer): rename projectReader to projectRunner
mcdurdin Jul 31, 2023
e247bb0
chore(developer): address review comments
mcdurdin Aug 1, 2023
7701868
Merge pull request #9336 from keymanapp/feat/developer/introduce-kmc-…
mcdurdin Aug 1, 2023
038db7b
Merge pull request #9348 from keymanapp/fix/developer/support-sourceP…
mcdurdin Aug 1, 2023
d045e18
Merge pull request #9350 from keymanapp/refactor/developer/projectLoa…
mcdurdin Aug 1, 2023
41aac59
chore(developer): minor patches to fix compile issues
mcdurdin Aug 1, 2023
c47e72b
chore: add run-name to deb-packaging
mcdurdin Aug 1, 2023
2c1724d
chore(linux): touch linux so we get a build
mcdurdin Aug 1, 2023
29c7857
Merge pull request #9379 from keymanapp/chore/gha
mcdurdin Aug 1, 2023
eb23e68
Merge pull request #9378 from keymanapp/chore/developer/minor-patches
mcdurdin Aug 2, 2023
48c0f09
chore(developer): use getFileType() instead of fileType
mcdurdin Aug 2, 2023
d8e03e0
chore(developer): refactor KeymanDeveloperProjectFile
mcdurdin Aug 2, 2023
9a5d671
chore(developer): add Error_NotAProjectFile
mcdurdin Aug 2, 2023
c20a670
chore(developer): handle unknown file extensions in file types
mcdurdin Aug 2, 2023
01348f1
Merge pull request #9392 from keymanapp/chore/developer/cleanup-filet…
mcdurdin Aug 3, 2023
166e0ca
Merge pull request #9395 from keymanapp/chore/developer/9394-not-a-pr…
mcdurdin Aug 3, 2023
cdf026c
chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-fe…
mcdurdin Aug 4, 2023
c92f28e
Merge pull request #9420 from keymanapp/chore/merge-master-into-featu…
mcdurdin Aug 4, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 40 additions & 16 deletions common/include/kmx_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,24 @@

#include <km_types.h>

/*
When we read .kmx files, they have no alignment guarantees, so we need to tell
the compiler to generate unaligned-safe code for accesses to COMP_ structure
members. Note we are assuming that COMP_KEYBOARD is aligned because it is
always the start of the file, so will be at the start of any buffer which will
automatically be aligned correctly.
*/
#ifdef __EMSCRIPTEN__
typedef KMX_DWORD __attribute__((aligned(1))) KMX_DWORD_unaligned;
typedef KMX_BOOL __attribute__((aligned(1))) KMX_BOOL_unaligned;
typedef KMX_WORD __attribute__((aligned(1))) KMX_WORD_unaligned;
#else
// TODO: consider other platforms
#define KMX_DWORD_unaligned KMX_DWORD
#define KMX_BOOL_unaligned KMX_BOOL
#define KMX_WORD_unaligned KMX_WORD
#endif

#ifdef KMN_KBP
// TODO: move this to a common namespace keyman::common::kmx_file or similar in the future
namespace km {
Expand Down Expand Up @@ -153,7 +171,13 @@ namespace kmx {

#define TSS__KEYMAN_150_MAX 43

#define TSS__MAX 43
/* Keyman 17.0 system stores */

#define TSS_DISPLAYMAP 44

#define TSS__KEYMAN_170_MAX 44

#define TSS__MAX 44

/* wm_keyman_control_internal message control codes */

Expand Down Expand Up @@ -297,27 +321,27 @@ namespace kmx {
#define K_NOTMODIFIERFLAG 0xFF00 // I4548

struct COMP_STORE {
KMX_DWORD dwSystemID;
KMX_DWORD dpName;
KMX_DWORD dpString;
KMX_DWORD_unaligned dwSystemID;
KMX_DWORD_unaligned dpName;
KMX_DWORD_unaligned dpString;
};

struct COMP_KEY {
KMX_WORD Key;
KMX_WORD _reserved;
KMX_DWORD Line;
KMX_DWORD ShiftFlags;
KMX_DWORD dpOutput;
KMX_DWORD dpContext;
KMX_WORD_unaligned Key;
KMX_WORD_unaligned _reserved;
KMX_DWORD_unaligned Line;
KMX_DWORD_unaligned ShiftFlags;
KMX_DWORD_unaligned dpOutput;
KMX_DWORD_unaligned dpContext;
};

struct COMP_GROUP {
KMX_DWORD dpName;
KMX_DWORD dpKeyArray; // [LPKEY] address of first item in key array
KMX_DWORD dpMatch;
KMX_DWORD dpNoMatch;
KMX_DWORD cxKeyArray; // in array entries
KMX_BOOL fUsingKeys; // group(xx) [using keys] <-- specified or not
KMX_DWORD_unaligned dpName;
KMX_DWORD_unaligned dpKeyArray; // [LPKEY] address of first item in key array
KMX_DWORD_unaligned dpMatch;
KMX_DWORD_unaligned dpNoMatch;
KMX_DWORD_unaligned cxKeyArray; // in array entries
KMX_BOOL_unaligned fUsingKeys; // group(xx) [using keys] <-- specified or not
};

struct COMP_KEYBOARD {
Expand Down
77 changes: 77 additions & 0 deletions common/schemas/displaymap/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# displaymap.schema.json

This mapping file provides data for remapping the touch layout and visual
keyboard key caps. The primary purpose of this file is to provide a pathway for
consistent display of diacritics and other unattached marks which may be
displayed on the keyboard by use of a special font with formatted glyphs in the
Private Use Area, which will have consistent display across all platforms and
not rely on platform-specific or font-specific rendering behaviors.

This file can be generated by `kmc analyze osk-char-use` command, or hand
crafted. The compiler uses only the `str` and `pua` values in the file, although
there may be additional data in the file provided for reference purposes. The
file should have the following structure, in this example, mapping the Unicode
values `U+17BB U+17C7` (ុះ) to the Private Use Area code `U+F19F`:

```json
{
"map": [
{
"pua": "F19F",
"str": "ុះ",
"unicode": "17BB 17C7",
"usages": [
"khmer_angkor.kvks",
"khmer_angkor.keyman-touch-layout"
]
},
...
]
}
```

The file can be passed without modification to the [ttkbdfont.py script][2]
(unsupported) to generate a Kbd font. The font may need some manual editing as
insertion of dotted circle (`U+25CC`) as a base may not always be possible
automatically, and combined marks may not render as a cluster in some scenarios.
The open source tool [FontForge][3] is suitable for making these kinds of minor
adjustments to the generated font.

## Standard conventions for use of displayMaps

In the Keyman keyboards repository, the PUA range used should start at `U+F100`.

`&displayMap` JSON files should be named `Kbd<script>.json` where `<script>` is
a [4 letter script subtag][4], for example `KbdKhmr.json`, and the corresponding
font is named `KbdKhmr.ttf` (with face name `KbdKhmr`). These fonts are intended
only for use in visual keyboards and touch layouts and generally will not be
suitable for any other use. An optional suffix to a font may be included, if
appropriate, for example, `KbdArab-Nastaliq.ttf` (face name `KbdArab-Nastaliq`).

## Fields in the `map` objects

* `pua`: must be a single hex value, by convention in the PUA range starting at
`U+F100`. Do not include the `U+` prefix.
* `str`: contains the codepoints that will be mapped to the PUA code;
if `U+25CC` (◌, dotted circle) is specified in the key cap, it will be
stripped before matching in the `&displayMap`, so `U+25CC` should not be
included in `str`.
* `unicode`: must be the unicode codepoints contained in the `str` field, as
hexadecimal values, without initial `U+` prefix. Used only for reference when
reading the file.
* `usages`: data provided by `kmc analyze osk-char use` on which files this
specific string is found in. This may be an array of strings, or optionally
may be an array of objects with `filename` and `count` fields.

See [`&displaymap` system store][1] online documentation for more information on
how this format is used.

## 2023-06-17 1.0

* Initial version 1.0, describes osk usage data file format generated by kmc
analyze osk-char-use. Schema is kept reasonably loose for future expansion.

[1]: https://help.keyman.com/developer/language/reference/displaymap
[2]: https://github.com/silnrsi/palaso-python/blob/master/scripts/font/ttkbdfont.py
[3]: https://fontforge.org
[4]: https://help.keyman.com/developer/current-version/reference/bcp-47#toc-the-script-subtag
36 changes: 36 additions & 0 deletions common/schemas/displaymap/displaymap.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"$ref": "#/definitions/displayMap",

"definitions": {
"displayMap": {
"type": "object",
"properties": {
"map": {
"type": "array",
"items": {
"$ref": "#/definitions/map"
}
}
}
},
"map": {
"type": "object",
"properties": {
"pua": { "type": "string" },
"str": { "type": "string" },
"unicode": { "type": "string" },
"usages": { "anyOf": [
{ "type": "array", "items": { "$ref": "#/definitions/usage" } },
{ "type": "array", "items": { "type": "string" } }
] }
}
},
"usage": {
"type": "object",
"properties": {
"filename": { "type": "string" },
"count": { "type": "number" }
}
}
}
}
11 changes: 11 additions & 0 deletions common/schemas/kpj-9.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# kpj-9.0.schema.json

**Note:** `KeymanDeveloperProject.Options.Version` is currently implicitly
always '1.0'. It will be required for version 2.0 and later of the format.

This is a schema for for supporting legacy versions of .kpj, from Keyman
Developer 9.0 and earlier, is now available. Note that this schema is not fully
validating on the legacy fields, but just sufficient to pass a valid
file.

You should be using kpj.schema.json for most purposes
134 changes: 134 additions & 0 deletions common/schemas/kpj-9.0/kpj-9.0.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
{
"title": "kpj-9.0.xsd",
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"KeymanDeveloperProject": {
"properties": {
"Options": {
"$ref": "#/definitions/Options"
},
"Files": {
"$ref": "#/definitions/Files"
},
"templatepath": { "type":"string", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" },
"stringspath": { "type":"string", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" },
"state": { "type": "string", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" },
"Modules": { "oneOf": [{"type": "object"}, {"type": "string"}], "$comment": "Keyman Developer 9, no longer used in modern .kpj files" },
"MRU": { "type": "object", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" }
},
"required": [
],
"additionalProperties": false,
"type": "object"
}
},
"required": [
"KeymanDeveloperProject"
],
"additionalProperties": false,
"definitions": {
"Options": {
"type": "object",
"properties": {
"BuildPath": {
"type": "string"
},
"SourcePath": {
"type": "string"
},
"CompilerWarningsAsErrors": {
"type": "string",
"pattern": "^(True|False)$"
},
"WarnDeprecatedCode": {
"type": "string",
"pattern": "^(True|False)$"
},
"CheckFilenameConventions": {
"type": "string",
"pattern": "^(True|False)$"
},
"ProjectType": {
"type": "string",
"pattern": "^(keyboard|lexicalmodel)$"
},
"Version": {
"type": "string",
"pattern": "^(1\\.0|2\\.0)$"
}
},
"required": [
],
"additionalProperties": false
},
"Files": {
"type": "object",
"properties": {
"File": {
"type": "array",
"items": {
"$ref": "#/definitions/File"
}
}
},
"additionalProperties": false,
"required": [
"File"
]
},
"File": {
"type": "object",
"properties": {
"ID": {
"type": "string"
},
"Filename": {
"type": "string"
},
"Filepath": {
"type": "string"
},
"FileVersion": {
"type": "string"
},
"FileType": {
"type": "string"
},
"Details": {
"$ref": "#/definitions/FileDetails"
},
"ParentFileID": {
"type": "string"
},
"FullPath": { "type":"string", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" },
"IDEState": { "type":"object", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" }
},
"required": [
"Filename"
],
"additionalProperties": false
},
"FileDetails": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Copyright": {
"type": "string"
},
"Message": {
"type": "string"
},
"Version": {
"type": "string"
},
"Debug": { "type":"string", "$comment": "Keyman Developer 9, no longer used in modern .kpj files" }
},
"required": [
],
"additionalProperties": false
}
}
}
3 changes: 3 additions & 0 deletions common/schemas/kpj/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
**Note:** `KeymanDeveloperProject.Options.Version` is currently implicitly
always '1.0'. It will be required for version 2.0 and later of the format.

**Note:** An additional schema file, kpj-9.0.schema.json, for supporting legacy
versions of .kpj, from Keyman Developer 9.0 and earlier, is now available.

## 2023-02-27 2.0
* Version 2.0 makes 'Files' optional (internally, Files/File will be ignored,
deleted on load and populated from folder structure). Adds Options/SourcePath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Mock } from '@keymanapp/keyboard-processor';
import { LexicalModelCompiler } from '@keymanapp/kmc-model';
import { fileURLToPath } from 'url';
import path from 'path';
import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers';

// Required initialization setup.
global.keyman = {}; // So that keyboard-based checks against the global `keyman` succeed.
Expand All @@ -22,9 +23,11 @@ String.kmwEnableSupplementaryPlane(false);
// Test the KeyboardProcessor interface.
describe('LanguageProcessor', function() {
let worker;
const callbacks = new TestCompilerCallbacks();

beforeEach(function() {
worker = LMWorker.constructInstance();
callbacks.clear();
});

afterEach(function() {
Expand Down Expand Up @@ -54,7 +57,7 @@ describe('LanguageProcessor', function() {
});

describe('.predict', function() {
let compiler = new LexicalModelCompiler();
let compiler = new LexicalModelCompiler(callbacks);
const MODEL_ID = 'example.qaa.trivial';

// ES-module mode leaves out `__dirname`, so we rebuild it using other components.
Expand Down
2 changes: 1 addition & 1 deletion common/web/keyman-version/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"license": "MIT",
"type": "module",
"devDependencies": {
"@types/node": "^18.7.13",
"@types/node": "^20.4.1",
"typescript": "^4.9.5"
}
}
1 change: 1 addition & 0 deletions common/web/types/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/schemas/
Loading