@keymanapp/common-types 17.0.85-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/consts/virtual-key-constants.d.ts +131 -0
- package/build/src/consts/virtual-key-constants.d.ts.map +1 -0
- package/build/src/consts/virtual-key-constants.js +245 -0
- package/build/src/consts/virtual-key-constants.js.map +1 -0
- package/build/src/import/techpreview/cldr_info.json +5 -0
- package/build/src/import/techpreview/keys-Latn-implied.xml +80 -0
- package/build/src/import/techpreview/keys-Zyyy-currency.xml +22 -0
- package/build/src/import/techpreview/keys-Zyyy-punctuation.xml +46 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +24 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js +75 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts +76 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.js +26 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.js.map +1 -0
- package/build/src/keyman-touch-layout.clean.spec.json +170 -0
- package/build/src/kmx/element-string.d.ts +19 -0
- package/build/src/kmx/element-string.d.ts.map +1 -0
- package/build/src/kmx/element-string.js +72 -0
- package/build/src/kmx/element-string.js.map +1 -0
- package/build/src/kmx/kmx-builder.d.ts +77 -0
- package/build/src/kmx/kmx-builder.d.ts.map +1 -0
- package/build/src/kmx/kmx-builder.js +193 -0
- package/build/src/kmx/kmx-builder.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.js +25 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.d.ts +26 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.js +78 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.d.ts +60 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.js +107 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.d.ts +54 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.js +99 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-list.d.ts +34 -0
- package/build/src/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-list.js +62 -0
- package/build/src/kmx/kmx-plus-builder/build-list.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.d.ts +12 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.js +20 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.d.ts +17 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.js +21 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-name.d.ts +12 -0
- package/build/src/kmx/kmx-plus-builder/build-name.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-name.js +23 -0
- package/build/src/kmx/kmx-plus-builder/build-name.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.js +27 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.js +14 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.js +34 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.d.ts +20 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.js +30 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts +16 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.js +23 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.d.ts +6 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.js +3 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +47 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js +143 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
- package/build/src/kmx/kmx-plus.d.ts +259 -0
- package/build/src/kmx/kmx-plus.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus.js +594 -0
- package/build/src/kmx/kmx-plus.js.map +1 -0
- package/build/src/kmx/kmx.d.ts +166 -0
- package/build/src/kmx/kmx.d.ts.map +1 -0
- package/build/src/kmx/kmx.js +271 -0
- package/build/src/kmx/kmx.js.map +1 -0
- package/build/src/kmx/string-list.d.ts +29 -0
- package/build/src/kmx/string-list.d.ts.map +1 -0
- package/build/src/kmx/string-list.js +75 -0
- package/build/src/kmx/string-list.js.map +1 -0
- package/build/src/kpj/keyman-developer-project.d.ts +58 -0
- package/build/src/kpj/keyman-developer-project.d.ts.map +1 -0
- package/build/src/kpj/keyman-developer-project.js +141 -0
- package/build/src/kpj/keyman-developer-project.js.map +1 -0
- package/build/src/kpj/kpj-file-reader.d.ts +17 -0
- package/build/src/kpj/kpj-file-reader.d.ts.map +1 -0
- package/build/src/kpj/kpj-file-reader.js +92 -0
- package/build/src/kpj/kpj-file-reader.js.map +1 -0
- package/build/src/kpj/kpj-file.d.ts +39 -0
- package/build/src/kpj/kpj-file.d.ts.map +1 -0
- package/build/src/kpj/kpj-file.js +11 -0
- package/build/src/kpj/kpj-file.js.map +1 -0
- package/build/src/kpj.schema.json +127 -0
- package/build/src/kvk/kvk-file-reader.d.ts +5 -0
- package/build/src/kvk/kvk-file-reader.d.ts.map +1 -0
- package/build/src/kvk/kvk-file-reader.js +35 -0
- package/build/src/kvk/kvk-file-reader.js.map +1 -0
- package/build/src/kvk/kvk-file-writer.d.ts +20 -0
- package/build/src/kvk/kvk-file-writer.d.ts.map +1 -0
- package/build/src/kvk/kvk-file-writer.js +67 -0
- package/build/src/kvk/kvk-file-writer.js.map +1 -0
- package/build/src/kvk/kvk-file.d.ts +64 -0
- package/build/src/kvk/kvk-file.d.ts.map +1 -0
- package/build/src/kvk/kvk-file.js +63 -0
- package/build/src/kvk/kvk-file.js.map +1 -0
- package/build/src/kvk/kvks-file-reader.d.ts +30 -0
- package/build/src/kvk/kvks-file-reader.d.ts.map +1 -0
- package/build/src/kvk/kvks-file-reader.js +154 -0
- package/build/src/kvk/kvks-file-reader.js.map +1 -0
- package/build/src/kvk/kvks-file-writer.d.ts +6 -0
- package/build/src/kvk/kvks-file-writer.d.ts.map +1 -0
- package/build/src/kvk/kvks-file-writer.js +99 -0
- package/build/src/kvk/kvks-file-writer.js.map +1 -0
- package/build/src/kvk/kvks-file.d.ts +44 -0
- package/build/src/kvk/kvks-file.d.ts.map +1 -0
- package/build/src/kvk/kvks-file.js +10 -0
- package/build/src/kvk/kvks-file.js.map +1 -0
- package/build/src/kvk/visual-keyboard.d.ts +35 -0
- package/build/src/kvk/visual-keyboard.d.ts.map +1 -0
- package/build/src/kvk/visual-keyboard.js +61 -0
- package/build/src/kvk/visual-keyboard.js.map +1 -0
- package/build/src/kvks.schema.json +182 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +56 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js +20 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +91 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js +370 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts +143 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.js +34 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
- package/build/src/ldml-keyboard.schema.json +634 -0
- package/build/src/ldml-keyboardtest.schema.json +221 -0
- package/build/src/main.d.ts +21 -0
- package/build/src/main.d.ts.map +1 -0
- package/build/src/main.js +20 -0
- package/build/src/main.js.map +1 -0
- package/build/src/util/common-events.d.ts +49 -0
- package/build/src/util/common-events.d.ts.map +1 -0
- package/build/src/util/common-events.js +29 -0
- package/build/src/util/common-events.js.map +1 -0
- package/build/src/util/compiler-interfaces.d.ts +51 -0
- package/build/src/util/compiler-interfaces.d.ts.map +1 -0
- package/build/src/util/compiler-interfaces.js +33 -0
- package/build/src/util/compiler-interfaces.js.map +1 -0
- package/build/src/util/util.d.ts +17 -0
- package/build/src/util/util.d.ts.map +1 -0
- package/build/src/util/util.js +67 -0
- package/build/src/util/util.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build.sh +86 -0
- package/package.json +58 -0
- package/src/consts/virtual-key-constants.ts +257 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts +81 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file-writer.ts +84 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file.ts +87 -0
- package/src/kmx/element-string.ts +79 -0
- package/src/kmx/kmx-builder.ts +287 -0
- package/src/kmx/kmx-plus-builder/build-disp.ts +46 -0
- package/src/kmx/kmx-plus-builder/build-elem.ts +103 -0
- package/src/kmx/kmx-plus-builder/build-keys.ts +175 -0
- package/src/kmx/kmx-plus-builder/build-layr.ts +154 -0
- package/src/kmx/kmx-plus-builder/build-list.ts +95 -0
- package/src/kmx/kmx-plus-builder/build-loca.ts +34 -0
- package/src/kmx/kmx-plus-builder/build-meta.ts +37 -0
- package/src/kmx/kmx-plus-builder/build-name.ts +37 -0
- package/src/kmx/kmx-plus-builder/build-ordr.ts +45 -0
- package/src/kmx/kmx-plus-builder/build-sect.ts +31 -0
- package/src/kmx/kmx-plus-builder/build-strs.ts +58 -0
- package/src/kmx/kmx-plus-builder/build-tran.ts +50 -0
- package/src/kmx/kmx-plus-builder/build-vkey.ts +43 -0
- package/src/kmx/kmx-plus-builder/builder-section.ts +6 -0
- package/src/kmx/kmx-plus-builder/kmx-plus-builder.ts +190 -0
- package/src/kmx/kmx-plus.ts +692 -0
- package/src/kmx/kmx.ts +360 -0
- package/src/kmx/string-list.ts +74 -0
- package/src/kpj/keyman-developer-project.ts +155 -0
- package/src/kpj/kpj-file-reader.ts +103 -0
- package/src/kpj/kpj-file.ts +52 -0
- package/src/kvk/kvk-file-reader.ts +34 -0
- package/src/kvk/kvk-file-writer.ts +72 -0
- package/src/kvk/kvk-file.ts +122 -0
- package/src/kvk/kvks-file-reader.ts +164 -0
- package/src/kvk/kvks-file-writer.ts +113 -0
- package/src/kvk/kvks-file.ts +53 -0
- package/src/kvk/visual-keyboard.ts +80 -0
- package/src/ldml-keyboard/ldml-keyboard-testdata-xml.ts +74 -0
- package/src/ldml-keyboard/ldml-keyboard-xml-reader.ts +387 -0
- package/src/ldml-keyboard/ldml-keyboard-xml.ts +177 -0
- package/src/main.ts +27 -0
- package/src/restructure.d.ts +2 -0
- package/src/util/common-events.ts +50 -0
- package/src/util/compiler-interfaces.ts +54 -0
- package/src/util/util.ts +68 -0
- package/test/fixtures/import-minimal.xml +8 -0
- package/test/fixtures/import-minimal1.xml +11 -0
- package/test/fixtures/import-minimal2.xml +11 -0
- package/test/fixtures/import-symbols.xml +13 -0
- package/test/fixtures/invalid-conforms-to.xml +19 -0
- package/test/fixtures/invalid-import-base.xml +16 -0
- package/test/fixtures/invalid-import-path.xml +16 -0
- package/test/fixtures/invalid-import-readfail.xml +16 -0
- package/test/fixtures/invalid-import-wrongroot.xml +16 -0
- package/test/fixtures/invalid-structure-per-dtd.xml +8 -0
- package/test/fixtures/keyman-touch-layout/khmer_angkor.keyman-touch-layout +1950 -0
- package/test/fixtures/keyman-touch-layout/legacy.keyman-touch-layout +36 -0
- package/test/fixtures/kpj/khmer_angkor.kpj +187 -0
- package/test/fixtures/kvk/khmer_angkor.kvk +0 -0
- package/test/fixtures/kvk/khmer_angkor.kvks +206 -0
- package/test/fixtures/test-fr.xml +22 -0
- package/test/helpers/index.ts +39 -0
- package/test/helpers/reader-callback-test.ts +199 -0
- package/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.ts +71 -0
- package/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.ts +35 -0
- package/test/kpj/test-kpj-file-reader.ts +123 -0
- package/test/kvk/test-kvk-file.ts +15 -0
- package/test/kvk/test-kvk-round-trip.ts +87 -0
- package/test/kvk/test-kvk-utils.ts +24 -0
- package/test/kvk/test-kvks-file.ts +45 -0
- package/test/ldml-keyboard/test-ldml-keyboard-testdata-reader.ts +51 -0
- package/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts +131 -0
- package/test/tsconfig.json +21 -0
- package/test/util/test-unescape.ts +38 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
;
|
|
2
|
+
export class TouchLayoutFileWriter {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.options = { ...options };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Writes the touch layout to a .keyman-touch-layout JSON file
|
|
9
|
+
* @param source TouchLayoutFile
|
|
10
|
+
* @returns Uint8Array, the .keyman-touch-layout file
|
|
11
|
+
*/
|
|
12
|
+
write(source) {
|
|
13
|
+
const output = JSON.stringify(source, null, this.options?.formatted ? 2 : undefined);
|
|
14
|
+
const encoder = new TextEncoder();
|
|
15
|
+
return encoder.encode(output);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Compiles the touch layout file into a KeymanWeb-compatible JSON-style
|
|
19
|
+
* object string. In the future, this may be optimized to remove unnecessary
|
|
20
|
+
* quoting of property names, and remove unused properties, as this string
|
|
21
|
+
* is embedded into .js code.
|
|
22
|
+
* @param source
|
|
23
|
+
* @returns string
|
|
24
|
+
*/
|
|
25
|
+
compile(source) {
|
|
26
|
+
// Deep copy the source
|
|
27
|
+
source = JSON.parse(JSON.stringify(source));
|
|
28
|
+
// Fixup pad, width and sp to string types, as that's what KeymanWeb
|
|
29
|
+
// currently expects
|
|
30
|
+
const fixupKey = (key) => {
|
|
31
|
+
if (Object.hasOwn(key, 'pad'))
|
|
32
|
+
key.pad = key.pad.toString();
|
|
33
|
+
if (Object.hasOwn(key, 'sp'))
|
|
34
|
+
key.sp = key.sp.toString();
|
|
35
|
+
if (Object.hasOwn(key, 'width'))
|
|
36
|
+
key.width = key.width.toString();
|
|
37
|
+
};
|
|
38
|
+
const fixupPlatform = (platform) => {
|
|
39
|
+
for (let layer of platform.layer) {
|
|
40
|
+
for (let row of layer.row) {
|
|
41
|
+
for (let key of row.key) {
|
|
42
|
+
fixupKey(key);
|
|
43
|
+
if (key.sk) {
|
|
44
|
+
for (let sk of key.sk) {
|
|
45
|
+
fixupKey(sk);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (key.multitap) {
|
|
49
|
+
for (let sk of key.multitap) {
|
|
50
|
+
fixupKey(sk);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (key.flick) {
|
|
54
|
+
for (let id of Object.keys(key.flick)) {
|
|
55
|
+
fixupKey(key.flick[id]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
if (source.desktop) {
|
|
63
|
+
fixupPlatform(source.desktop);
|
|
64
|
+
}
|
|
65
|
+
if (source.phone) {
|
|
66
|
+
fixupPlatform(source.phone);
|
|
67
|
+
}
|
|
68
|
+
if (source.tablet) {
|
|
69
|
+
fixupPlatform(source.tablet);
|
|
70
|
+
}
|
|
71
|
+
return JSON.stringify(source, null, this.options?.formatted ? 2 : undefined);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
;
|
|
75
|
+
//# sourceMappingURL=keyman-touch-layout-file-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyman-touch-layout-file-writer.js","sourceRoot":"","sources":["../../../src/keyman-touch-layout/keyman-touch-layout-file-writer.ts"],"names":[],"mappings":"AAIC,CAAC;AAEF,MAAM,OAAO,qBAAqB;IAEhC,OAAO,CAA+B;IAEtC,YAAY,OAAsC;QAChD,IAAI,CAAC,OAAO,GAAG,EAAC,GAAG,OAAO,EAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAuB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAuB;QAC7B,uBAAuB;QACvB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5C,oEAAoE;QACpE,oBAAoB;QAEpB,MAAM,QAAQ,GAAG,CAAC,GAAuC,EAAE,EAAE;YAC3D,IAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAG,GAAG,CAAC,GAAW,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACpE,IAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;gBAAG,GAAG,CAAC,EAAU,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;gBAAG,GAAG,CAAC,KAAa,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5E,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,QAA6B,EAAE,EAAE;YACtD,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAC/B,KAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;oBACxB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;wBACtB,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACd,IAAG,GAAG,CAAC,EAAE,EAAE;4BACT,KAAI,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE;gCACpB,QAAQ,CAAC,EAAE,CAAC,CAAC;6BACd;yBACF;wBACD,IAAG,GAAG,CAAC,QAAQ,EAAE;4BACf,KAAI,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE;gCAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC;6BACd;yBACF;wBACD,IAAG,GAAG,CAAC,KAAK,EAAE;4BACZ,KAAI,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gCACpC,QAAQ,CAAE,GAAG,CAAC,KAAa,CAAC,EAAE,CAAsB,CAAC,CAAC;6BACvD;yBACF;qBACF;iBACF;aACF;QACH,CAAC,CAAC;QAEF,IAAG,MAAM,CAAC,OAAO,EAAE;YACjB,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,IAAG,MAAM,CAAC,KAAK,EAAE;YACf,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAG,MAAM,CAAC,MAAM,EAAE;YAChB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;CACF;AAAA,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface TouchLayoutFile {
|
|
2
|
+
tablet?: TouchLayoutPlatform;
|
|
3
|
+
phone?: TouchLayoutPlatform;
|
|
4
|
+
desktop?: TouchLayoutPlatform;
|
|
5
|
+
}
|
|
6
|
+
export type TouchLayoutFont = string;
|
|
7
|
+
export type TouchLayoutFontSize = string;
|
|
8
|
+
export type TouchLayoutDefaultHint = "none" | "dot" | "longpress" | "multitap" | "flick" | "flick-n" | "flick-ne" | "flick-e" | "flick-se" | "flick-s" | "flick-sw" | "flick-w" | "flick-nw";
|
|
9
|
+
export interface TouchLayoutPlatform {
|
|
10
|
+
font?: TouchLayoutFont;
|
|
11
|
+
fontsize?: TouchLayoutFontSize;
|
|
12
|
+
layer: TouchLayoutLayer[];
|
|
13
|
+
displayUnderlying?: boolean;
|
|
14
|
+
defaultHint: TouchLayoutDefaultHint;
|
|
15
|
+
}
|
|
16
|
+
export type TouchLayoutLayerId = string;
|
|
17
|
+
export interface TouchLayoutLayer {
|
|
18
|
+
id: TouchLayoutLayerId;
|
|
19
|
+
row: TouchLayoutRow[];
|
|
20
|
+
}
|
|
21
|
+
export type TouchLayoutRowId = number;
|
|
22
|
+
export interface TouchLayoutRow {
|
|
23
|
+
id: TouchLayoutRowId;
|
|
24
|
+
key: TouchLayoutKey[];
|
|
25
|
+
}
|
|
26
|
+
type Key_Type = 'T' | 'K' | 'U' | 't' | 'k' | 'u';
|
|
27
|
+
type Key_Id = string;
|
|
28
|
+
export type TouchLayoutKeyId = `${Key_Type}_${Key_Id}`;
|
|
29
|
+
export interface TouchLayoutKey {
|
|
30
|
+
id?: TouchLayoutKeyId;
|
|
31
|
+
text?: string;
|
|
32
|
+
layer?: TouchLayoutLayerId;
|
|
33
|
+
nextlayer?: TouchLayoutLayerId;
|
|
34
|
+
font?: TouchLayoutFont;
|
|
35
|
+
fontsize?: TouchLayoutFontSize;
|
|
36
|
+
sp?: TouchLayoutKeySp;
|
|
37
|
+
pad?: TouchLayoutKeyPad;
|
|
38
|
+
width?: TouchLayoutKeyWidth;
|
|
39
|
+
sk?: TouchLayoutSubKey[];
|
|
40
|
+
flick?: TouchLayoutFlick;
|
|
41
|
+
multitap?: TouchLayoutSubKey[];
|
|
42
|
+
hint?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare enum TouchLayoutKeySp {
|
|
45
|
+
normal = 0,
|
|
46
|
+
special = 1,
|
|
47
|
+
specialActive = 2,
|
|
48
|
+
deadkey = 8,
|
|
49
|
+
blank = 9,
|
|
50
|
+
spacer = 10
|
|
51
|
+
}
|
|
52
|
+
export type TouchLayoutKeyPad = number;
|
|
53
|
+
export type TouchLayoutKeyWidth = number;
|
|
54
|
+
export interface TouchLayoutSubKey {
|
|
55
|
+
id: TouchLayoutKeyId;
|
|
56
|
+
text?: string;
|
|
57
|
+
layer?: TouchLayoutLayerId;
|
|
58
|
+
nextlayer?: TouchLayoutLayerId;
|
|
59
|
+
font?: TouchLayoutFont;
|
|
60
|
+
fontsize?: TouchLayoutFontSize;
|
|
61
|
+
sp?: TouchLayoutKeySp;
|
|
62
|
+
pad?: TouchLayoutKeyPad;
|
|
63
|
+
width?: TouchLayoutKeyWidth;
|
|
64
|
+
}
|
|
65
|
+
export interface TouchLayoutFlick {
|
|
66
|
+
n?: TouchLayoutSubKey;
|
|
67
|
+
s?: TouchLayoutSubKey;
|
|
68
|
+
e?: TouchLayoutSubKey;
|
|
69
|
+
w?: TouchLayoutSubKey;
|
|
70
|
+
ne?: TouchLayoutSubKey;
|
|
71
|
+
nw?: TouchLayoutSubKey;
|
|
72
|
+
se?: TouchLayoutSubKey;
|
|
73
|
+
sw?: TouchLayoutSubKey;
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=keyman-touch-layout-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyman-touch-layout-file.d.ts","sourceRoot":"","sources":["../../../src/keyman-touch-layout/keyman-touch-layout-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// .keyman-touch-layout JSON format
|
|
3
|
+
//
|
|
4
|
+
// Follows /common/schemas/keyman-touch-layout/keyman-touch-layout.spec.json for
|
|
5
|
+
// reading and
|
|
6
|
+
// /common/schemas/keyman-touch-layout/keyman-touch-layout.clean.spec.json for
|
|
7
|
+
// writing
|
|
8
|
+
//
|
|
9
|
+
;
|
|
10
|
+
;
|
|
11
|
+
;
|
|
12
|
+
;
|
|
13
|
+
;
|
|
14
|
+
export var TouchLayoutKeySp;
|
|
15
|
+
(function (TouchLayoutKeySp) {
|
|
16
|
+
TouchLayoutKeySp[TouchLayoutKeySp["normal"] = 0] = "normal";
|
|
17
|
+
TouchLayoutKeySp[TouchLayoutKeySp["special"] = 1] = "special";
|
|
18
|
+
TouchLayoutKeySp[TouchLayoutKeySp["specialActive"] = 2] = "specialActive";
|
|
19
|
+
TouchLayoutKeySp[TouchLayoutKeySp["deadkey"] = 8] = "deadkey";
|
|
20
|
+
TouchLayoutKeySp[TouchLayoutKeySp["blank"] = 9] = "blank";
|
|
21
|
+
TouchLayoutKeySp[TouchLayoutKeySp["spacer"] = 10] = "spacer";
|
|
22
|
+
})(TouchLayoutKeySp || (TouchLayoutKeySp = {}));
|
|
23
|
+
;
|
|
24
|
+
;
|
|
25
|
+
;
|
|
26
|
+
//# sourceMappingURL=keyman-touch-layout-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyman-touch-layout-file.js","sourceRoot":"","sources":["../../../src/keyman-touch-layout/keyman-touch-layout-file.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,mCAAmC;AACnC,EAAE;AACF,gFAAgF;AAChF,cAAc;AACd,8EAA8E;AAC9E,UAAU;AACV,EAAE;AAMD,CAAC;AAYD,CAAC;AAOD,CAAC;AAOD,CAAC;AAoBD,CAAC;AAEF,MAAM,CAAN,IAAY,gBAAwF;AAApG,WAAY,gBAAgB;IAAG,2DAAQ,CAAA;IAAE,6DAAS,CAAA;IAAE,yEAAe,CAAA;IAAE,6DAAS,CAAA;IAAE,yDAAO,CAAA;IAAE,4DAAS,CAAA;AAAC,CAAC,EAAxF,gBAAgB,KAAhB,gBAAgB,QAAwE;AAAA,CAAC;AAcpG,CAAC;AAWD,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema#",
|
|
3
|
+
"$ref": "#/definitions/touch-layout",
|
|
4
|
+
"$comment": "Version: 16.0",
|
|
5
|
+
"description": "A Keyman Touch Layout file, per version 16.0, clean spec, no legacy data or types",
|
|
6
|
+
|
|
7
|
+
"definitions": {
|
|
8
|
+
"touch-layout": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"tablet": { "$ref": "#/definitions/platform" },
|
|
12
|
+
"phone": { "$ref": "#/definitions/platform" },
|
|
13
|
+
"desktop": { "$ref": "#/definitions/platform" }
|
|
14
|
+
},
|
|
15
|
+
"minProperties": 1,
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
"platform": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"properties": {
|
|
22
|
+
"font": { "$ref": "#/definitions/font-spec" },
|
|
23
|
+
"fontsize": { "$ref": "#/definitions/fontsize-spec" },
|
|
24
|
+
"layer": { "$ref": "#/definitions/layers" },
|
|
25
|
+
"displayUnderlying": { "type": "boolean" },
|
|
26
|
+
"defaultHint": { "type": "string", "enum": ["none","dot","longpress","multitap","flick","flick-n","flick-ne","flick-e","flick-se","flick-s","flick-sw","flick-w","flick-nw"] }
|
|
27
|
+
},
|
|
28
|
+
"required": ["layer"],
|
|
29
|
+
"additionalProperties": false
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
"layers": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": { "$ref": "#/definitions/layer" },
|
|
35
|
+
"minItems": 1
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
"layer": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"properties": {
|
|
41
|
+
"id": { "$ref": "#/definitions/layer-id" },
|
|
42
|
+
"row": { "$ref": "#/definitions/rows" }
|
|
43
|
+
},
|
|
44
|
+
"required": ["id", "row"],
|
|
45
|
+
"additionalProperties": false
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
"layer-id": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"pattern": "^[a-zA-Z0-9_-]+$"
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
"rows": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"items": { "$ref": "#/definitions/row" },
|
|
56
|
+
"minItems": 1
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
"row": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"properties": {
|
|
62
|
+
"id": { "$ref": "#/definitions/row-id" },
|
|
63
|
+
"key": { "$ref": "#/definitions/keys" }
|
|
64
|
+
},
|
|
65
|
+
"required": ["id", "key"],
|
|
66
|
+
"additionalProperties": false
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
"row-id": {
|
|
70
|
+
"type": "integer",
|
|
71
|
+
"minimum": 0,
|
|
72
|
+
"maximum": 100
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
"keys": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": { "$ref": "#/definitions/key" },
|
|
78
|
+
"minItems": 1
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
"key": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"properties": {
|
|
84
|
+
"id": { "$ref": "#/definitions/key-id" },
|
|
85
|
+
"text": { "type": "string" },
|
|
86
|
+
"layer": { "$ref": "#/definitions/layer-id" },
|
|
87
|
+
"nextlayer": { "$ref": "#/definitions/layer-id" },
|
|
88
|
+
"font": { "$ref": "#/definitions/font-spec" },
|
|
89
|
+
"fontsize": { "$ref": "#/definitions/fontsize-spec" },
|
|
90
|
+
"sp": { "$ref": "#/definitions/key-sp" },
|
|
91
|
+
"pad": { "$ref" : "#/definitions/key-pad" },
|
|
92
|
+
"width": { "$ref" : "#/definitions/key-width" },
|
|
93
|
+
"sk": { "$ref": "#/definitions/subkeys" },
|
|
94
|
+
"flick": { "$ref": "#/definitions/flick" },
|
|
95
|
+
"multitap": { "$ref": "#/definitions/subkeys" },
|
|
96
|
+
"hint": { "type": "string" }
|
|
97
|
+
},
|
|
98
|
+
"anyOf": [
|
|
99
|
+
{"required": ["id"]},
|
|
100
|
+
{"required": ["sp"]},
|
|
101
|
+
{"required": ["sk"]},
|
|
102
|
+
{"required": ["flick"]},
|
|
103
|
+
{"required": ["multitap"]}
|
|
104
|
+
],
|
|
105
|
+
"additionalProperties": false
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
"key-id": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"pattern": "^[TKUtku]_[a-zA-Z0-9_]+$"
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
"key-sp": {
|
|
114
|
+
"type": "integer",
|
|
115
|
+
"enum": [0, 1, 2, 8, 9, 10]
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
"key-pad": {
|
|
119
|
+
"type": "number",
|
|
120
|
+
"minimum": 0,
|
|
121
|
+
"maximum": 100000
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
"key-width": {
|
|
125
|
+
"type": "number",
|
|
126
|
+
"minimum": 0,
|
|
127
|
+
"maximum": 100000
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
"subkeys": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": { "$ref": "#/definitions/subkey" },
|
|
133
|
+
"minItems": 1
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
"subkey": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"properties": {
|
|
139
|
+
"id": { "$ref": "#/definitions/key-id" },
|
|
140
|
+
"text": { "type": "string" },
|
|
141
|
+
"layer": { "$ref": "#/definitions/layer-id" },
|
|
142
|
+
"nextlayer": { "$ref": "#/definitions/layer-id" },
|
|
143
|
+
"font": { "$ref": "#/definitions/font-spec" },
|
|
144
|
+
"fontsize": { "$ref": "#/definitions/fontsize-spec" },
|
|
145
|
+
"sp": { "$ref": "#/definitions/key-sp" },
|
|
146
|
+
"pad": { "$ref" : "#/definitions/key-pad" },
|
|
147
|
+
"width": { "$ref" : "#/definitions/key-width" }
|
|
148
|
+
},
|
|
149
|
+
"required": ["id"],
|
|
150
|
+
"additionalProperties": false
|
|
151
|
+
},
|
|
152
|
+
|
|
153
|
+
"flick": {
|
|
154
|
+
"type": "object",
|
|
155
|
+
"patternProperties": {
|
|
156
|
+
"^(n|s|e|w|ne|nw|se|sw)$": { "$ref": "#/definitions/subkey" }
|
|
157
|
+
},
|
|
158
|
+
"minProperties": 1,
|
|
159
|
+
"additionalProperties": false
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
"font-spec": {
|
|
163
|
+
"type": "string"
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
"fontsize-spec": {
|
|
167
|
+
"type": "string"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Strs, StrsItem } from './kmx-plus.js';
|
|
2
|
+
export declare enum ElemElementFlags {
|
|
3
|
+
none = 0,
|
|
4
|
+
unicode_set,
|
|
5
|
+
tertiary_base,
|
|
6
|
+
prebase
|
|
7
|
+
}
|
|
8
|
+
export declare class ElemElement {
|
|
9
|
+
value: StrsItem;
|
|
10
|
+
order: number;
|
|
11
|
+
tertiary: number;
|
|
12
|
+
flags: ElemElementFlags;
|
|
13
|
+
isEqual(a: ElemElement): boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare class ElementString extends Array<ElemElement> {
|
|
16
|
+
constructor(strs: Strs, source: string, order?: string, tertiary?: string, tertiary_base?: string, prebase?: string);
|
|
17
|
+
isEqual(a: ElementString): boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=element-string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-string.d.ts","sourceRoot":"","sources":["../../../src/kmx/element-string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE/C,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,WAA8C;IAC9C,aAAkD;IAClD,OAAsC;CACvC;AAGD,qBAAa,WAAW;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,CAAC,EAAE,WAAW;CAMvB;AAGD,qBAAa,aAAc,SAAQ,KAAK,CAAC,WAAW,CAAC;gBACvC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAwCnH,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;CAWnC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { constants } from '@keymanapp/ldml-keyboard-constants';
|
|
2
|
+
export var ElemElementFlags;
|
|
3
|
+
(function (ElemElementFlags) {
|
|
4
|
+
ElemElementFlags[ElemElementFlags["none"] = 0] = "none";
|
|
5
|
+
ElemElementFlags[ElemElementFlags["unicode_set"] = constants.elem_flags_unicode_set] = "unicode_set";
|
|
6
|
+
ElemElementFlags[ElemElementFlags["tertiary_base"] = constants.elem_flags_tertiary_base] = "tertiary_base";
|
|
7
|
+
ElemElementFlags[ElemElementFlags["prebase"] = constants.elem_flags_prebase] = "prebase";
|
|
8
|
+
})(ElemElementFlags || (ElemElementFlags = {}));
|
|
9
|
+
;
|
|
10
|
+
export class ElemElement {
|
|
11
|
+
value; // UnicodeSet or UCS32LE character
|
|
12
|
+
order; // -128 to +127; used only by reorder element values
|
|
13
|
+
tertiary; // -128 to +127; used only by reorder element values
|
|
14
|
+
flags;
|
|
15
|
+
isEqual(a) {
|
|
16
|
+
return a.value === this.value &&
|
|
17
|
+
a.order === this.order &&
|
|
18
|
+
a.tertiary === this.tertiary &&
|
|
19
|
+
a.flags === this.flags;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
;
|
|
23
|
+
export class ElementString extends Array {
|
|
24
|
+
constructor(strs, source, order, tertiary, tertiary_base, prebase) {
|
|
25
|
+
super();
|
|
26
|
+
//TODO-LDML: full UnicodeSet and parsing
|
|
27
|
+
if (!source) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let items = source.split("");
|
|
31
|
+
let orders = order ? order.split(" ") : [];
|
|
32
|
+
if (orders.length == 1) {
|
|
33
|
+
orders = Array(items.length).fill(orders[0]);
|
|
34
|
+
}
|
|
35
|
+
let tertiaries = tertiary ? tertiary.split(" ") : [];
|
|
36
|
+
if (tertiaries.length == 1) {
|
|
37
|
+
tertiaries = Array(items.length).fill(tertiaries[0]);
|
|
38
|
+
}
|
|
39
|
+
let tertiary_bases = tertiary_base ? tertiary_base.split(" ") : [];
|
|
40
|
+
if (tertiary_bases.length == 1) {
|
|
41
|
+
tertiary_bases = Array(items.length).fill(tertiary_bases[0]);
|
|
42
|
+
}
|
|
43
|
+
let prebases = prebase ? prebase.split(" ") : [];
|
|
44
|
+
if (prebases.length == 1) {
|
|
45
|
+
prebases = Array(items.length).fill(prebases[0]);
|
|
46
|
+
}
|
|
47
|
+
for (let i = 0; i < items.length; i++) {
|
|
48
|
+
let elem = new ElemElement();
|
|
49
|
+
elem.value = strs.allocString(items[i]);
|
|
50
|
+
elem.order = orders.length ? parseInt(orders[i], 10) : 0;
|
|
51
|
+
elem.tertiary = tertiaries.length ? parseInt(tertiaries[i], 10) : 0;
|
|
52
|
+
elem.flags = ElemElementFlags.none |
|
|
53
|
+
(tertiary_bases?.[i] == '1' /* TODO-LDML: or 'true'? */ ? ElemElementFlags.tertiary_base : 0) |
|
|
54
|
+
(prebases?.[i] == '1' /* TODO-LDML: or 'true'? */ ? ElemElementFlags.prebase : 0);
|
|
55
|
+
this.push(elem);
|
|
56
|
+
}
|
|
57
|
+
;
|
|
58
|
+
}
|
|
59
|
+
isEqual(a) {
|
|
60
|
+
if (a.length != this.length) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
for (let i = 0; i < a.length; i++) {
|
|
64
|
+
if (!this[i].isEqual(a[i])) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
;
|
|
72
|
+
//# sourceMappingURL=element-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-string.js","sourceRoot":"","sources":["../../../src/kmx/element-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { KMXFile, GROUP, KEY, STORE } from './kmx.js';
|
|
2
|
+
interface BUILDER_COMP_KEYBOARD {
|
|
3
|
+
dwIdentifier: number;
|
|
4
|
+
dwFileVersion: number;
|
|
5
|
+
dwCheckSum: number;
|
|
6
|
+
KeyboardID: number;
|
|
7
|
+
IsRegistered: number;
|
|
8
|
+
version: number;
|
|
9
|
+
cxStoreArray: number;
|
|
10
|
+
cxGroupArray: number;
|
|
11
|
+
dpStoreArray: number;
|
|
12
|
+
dpGroupArray: number;
|
|
13
|
+
StartGroup_ANSI: number;
|
|
14
|
+
StartGroup_Unicode: number;
|
|
15
|
+
dwFlags: number;
|
|
16
|
+
dwHotKey: number;
|
|
17
|
+
dpBitmapOffset: number;
|
|
18
|
+
dwBitmapSize: number;
|
|
19
|
+
}
|
|
20
|
+
interface BUILDER_COMP_KEYBOARD_KMXPLUSINFO {
|
|
21
|
+
dpKMXPlus: number;
|
|
22
|
+
dwKMXPlusSize: number;
|
|
23
|
+
}
|
|
24
|
+
interface BUILDER_COMP_STORE {
|
|
25
|
+
dwSystemID: number;
|
|
26
|
+
dpName: number;
|
|
27
|
+
dpString: number;
|
|
28
|
+
}
|
|
29
|
+
interface BUILDER_COMP_KEY {
|
|
30
|
+
Key: number;
|
|
31
|
+
_padding: number;
|
|
32
|
+
Line: number;
|
|
33
|
+
ShiftFlags: number;
|
|
34
|
+
dpOutput: number;
|
|
35
|
+
dpContext: number;
|
|
36
|
+
}
|
|
37
|
+
interface BUILDER_COMP_GROUP {
|
|
38
|
+
dpName: number;
|
|
39
|
+
dpKeyArray: number;
|
|
40
|
+
dpMatch: number;
|
|
41
|
+
dpNoMatch: number;
|
|
42
|
+
cxKeyArray: number;
|
|
43
|
+
fUsingKeys: number;
|
|
44
|
+
}
|
|
45
|
+
export default class KMXBuilder {
|
|
46
|
+
file: KMXFile;
|
|
47
|
+
base_keyboard: number;
|
|
48
|
+
base_kmxplus: number;
|
|
49
|
+
comp_header: BUILDER_COMP_KEYBOARD;
|
|
50
|
+
comp_kmxplus: BUILDER_COMP_KEYBOARD_KMXPLUSINFO;
|
|
51
|
+
comp_stores: {
|
|
52
|
+
base: number;
|
|
53
|
+
store: STORE;
|
|
54
|
+
obj: BUILDER_COMP_STORE;
|
|
55
|
+
}[];
|
|
56
|
+
comp_groups: {
|
|
57
|
+
base: number;
|
|
58
|
+
group: GROUP;
|
|
59
|
+
obj: BUILDER_COMP_GROUP;
|
|
60
|
+
keys: {
|
|
61
|
+
base: number;
|
|
62
|
+
key: KEY;
|
|
63
|
+
obj: BUILDER_COMP_KEY;
|
|
64
|
+
}[];
|
|
65
|
+
}[];
|
|
66
|
+
comp_kmxplus_data: Uint8Array;
|
|
67
|
+
writeDebug: boolean;
|
|
68
|
+
constructor(file: KMXFile, writeDebug: boolean);
|
|
69
|
+
calculateStringOffsetAndSize(string: string, base: number, requireString?: boolean): number[];
|
|
70
|
+
private build;
|
|
71
|
+
buildBitmap(): number;
|
|
72
|
+
buildKMXPlus(base: number): number;
|
|
73
|
+
setString(file: Uint8Array, pos: number, str: string, requireString?: boolean): void;
|
|
74
|
+
compile(): Uint8Array;
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=kmx-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmx-builder.d.ts","sourceRoot":"","sources":["../../../src/kmx/kmx-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAStD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAErB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iCAAiC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,kBAAkB;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAK;IAC1B,YAAY,EAAE,MAAM,CAAK;IACzB,WAAW,EAAE,qBAAqB,CAAC;IACnC,YAAY,EAAE,iCAAiC,CAAC;IAChD,WAAW,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,kBAAkB,CAAA;KAAC,EAAE,CAAM;IAC1E,WAAW,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,kBAAkB,CAAC;QAAC,IAAI,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,GAAG,CAAC;YAAC,GAAG,EAAE,gBAAgB,CAAA;SAAC,EAAE,CAAA;KAAC,EAAE,CAAM;IACnI,iBAAiB,EAAE,UAAU,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAS;gBAEhB,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAK9C,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,OAAe;IASzF,OAAO,CAAC,KAAK;IAgHb,WAAW;IAKX,YAAY,CAAC,IAAI,EAAE,MAAM;IAezB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAE,OAAe,GAAG,IAAI;IAa3F,OAAO,IAAI,UAAU;CAmDtB"}
|