@keymanapp/kmc-ldml 18.0.112-alpha → 18.0.115-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/compiler/compiler.d.ts +2 -8
- package/build/src/compiler/compiler.d.ts.map +1 -1
- package/build/src/compiler/compiler.js +29 -18
- package/build/src/compiler/compiler.js.map +1 -1
- package/build/src/compiler/empty-compiler.d.ts +1 -1
- package/build/src/compiler/empty-compiler.js +1 -1
- package/build/src/compiler/vars.d.ts.map +1 -1
- package/build/src/compiler/vars.js +8 -1
- package/build/src/compiler/vars.js.map +1 -1
- package/build/src/compiler/visual-keyboard-compiler.d.ts +13 -4
- package/build/src/compiler/visual-keyboard-compiler.d.ts.map +1 -1
- package/build/src/compiler/visual-keyboard-compiler.js +84 -34
- package/build/src/compiler/visual-keyboard-compiler.js.map +1 -1
- package/package.json +9 -7
- package/build/src/compiler/keymanweb-compiler.d.ts +0 -14
- package/build/src/compiler/keymanweb-compiler.d.ts.map +0 -1
- package/build/src/compiler/keymanweb-compiler.js +0 -96
- package/build/src/compiler/keymanweb-compiler.js.map +0 -1
- package/build/src/compiler/touch-layout-compiler.d.ts +0 -9
- package/build/src/compiler/touch-layout-compiler.d.ts.map +0 -1
- package/build/src/compiler/touch-layout-compiler.js +0 -91
- package/build/src/compiler/touch-layout-compiler.js.map +0 -1
|
@@ -26,11 +26,6 @@ export interface LdmlKeyboardCompilerArtifacts extends KeymanCompilerArtifacts {
|
|
|
26
26
|
* desktop projects alongside .kmx
|
|
27
27
|
*/
|
|
28
28
|
kvk?: KeymanCompilerArtifactOptional;
|
|
29
|
-
/**
|
|
30
|
-
* Javascript keyboard filedata and filename - installable into KeymanWeb,
|
|
31
|
-
* Keyman mobile products
|
|
32
|
-
*/
|
|
33
|
-
js?: KeymanCompilerArtifactOptional;
|
|
34
29
|
}
|
|
35
30
|
export interface LdmlKeyboardCompilerResult extends KeymanCompilerResult {
|
|
36
31
|
/**
|
|
@@ -41,7 +36,7 @@ export interface LdmlKeyboardCompilerResult extends KeymanCompilerResult {
|
|
|
41
36
|
}
|
|
42
37
|
/**
|
|
43
38
|
* @public
|
|
44
|
-
* Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk
|
|
39
|
+
* Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk. The
|
|
45
40
|
* compiler does not read or write from filesystem or network directly, but
|
|
46
41
|
* relies on callbacks for all external IO.
|
|
47
42
|
*/
|
|
@@ -59,7 +54,7 @@ export declare class LdmlKeyboardCompiler implements KeymanCompiler {
|
|
|
59
54
|
*/
|
|
60
55
|
init(callbacks: CompilerCallbacks, options: LdmlCompilerOptions): Promise<boolean>;
|
|
61
56
|
/**
|
|
62
|
-
* Compiles a LDML keyboard .xml file to .kmx, .kvk
|
|
57
|
+
* Compiles a LDML keyboard .xml file to .kmx, .kvk files. Returns
|
|
63
58
|
* an object containing binary artifacts on success. The files are passed in
|
|
64
59
|
* by name, and the compiler will use callbacks as passed to the
|
|
65
60
|
* {@link LdmlKeyboardCompiler.init} function to read any input files by disk.
|
|
@@ -76,7 +71,6 @@ export declare class LdmlKeyboardCompiler implements KeymanCompiler {
|
|
|
76
71
|
*
|
|
77
72
|
* - .kmx file - binary keyboard used by Keyman on desktop platforms
|
|
78
73
|
* - .kvk file - binary on screen keyboard used by Keyman on desktop platforms
|
|
79
|
-
* - .js file - Javascript keyboard for web and touch platforms
|
|
80
74
|
*
|
|
81
75
|
* @param artifacts - object containing artifact binary data to write out
|
|
82
76
|
* @returns true on success
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAC;AACxF,OAAO,EACL,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,uBAAuB,EACvB,YAAY,EACrE,iCAAiC,EACjC,8BAA8B,EAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAA4C,MAAM,qBAAqB,CAAC;AAG7F,OAAO,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAS1E,eAAO,MAAM,iBAAiB,yMAmB7B,CAAC;AAOF;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E;;;OAGG;IACH,GAAG,CAAC,EAAE,8BAA8B,CAAC;IACrC;;;OAGG;IACH,GAAG,CAAC,EAAE,8BAA8B,CAAC;CACtC;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;OAGG;IACH,SAAS,EAAE,6BAA6B,CAAC;CAC1C;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAsB;IAGrC,OAAO,CAAC,UAAU,CAAC,CAA+B;IAElD;;;;;;;OAOG;IACG,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxF;;;;;;;;;;OAUG;IACG,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAgE9F;;;;;;;;;OASG;IACG,KAAK,CAAC,SAAS,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvE;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAehD,OAAO,CAAC,aAAa;IAIrB;;;;;;OAMG;IACI,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IA2B/D;;;;;;OAMG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,iCAAiC,GAAG,IAAI;IA2B/E,yDAAyD;IACzD,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;YACW,IAAI;IAclB;;;;;OAKG;IACU,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1E;;;;;;OAMG;IACU,OAAO,CAAC,MAAM,EAAE,yBAAyB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;CAoE9G"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Keyman is copyright (C) SIL International. MIT License.
|
|
3
|
+
*
|
|
4
|
+
* Compiles a LDML XML keyboard file into a Keyman KMXPlus file
|
|
5
|
+
*/
|
|
6
|
+
import { KMXPlus, KvkFileWriter, KMX } from '@keymanapp/common-types';
|
|
2
7
|
import { defaultCompilerOptions, LDMLKeyboardXMLSourceFileReader, KMXBuilder } from "@keymanapp/developer-utils";
|
|
3
8
|
import { LdmlCompilerMessages } from './ldml-compiler-messages.js';
|
|
4
9
|
import { BkspCompiler, TranCompiler } from './tran.js';
|
|
@@ -15,7 +20,6 @@ import { KmnCompiler } from '@keymanapp/kmc-kmn';
|
|
|
15
20
|
import { KMXPlusMetadataCompiler } from './metadata-compiler.js';
|
|
16
21
|
import { LdmlKeyboardVisualKeyboardCompiler } from './visual-keyboard-compiler.js';
|
|
17
22
|
import { LinterKeycaps } from './linter-keycaps.js';
|
|
18
|
-
//KMW17.0: import { LdmlKeyboardKeymanWebCompiler } from './keymanweb-compiler.js';
|
|
19
23
|
export const SECTION_COMPILERS = [
|
|
20
24
|
// These are in dependency order.
|
|
21
25
|
// First the former 'global' sections
|
|
@@ -43,7 +47,7 @@ const LINTERS = [
|
|
|
43
47
|
;
|
|
44
48
|
/**
|
|
45
49
|
* @public
|
|
46
|
-
* Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk
|
|
50
|
+
* Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk. The
|
|
47
51
|
* compiler does not read or write from filesystem or network directly, but
|
|
48
52
|
* relies on callbacks for all external IO.
|
|
49
53
|
*/
|
|
@@ -66,7 +70,7 @@ export class LdmlKeyboardCompiler {
|
|
|
66
70
|
return true;
|
|
67
71
|
}
|
|
68
72
|
/**
|
|
69
|
-
* Compiles a LDML keyboard .xml file to .kmx, .kvk
|
|
73
|
+
* Compiles a LDML keyboard .xml file to .kmx, .kvk files. Returns
|
|
70
74
|
* an object containing binary artifacts on success. The files are passed in
|
|
71
75
|
* by name, and the compiler will use callbacks as passed to the
|
|
72
76
|
* {@link LdmlKeyboardCompiler.init} function to read any input files by disk.
|
|
@@ -89,16 +93,29 @@ export class LdmlKeyboardCompiler {
|
|
|
89
93
|
if (!kmx) {
|
|
90
94
|
return null;
|
|
91
95
|
}
|
|
96
|
+
outputFilename = outputFilename ?? inputFilename.replace(/\.xml$/, '.kmx');
|
|
92
97
|
// In order for the KMX file to be loaded by non-KMXPlus components, it is helpful
|
|
93
98
|
// to duplicate some of the metadata
|
|
94
99
|
KMXPlusMetadataCompiler.addKmxMetadata(kmx.kmxplus, kmx.keyboard, compilerOptions);
|
|
95
100
|
// Use the builder to generate the binary output file
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
const kmxBuilder = new KMXBuilder(kmx, compilerOptions.saveDebug);
|
|
102
|
+
const keyboardId = this.callbacks.path.basename(outputFilename, '.kmx');
|
|
103
|
+
const vkCompiler = new LdmlKeyboardVisualKeyboardCompiler(this.callbacks);
|
|
104
|
+
const vkCompilerResult = vkCompiler.compile(kmx.kmxplus, keyboardId);
|
|
105
|
+
if (vkCompilerResult === null) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const vkData = typeof vkCompilerResult == 'object' ? vkCompilerResult : null;
|
|
109
|
+
if (vkData) {
|
|
110
|
+
kmx.keyboard.stores.push({
|
|
111
|
+
dpName: '',
|
|
112
|
+
dpString: keyboardId + '.kvk',
|
|
113
|
+
dwSystemID: KMX.KMXFile.TSS_VISUALKEYBOARD
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
const kmxBinary = kmxBuilder.compile();
|
|
117
|
+
const kvkWriter = new KvkFileWriter();
|
|
118
|
+
const kvkBinary = vkData ? kvkWriter.write(vkData) : null;
|
|
102
119
|
// Note: we could have a step of generating source files here
|
|
103
120
|
// KvksFileWriter()...
|
|
104
121
|
// const tlcompiler = new kmc.TouchLayoutCompiler();
|
|
@@ -108,12 +125,10 @@ export class LdmlKeyboardCompiler {
|
|
|
108
125
|
//KMW17.0: const kmw_string = kmwcompiler.compile(inputFilename, source);
|
|
109
126
|
//KMW17.0: const encoder = new TextEncoder();
|
|
110
127
|
//KMW17.0: const kmw_binary = encoder.encode(kmw_string);
|
|
111
|
-
outputFilename = outputFilename ?? inputFilename.replace(/\.xml$/, '.kmx');
|
|
112
128
|
return {
|
|
113
129
|
artifacts: {
|
|
114
|
-
kmx: { data:
|
|
115
|
-
kvk: { data:
|
|
116
|
-
//KMW17.0: js: { data: kmw_binary, filename: outputFilename.replace(/\.kmx$/, '.js') },
|
|
130
|
+
kmx: { data: kmxBinary, filename: outputFilename },
|
|
131
|
+
kvk: kvkBinary ? { data: kvkBinary, filename: outputFilename.replace(/\.kmx$/, '.kvk') } : null,
|
|
117
132
|
}
|
|
118
133
|
};
|
|
119
134
|
}
|
|
@@ -123,7 +138,6 @@ export class LdmlKeyboardCompiler {
|
|
|
123
138
|
*
|
|
124
139
|
* - .kmx file - binary keyboard used by Keyman on desktop platforms
|
|
125
140
|
* - .kvk file - binary on screen keyboard used by Keyman on desktop platforms
|
|
126
|
-
* - .js file - Javascript keyboard for web and touch platforms
|
|
127
141
|
*
|
|
128
142
|
* @param artifacts - object containing artifact binary data to write out
|
|
129
143
|
* @returns true on success
|
|
@@ -135,9 +149,6 @@ export class LdmlKeyboardCompiler {
|
|
|
135
149
|
if (artifacts.kvk) {
|
|
136
150
|
this.callbacks.fs.writeFileSync(artifacts.kvk.filename, artifacts.kvk.data);
|
|
137
151
|
}
|
|
138
|
-
if (artifacts.js) {
|
|
139
|
-
this.callbacks.fs.writeFileSync(artifacts.js.filename, artifacts.js.data);
|
|
140
|
-
}
|
|
141
152
|
return true;
|
|
142
153
|
}
|
|
143
154
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoB,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { KMXPlus } from "@keymanapp/common-types";
|
|
|
4
4
|
import { CompilerCallbacks, LDMLKeyboard } from "@keymanapp/developer-utils";
|
|
5
5
|
import { VarsCompiler } from './vars.js';
|
|
6
6
|
/**
|
|
7
|
-
* Compiler for
|
|
7
|
+
* Compiler for types that don't actually consume input XML
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class EmptyCompiler extends SectionCompiler {
|
|
10
10
|
private _id;
|
|
@@ -4,7 +4,7 @@ import { util, KMXPlus, MarkerParser } from "@keymanapp/common-types";
|
|
|
4
4
|
import { VarsCompiler } from './vars.js';
|
|
5
5
|
import { LdmlCompilerMessages } from './ldml-compiler-messages.js';
|
|
6
6
|
/**
|
|
7
|
-
* Compiler for
|
|
7
|
+
* Compiler for types that don't actually consume input XML
|
|
8
8
|
*/
|
|
9
9
|
export class EmptyCompiler extends SectionCompiler {
|
|
10
10
|
_id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAgC,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAI3B,OAAO,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,OAAO,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAK1E,OAAO,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,qBAAa,YAAa,SAAQ,eAAe;IAC/C,IAAW,EAAE,iBAEZ;IAED,IAAW,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,CAQ3C;gBAEW,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAIpE,QAAQ,IAAI,OAAO;IAQ1B,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAgC,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAI3B,OAAO,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,OAAO,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAK1E,OAAO,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,qBAAa,YAAa,SAAQ,eAAe;IAC/C,IAAW,EAAE,iBAEZ;IAED,IAAW,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,CAQ3C;gBAEW,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAIpE,QAAQ,IAAI,OAAO;IAQ1B,OAAO,CAAC,YAAY;IAkHpB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,wBAAwB;IA+BhC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,EAAG,aAAa,GAAI,OAAO;IAS/E,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAiClD,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAOrF,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAe/E,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CASxF"}
|
|
@@ -56,9 +56,16 @@ export class VarsCompiler extends SectionCompiler {
|
|
|
56
56
|
// Strings
|
|
57
57
|
for (const { id, value } of variables.string) {
|
|
58
58
|
addId(id);
|
|
59
|
-
allStrings.add(id);
|
|
60
59
|
const stringrefs = VariableParser.allStringReferences(value);
|
|
60
|
+
for (const ref of stringrefs) {
|
|
61
|
+
if (!allStrings.has(ref)) {
|
|
62
|
+
valid = false;
|
|
63
|
+
this.callbacks.reportMessage(LdmlCompilerMessages.Error_MissingStringVariable({ id: ref }));
|
|
64
|
+
allStrings.add(ref); // avoids multiple reports of same missing variable
|
|
65
|
+
}
|
|
66
|
+
}
|
|
61
67
|
st.string.add(SubstitutionUse.variable, stringrefs);
|
|
68
|
+
allStrings.add(id);
|
|
62
69
|
}
|
|
63
70
|
// Sets
|
|
64
71
|
for (const { id, value } of variables.set) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vars.js","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,IAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,IAAO,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC7C,IAAO,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACvC,IAAO,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,MAAM,OAAO,YAAa,SAAQ,eAAe;IAC/C,IAAW,EAAE;QACX,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,IAAW,YAAY;QACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAiB;YACvC,SAAS,CAAC,OAAO,CAAC,IAAI;YACtB,SAAS,CAAC,OAAO,CAAC,IAAI;YACtB,SAAS,CAAC,OAAO,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY,MAAiC,EAAE,SAA4B;QACzE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3B,CAAC;IAEM,QAAQ;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,IAAI,KAAK,CAAC,CAAC,sBAAsB;QAExE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,EAAiB;QACpC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAEjC;;;WAGG;QACH,SAAS,KAAK,CAAC,EAAU;YACvB,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,UAAU;YACV,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7C,KAAK,CAAC,EAAE,CAAC,CAAC;gBACV,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"vars.js","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { VisualKeyboard } from "@keymanapp/common-types";
|
|
2
|
-
import {
|
|
1
|
+
import { KMXPlus, VisualKeyboard } from "@keymanapp/common-types";
|
|
2
|
+
import { CompilerCallbacks } from "@keymanapp/developer-utils";
|
|
3
3
|
export declare class LdmlKeyboardVisualKeyboardCompiler {
|
|
4
4
|
private callbacks;
|
|
5
5
|
constructor(callbacks: CompilerCallbacks);
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Generate a visual keyboard
|
|
8
|
+
* @param source Compiled KMX+ data; note that this is modified to add
|
|
9
|
+
* &VISUALKEYBOARD system store on success
|
|
10
|
+
* @param keyboardId Basename of keyboard, without file extension
|
|
11
|
+
* @returns Visual keyboard data on success, null on failure, or
|
|
12
|
+
* false if no VK was generated for this keyboard
|
|
13
|
+
*/
|
|
14
|
+
compile(source: KMXPlus.KMXPlusData, keyboardId: string): VisualKeyboard.VisualKeyboard | boolean | null;
|
|
7
15
|
private compileHardwareLayer;
|
|
8
|
-
private
|
|
16
|
+
private getDisplayFromKey;
|
|
17
|
+
private translateLayerModifiersToVisualKeyboardShift;
|
|
9
18
|
}
|
|
10
19
|
//# sourceMappingURL=visual-keyboard-compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-keyboard-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/visual-keyboard-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"visual-keyboard-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/visual-keyboard-compiler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAwB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AA8B/D,qBAAa,kCAAkC;IAC1B,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAGvD;;;;;;;OAOG;IACI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI;IAuC/G,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,4CAA4C;CAuBrD"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Keyman is copyright (C) SIL International. MIT License.
|
|
3
|
+
*
|
|
4
|
+
* Export LDML data (https://www.unicode.org/reports/tr35/tr35-keyboards.html)
|
|
5
|
+
* to .kvk format. This is an interim solution until Keyman Core supports
|
|
6
|
+
* interrogation of the KMX+ data for OSK.
|
|
7
|
+
*/
|
|
8
|
+
import { ModifierKeyConstants, VisualKeyboard } from "@keymanapp/common-types";
|
|
3
9
|
import { LdmlCompilerMessages } from "./ldml-compiler-messages.js";
|
|
4
10
|
// This is a partial polyfill for findLast, so not polluting Array.prototype
|
|
5
11
|
// https://medium.com/@stheodorejohn/findlast-method-polyfill-in-javascript-bridging-browser-gaps-c3baf6aabae1
|
|
@@ -17,69 +23,113 @@ function findLast(arr, callback) {
|
|
|
17
23
|
}
|
|
18
24
|
return undefined;
|
|
19
25
|
}
|
|
26
|
+
const LDML_MODIFIER_TO_KVK_MODIFIER = new Map();
|
|
27
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.LCTRLFLAG, 8 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_LCTRL */);
|
|
28
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.RCTRLFLAG, 16 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_RCTRL */);
|
|
29
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.LALTFLAG, 32 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_LALT */);
|
|
30
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.RALTFLAG, 64 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_RALT */);
|
|
31
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.K_SHIFTFLAG, 1 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_SHIFT */);
|
|
32
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.K_CTRLFLAG, 2 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_CTRL */);
|
|
33
|
+
LDML_MODIFIER_TO_KVK_MODIFIER.set(ModifierKeyConstants.K_ALTFLAG, 4 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_ALT */);
|
|
20
34
|
export class LdmlKeyboardVisualKeyboardCompiler {
|
|
21
35
|
callbacks;
|
|
22
36
|
constructor(callbacks) {
|
|
23
37
|
this.callbacks = callbacks;
|
|
24
38
|
}
|
|
25
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Generate a visual keyboard
|
|
41
|
+
* @param source Compiled KMX+ data; note that this is modified to add
|
|
42
|
+
* &VISUALKEYBOARD system store on success
|
|
43
|
+
* @param keyboardId Basename of keyboard, without file extension
|
|
44
|
+
* @returns Visual keyboard data on success, null on failure, or
|
|
45
|
+
* false if no VK was generated for this keyboard
|
|
46
|
+
*/
|
|
47
|
+
compile(source, keyboardId) {
|
|
26
48
|
let result = new VisualKeyboard.VisualKeyboard();
|
|
27
49
|
/* TODO-LDML: consider VisualKeyboardHeaderFlags.kvkhUseUnderlying kvkhDisplayUnderlying kvkhAltGr kvkh102 */
|
|
28
50
|
result.header.flags = 0;
|
|
29
51
|
result.header.version = 0x0600;
|
|
30
|
-
|
|
31
|
-
result.header.associatedKeyboard = '';
|
|
52
|
+
result.header.associatedKeyboard = keyboardId;
|
|
32
53
|
result.header.ansiFont = { ...VisualKeyboard.DEFAULT_KVK_FONT };
|
|
33
54
|
result.header.unicodeFont = { ...VisualKeyboard.DEFAULT_KVK_FONT };
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
55
|
+
let hasVisualKeyboard = false;
|
|
56
|
+
for (let layersList of source.layr.lists) {
|
|
57
|
+
const formId = layersList.hardware.value;
|
|
58
|
+
if (formId == 'touch') {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
for (let layer of layersList.layers) {
|
|
62
|
+
const res = this.compileHardwareLayer(source, result, layer, formId);
|
|
63
|
+
if (res === false) {
|
|
64
|
+
// failed to compile the layer
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (res === null) {
|
|
68
|
+
// not a supported layer type, but not an error
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
hasVisualKeyboard = true;
|
|
38
72
|
}
|
|
39
73
|
}
|
|
74
|
+
if (!hasVisualKeyboard) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
40
77
|
return result;
|
|
41
78
|
}
|
|
42
79
|
compileHardwareLayer(source, vk, layer, hardware) {
|
|
43
|
-
const layerId = layer.id;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidHardware({ formId: hardware }));
|
|
50
|
-
return;
|
|
80
|
+
const layerId = layer.id.value;
|
|
81
|
+
hardware = 'us'; // TODO-LDML: US Only. We need to clean this up for other hardware forms
|
|
82
|
+
const shift = this.translateLayerModifiersToVisualKeyboardShift(layer.mod);
|
|
83
|
+
if (shift === null) {
|
|
84
|
+
// Caps (num, scroll) is not a supported shift state in .kvk
|
|
85
|
+
return null;
|
|
51
86
|
}
|
|
52
|
-
|
|
87
|
+
let result = true;
|
|
53
88
|
let y = -1;
|
|
54
|
-
for (let row of layer.
|
|
89
|
+
for (let row of layer.rows) {
|
|
55
90
|
y++;
|
|
56
|
-
const keys = row.keys.split(' ');
|
|
57
91
|
let x = -1;
|
|
58
|
-
for (let key of keys) {
|
|
59
|
-
const keyId = key;
|
|
92
|
+
for (let key of row.keys) {
|
|
60
93
|
x++;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
94
|
+
const keydef = findLast(source.keys?.keys, (kd) => kd.id.value == key.value);
|
|
95
|
+
const kmap = source.keys.kmap.find(k => k.key == keydef.id.value && k.mod == layer.mod);
|
|
96
|
+
const text = this.getDisplayFromKey(keydef, source) ?? null;
|
|
97
|
+
if (!keydef || !kmap || text === null) {
|
|
98
|
+
this.callbacks.reportMessage(LdmlCompilerMessages.Error_KeyNotFoundInKeyBag({ keyId: key.value, layer: layerId, row: y, col: x, form: hardware }));
|
|
99
|
+
result = false;
|
|
65
100
|
}
|
|
66
101
|
else {
|
|
67
102
|
vk.keys.push({
|
|
68
103
|
flags: 2 /* VisualKeyboard.VisualKeyboardKeyFlags.kvkkUnicode */,
|
|
69
|
-
shift
|
|
70
|
-
text
|
|
71
|
-
vkey:
|
|
104
|
+
shift,
|
|
105
|
+
text,
|
|
106
|
+
vkey: kmap.vkey
|
|
72
107
|
});
|
|
73
108
|
}
|
|
74
109
|
}
|
|
75
110
|
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
getDisplayFromKey(keydef, source) {
|
|
114
|
+
const display = source.disp?.disps?.find(d => d.id.value == keydef.id.value || d.to.value == keydef.to.value);
|
|
115
|
+
return display?.display.value ?? keydef.to.value;
|
|
76
116
|
}
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
return 0
|
|
117
|
+
translateLayerModifiersToVisualKeyboardShift(modifiers) {
|
|
118
|
+
if (modifiers == 0) {
|
|
119
|
+
return 0 /* VisualKeyboard.VisualKeyboardShiftState.KVKS_NORMAL */;
|
|
120
|
+
}
|
|
121
|
+
if (modifiers &
|
|
122
|
+
(ModifierKeyConstants.CAPITALFLAG | ModifierKeyConstants.NUMLOCKFLAG | ModifierKeyConstants.SCROLLFLAG)) {
|
|
123
|
+
// Caps/Num/Scroll are not supported in .kvk, in combination or alone
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
let shift = 0;
|
|
127
|
+
for (const mod of LDML_MODIFIER_TO_KVK_MODIFIER.keys()) {
|
|
128
|
+
if (modifiers & mod) {
|
|
129
|
+
shift |= LDML_MODIFIER_TO_KVK_MODIFIER.get(mod);
|
|
130
|
+
}
|
|
80
131
|
}
|
|
81
|
-
|
|
82
|
-
return 0;
|
|
132
|
+
return shift;
|
|
83
133
|
}
|
|
84
134
|
}
|
|
85
135
|
//# sourceMappingURL=visual-keyboard-compiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-keyboard-compiler.js","sourceRoot":"","sources":["../../../src/compiler/visual-keyboard-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"visual-keyboard-compiler.js","sourceRoot":"","sources":["../../../src/compiler/visual-keyboard-compiler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -25,20 +25,22 @@
|
|
|
25
25
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@keymanapp/
|
|
29
|
-
"@keymanapp/
|
|
30
|
-
"@keymanapp/kmc-kmn": "18.0.
|
|
31
|
-
"@keymanapp/ldml-keyboard-constants": "18.0.
|
|
28
|
+
"@keymanapp/developer-utils": "18.0.115-alpha",
|
|
29
|
+
"@keymanapp/keyman-version": "18.0.115-alpha",
|
|
30
|
+
"@keymanapp/kmc-kmn": "18.0.115-alpha",
|
|
31
|
+
"@keymanapp/ldml-keyboard-constants": "18.0.115-alpha",
|
|
32
32
|
"semver": "^7.5.4"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@keymanapp/developer-test-helpers": "18.0.
|
|
36
|
-
"@keymanapp/resources-gosh": "18.0.
|
|
35
|
+
"@keymanapp/developer-test-helpers": "18.0.115-alpha",
|
|
36
|
+
"@keymanapp/resources-gosh": "18.0.115-alpha",
|
|
37
|
+
"@types/common-tags": "^1.8.4",
|
|
37
38
|
"@types/mocha": "^5.2.7",
|
|
38
39
|
"@types/node": "^20.4.1",
|
|
39
40
|
"@types/semver": "^7.3.12",
|
|
40
41
|
"c8": "^7.12.0",
|
|
41
42
|
"chalk": "^2.4.2",
|
|
43
|
+
"common-tags": "^1.8.2",
|
|
42
44
|
"mocha": "^8.4.0",
|
|
43
45
|
"typescript": "^5.4.5"
|
|
44
46
|
},
|
|
@@ -62,5 +64,5 @@
|
|
|
62
64
|
"type": "git",
|
|
63
65
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
64
66
|
},
|
|
65
|
-
"version": "18.0.
|
|
67
|
+
"version": "18.0.115-alpha"
|
|
66
68
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CompilerCallbacks, LDMLKeyboard } from "@keymanapp/developer-utils";
|
|
2
|
-
import { LdmlCompilerOptions } from "./ldml-compiler-options.js";
|
|
3
|
-
export declare class LdmlKeyboardKeymanWebCompiler {
|
|
4
|
-
private callbacks;
|
|
5
|
-
private readonly options;
|
|
6
|
-
private readonly nl;
|
|
7
|
-
private readonly tab;
|
|
8
|
-
constructor(callbacks: CompilerCallbacks, options?: LdmlCompilerOptions);
|
|
9
|
-
compileVisualKeyboard(source: LDMLKeyboard.LDMLKeyboardXMLSourceFile): string;
|
|
10
|
-
compileTouchLayout(source: LDMLKeyboard.LDMLKeyboardXMLSourceFile): string;
|
|
11
|
-
private cleanName;
|
|
12
|
-
compile(name: string, source: LDMLKeyboard.LDMLKeyboardXMLSourceFile): string;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=keymanweb-compiler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keymanweb-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/keymanweb-compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAyB,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAMjE,qBAAa,6BAA6B;IAI5B,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBACT,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAMxE,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,yBAAyB;IAgBpE,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,yBAAyB;IAOxE,OAAO,CAAC,SAAS;IAcV,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,yBAAyB,GAAG,MAAM;CA0DrF"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { VisualKeyboard } from "@keymanapp/common-types";
|
|
2
|
-
import { TouchLayoutFileWriter } from "@keymanapp/developer-utils";
|
|
3
|
-
import { TouchLayoutCompiler } from "./touch-layout-compiler.js";
|
|
4
|
-
import { LdmlKeyboardVisualKeyboardCompiler } from "./visual-keyboard-compiler.js";
|
|
5
|
-
const MINIMUM_KMW_VERSION = '16.0';
|
|
6
|
-
export class LdmlKeyboardKeymanWebCompiler {
|
|
7
|
-
callbacks;
|
|
8
|
-
options;
|
|
9
|
-
nl;
|
|
10
|
-
tab;
|
|
11
|
-
constructor(callbacks, options) {
|
|
12
|
-
this.callbacks = callbacks;
|
|
13
|
-
this.options = { ...options };
|
|
14
|
-
this.nl = this.options.saveDebug ? "\n" : '';
|
|
15
|
-
this.tab = this.options.saveDebug ? " " : '';
|
|
16
|
-
}
|
|
17
|
-
compileVisualKeyboard(source) {
|
|
18
|
-
const nl = this.nl, tab = this.tab;
|
|
19
|
-
const vkc = new LdmlKeyboardVisualKeyboardCompiler(this.callbacks);
|
|
20
|
-
const vk = vkc.compile(source);
|
|
21
|
-
let result = `{F: ' 1em ${JSON.stringify(vk.header.unicodeFont.name)}', ` +
|
|
22
|
-
`K102: ${vk.header.flags & 1 /* VisualKeyboard.VisualKeyboardHeaderFlags.kvkh102 */ ? 1 : 0}};${nl}` + // TODO-LDML: escape ' and " in font name correctly
|
|
23
|
-
`${tab}this.KV.KLS={${nl}` +
|
|
24
|
-
`${tab}${tab}TODO_LDML: ${vk.keys.length}${nl}` +
|
|
25
|
-
// TODO-LDML: fill in KLS
|
|
26
|
-
`${tab}}`;
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
compileTouchLayout(source) {
|
|
30
|
-
const tlcompiler = new TouchLayoutCompiler();
|
|
31
|
-
const layout = tlcompiler.compileToJavascript(source);
|
|
32
|
-
const writer = new TouchLayoutFileWriter({ formatted: this.options.saveDebug });
|
|
33
|
-
return writer.compile(layout);
|
|
34
|
-
}
|
|
35
|
-
cleanName(name) {
|
|
36
|
-
let result = this.callbacks.path.basename(name, ".xml" /* KeymanFileTypes.Source.LdmlKeyboard */);
|
|
37
|
-
if (!result) {
|
|
38
|
-
throw new Error(`Invalid file name ${name}`);
|
|
39
|
-
}
|
|
40
|
-
result = result.replaceAll(/[^a-z0-9]/g, '_');
|
|
41
|
-
if (result.match(/^[0-9]/)) {
|
|
42
|
-
// Can't have a digit as initial
|
|
43
|
-
result = '_' + result;
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
|
-
compile(name, source) {
|
|
48
|
-
const nl = this.nl, tab = this.tab;
|
|
49
|
-
const sName = 'Keyboard_' + this.cleanName(name);
|
|
50
|
-
const displayUnderlying = true; // TODO-LDML
|
|
51
|
-
const modifierBitmask = 0; // TODO-LDML: define the modifiers used by this keyboard
|
|
52
|
-
const vkDictionary = ''; // TODO-LDML: vk dictionary for touch keys
|
|
53
|
-
const hasSupplementaryPlaneChars = false; // TODO-LDML
|
|
54
|
-
const isRTL = false; // TODO-LDML
|
|
55
|
-
let result = `if(typeof keyman === 'undefined') {${nl}` +
|
|
56
|
-
`${tab}console.error('Keyboard requires KeymanWeb ${MINIMUM_KMW_VERSION} or later');${nl}` +
|
|
57
|
-
`} else {${nl}` +
|
|
58
|
-
`${tab}KeymanWeb.KR(new ${sName}());${nl}` +
|
|
59
|
-
`}${nl}` +
|
|
60
|
-
`function ${sName}() {${nl}` +
|
|
61
|
-
// `${tab}${this.setupDebug()}${nl}` + ? we may use this for modifierBitmask in future
|
|
62
|
-
// `${tab}this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;${nl}` + ? we probably don't need this, it's for back-compat
|
|
63
|
-
`${tab}this.KI="${sName}";${nl}` +
|
|
64
|
-
`${tab}this.KN=${JSON.stringify(source.keyboard3.info.name)};${nl}` +
|
|
65
|
-
`${tab}this.KMINVER=${JSON.stringify(MINIMUM_KMW_VERSION)};${nl}` +
|
|
66
|
-
`${tab}this.KV=${this.compileVisualKeyboard(source)};${nl}` +
|
|
67
|
-
`${tab}this.KDU=${displayUnderlying ? '1' : '0'};${nl}` +
|
|
68
|
-
`${tab}this.KH="";${nl}` + // TODO-LDML: help text not supported
|
|
69
|
-
`${tab}this.KM=0;${nl}` + // TODO-LDML: mnemonic layout not supported for LDML keyboards
|
|
70
|
-
`${tab}this.KBVER=${JSON.stringify(source.keyboard3.version?.number || '0.0')};${nl}` +
|
|
71
|
-
`${tab}this.KMBM=${modifierBitmask};${nl}`;
|
|
72
|
-
if (isRTL) {
|
|
73
|
-
result += `${tab}this.KRTL=1;${nl}`;
|
|
74
|
-
}
|
|
75
|
-
if (hasSupplementaryPlaneChars) {
|
|
76
|
-
result += `${tab}this.KS=1;${nl}`;
|
|
77
|
-
}
|
|
78
|
-
if (vkDictionary != '') {
|
|
79
|
-
result += `${tab}this.KVKD=${JSON.stringify(vkDictionary)};${nl}`;
|
|
80
|
-
}
|
|
81
|
-
let layoutFile = this.compileTouchLayout(source);
|
|
82
|
-
if (layoutFile != '') {
|
|
83
|
-
result += `${tab}this.KVKL=${layoutFile};${nl}`;
|
|
84
|
-
}
|
|
85
|
-
// TODO-LDML: KCSS not supported
|
|
86
|
-
// TODO-LDML: embed binary keyboard for loading into Core
|
|
87
|
-
// A LDML keyboard has a no-op for its gs() (begin Unicode) function,
|
|
88
|
-
// because the functionality is embedded in Keyman Core
|
|
89
|
-
result += `${tab}this.gs=function(t,e){${nl}` +
|
|
90
|
-
`${tab}${tab}return 0;${nl}` + // TODO-LDML: we will start by embedding call into Keyman Core here
|
|
91
|
-
`${tab}};${nl}`;
|
|
92
|
-
result += `}${nl}`;
|
|
93
|
-
return result;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=keymanweb-compiler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keymanweb-compiler.js","sourceRoot":"","sources":["../../../src/compiler/keymanweb-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { TouchLayout } from "@keymanapp/common-types";
|
|
2
|
-
import { LDMLKeyboard } from "@keymanapp/developer-utils";
|
|
3
|
-
export declare class TouchLayoutCompiler {
|
|
4
|
-
compileToJavascript(source: LDMLKeyboard.LDMLKeyboardXMLSourceFile): TouchLayout.TouchLayoutFile;
|
|
5
|
-
private compileHardwareLayer;
|
|
6
|
-
private translateLayerIdToTouchLayoutLayerId;
|
|
7
|
-
private translateKeyIdentifierToTouch;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=touch-layout-compiler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"touch-layout-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/touch-layout-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,qBAAa,mBAAmB;IACvB,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,yBAAyB,GAAG,WAAW,CAAC,eAAe;IAkBvG,OAAO,CAAC,oBAAoB;IAuC5B,OAAO,CAAC,oCAAoC;IAsC5C,OAAO,CAAC,6BAA6B;CAatC"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
export class TouchLayoutCompiler {
|
|
2
|
-
compileToJavascript(source) {
|
|
3
|
-
let result = {};
|
|
4
|
-
// start with desktop to mimic vk emit
|
|
5
|
-
result.desktop = {
|
|
6
|
-
defaultHint: "none", // TODO-LDML this should be optional
|
|
7
|
-
layer: []
|
|
8
|
-
};
|
|
9
|
-
for (let layers of source.keyboard3.layers) {
|
|
10
|
-
for (let layer of layers.layer) {
|
|
11
|
-
const resultLayer = this.compileHardwareLayer(source, result, layer);
|
|
12
|
-
result.desktop.layer.push(resultLayer);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return result;
|
|
16
|
-
}
|
|
17
|
-
compileHardwareLayer(source, file, layer) {
|
|
18
|
-
// TODO-LDML: consider consolidation with keys.ts?
|
|
19
|
-
let fileLayer = {
|
|
20
|
-
id: this.translateLayerIdToTouchLayoutLayerId(layer.id, layer.modifiers),
|
|
21
|
-
row: []
|
|
22
|
-
};
|
|
23
|
-
let y = -1;
|
|
24
|
-
for (let row of layer.row) {
|
|
25
|
-
y++;
|
|
26
|
-
let fileRow = { id: y, key: [] };
|
|
27
|
-
fileLayer.row.push(fileRow);
|
|
28
|
-
const keys = row.keys.split(' ');
|
|
29
|
-
for (let key of keys) {
|
|
30
|
-
const keydef = source.keyboard3.keys?.key?.find(x => x.id == key);
|
|
31
|
-
if (keydef) {
|
|
32
|
-
const fileKey = {
|
|
33
|
-
id: this.translateKeyIdentifierToTouch(keydef.id),
|
|
34
|
-
text: keydef.output || '',
|
|
35
|
-
// TODO-LDML: additional properties
|
|
36
|
-
};
|
|
37
|
-
fileRow.key.push(fileKey);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// TODO-LDML: consider logging missing keys
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return fileLayer;
|
|
45
|
-
}
|
|
46
|
-
translateLayerIdToTouchLayoutLayerId(id, modifier) {
|
|
47
|
-
// Touch layout layers have a set of reserved names that correspond to
|
|
48
|
-
// hardware modifiers. We want to map these identifiers first before falling
|
|
49
|
-
// back to the layer ids
|
|
50
|
-
// The set of recognized layer identifiers is:
|
|
51
|
-
//
|
|
52
|
-
// touch | LDML
|
|
53
|
-
// ---------------+-------------
|
|
54
|
-
// default | none
|
|
55
|
-
// shift | shift
|
|
56
|
-
// caps | caps
|
|
57
|
-
// rightalt | altR
|
|
58
|
-
// rightalt-shift | altR shift
|
|
59
|
-
//
|
|
60
|
-
const map = {
|
|
61
|
-
none: 'default',
|
|
62
|
-
shift: 'shift',
|
|
63
|
-
caps: 'caps',
|
|
64
|
-
altR: 'rightalt',
|
|
65
|
-
"altR shift": 'rightalt-shift'
|
|
66
|
-
};
|
|
67
|
-
// canonicalize modifier string, alphabetical
|
|
68
|
-
// TODO-LDML: need to support multiple here
|
|
69
|
-
if (modifier && modifier.indexOf(',') !== -1) {
|
|
70
|
-
throw Error(`Internal error: TODO-LDML: multiple modifiers ${modifier} not yet supported.`);
|
|
71
|
-
}
|
|
72
|
-
modifier = (modifier || '').split(/\b/).sort().join(' ').trim();
|
|
73
|
-
if (Object.hasOwn(map, modifier)) {
|
|
74
|
-
return map[modifier];
|
|
75
|
-
}
|
|
76
|
-
// TODO-LDML: Other layer names will be used unmodified, is this sufficient?
|
|
77
|
-
return id;
|
|
78
|
-
}
|
|
79
|
-
translateKeyIdentifierToTouch(id) {
|
|
80
|
-
// Note: keys identifiers in kmx were traditionally case-insensitive, but we
|
|
81
|
-
// are going to use them as case-insensitive for LDML keyboards. The set of
|
|
82
|
-
// standard key identifiers a-z, A-Z, 0-9 will be used, where possible, and
|
|
83
|
-
// all other keys will be mapped to `T_key`.
|
|
84
|
-
if (id.match(/^[0-9a-zA-Z]$/)) {
|
|
85
|
-
return 'K_' + id;
|
|
86
|
-
}
|
|
87
|
-
// Not a standard key
|
|
88
|
-
return 'T_' + id;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=touch-layout-compiler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"touch-layout-compiler.js","sourceRoot":"","sources":["../../../src/compiler/touch-layout-compiler.ts"],"names":[],"mappings":"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"}
|