@keymanapp/common-types 18.0.17-alpha → 18.0.18-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.
Files changed (147) hide show
  1. package/build/src/consts/virtual-key-constants.js +222 -221
  2. package/build/src/consts/virtual-key-constants.js.map +1 -1
  3. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js +73 -72
  4. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -1
  5. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js +121 -120
  6. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -1
  7. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js +55 -54
  8. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js.map +1 -1
  9. package/build/src/kmx/element-string.d.ts.map +1 -1
  10. package/build/src/kmx/element-string.js +126 -120
  11. package/build/src/kmx/element-string.js.map +1 -1
  12. package/build/src/kmx/keyman-targets.js +80 -79
  13. package/build/src/kmx/keyman-targets.js.map +1 -1
  14. package/build/src/kmx/kmx-builder.js +190 -189
  15. package/build/src/kmx/kmx-builder.js.map +1 -1
  16. package/build/src/kmx/kmx-file-reader.js +135 -134
  17. package/build/src/kmx/kmx-file-reader.js.map +1 -1
  18. package/build/src/kmx/kmx-plus-builder/build-disp.js +28 -27
  19. package/build/src/kmx/kmx-plus-builder/build-disp.js.map +1 -1
  20. package/build/src/kmx/kmx-plus-builder/build-elem.js +90 -89
  21. package/build/src/kmx/kmx-plus-builder/build-elem.js.map +1 -1
  22. package/build/src/kmx/kmx-plus-builder/build-keys.js +108 -107
  23. package/build/src/kmx/kmx-plus-builder/build-keys.js.map +1 -1
  24. package/build/src/kmx/kmx-plus-builder/build-layr.js +102 -101
  25. package/build/src/kmx/kmx-plus-builder/build-layr.js.map +1 -1
  26. package/build/src/kmx/kmx-plus-builder/build-list.js +67 -66
  27. package/build/src/kmx/kmx-plus-builder/build-list.js.map +1 -1
  28. package/build/src/kmx/kmx-plus-builder/build-loca.js +22 -21
  29. package/build/src/kmx/kmx-plus-builder/build-loca.js.map +1 -1
  30. package/build/src/kmx/kmx-plus-builder/build-meta.js +23 -22
  31. package/build/src/kmx/kmx-plus-builder/build-meta.js.map +1 -1
  32. package/build/src/kmx/kmx-plus-builder/build-sect.js +16 -15
  33. package/build/src/kmx/kmx-plus-builder/build-sect.js.map +1 -1
  34. package/build/src/kmx/kmx-plus-builder/build-strs.js +47 -46
  35. package/build/src/kmx/kmx-plus-builder/build-strs.js.map +1 -1
  36. package/build/src/kmx/kmx-plus-builder/build-tran.js +70 -69
  37. package/build/src/kmx/kmx-plus-builder/build-tran.js.map +1 -1
  38. package/build/src/kmx/kmx-plus-builder/build-uset.js +61 -60
  39. package/build/src/kmx/kmx-plus-builder/build-uset.js.map +1 -1
  40. package/build/src/kmx/kmx-plus-builder/build-vars.js +49 -48
  41. package/build/src/kmx/kmx-plus-builder/build-vars.js.map +1 -1
  42. package/build/src/kmx/kmx-plus-builder/builder-section.js +5 -4
  43. package/build/src/kmx/kmx-plus-builder/builder-section.js.map +1 -1
  44. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js +138 -137
  45. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -1
  46. package/build/src/kmx/kmx-plus.d.ts +3 -2
  47. package/build/src/kmx/kmx-plus.d.ts.map +1 -1
  48. package/build/src/kmx/kmx-plus.js +831 -823
  49. package/build/src/kmx/kmx-plus.js.map +1 -1
  50. package/build/src/kmx/kmx.d.ts.map +1 -1
  51. package/build/src/kmx/kmx.js +303 -299
  52. package/build/src/kmx/kmx.js.map +1 -1
  53. package/build/src/kmx/string-list.js +89 -88
  54. package/build/src/kmx/string-list.js.map +1 -1
  55. package/build/src/kpj/keyman-developer-project.js +196 -195
  56. package/build/src/kpj/keyman-developer-project.js.map +1 -1
  57. package/build/src/kpj/kpj-file-reader.js +120 -119
  58. package/build/src/kpj/kpj-file-reader.js.map +1 -1
  59. package/build/src/kpj/kpj-file.js +13 -12
  60. package/build/src/kpj/kpj-file.js.map +1 -1
  61. package/build/src/kvk/kvk-file-reader.js +38 -37
  62. package/build/src/kvk/kvk-file-reader.js.map +1 -1
  63. package/build/src/kvk/kvk-file-writer.js +78 -77
  64. package/build/src/kvk/kvk-file-writer.js.map +1 -1
  65. package/build/src/kvk/kvk-file.js +91 -90
  66. package/build/src/kvk/kvk-file.js.map +1 -1
  67. package/build/src/kvk/kvks-file-reader.js +176 -175
  68. package/build/src/kvk/kvks-file-reader.js.map +1 -1
  69. package/build/src/kvk/kvks-file-writer.js +107 -106
  70. package/build/src/kvk/kvks-file-writer.js.map +1 -1
  71. package/build/src/kvk/kvks-file.js +12 -11
  72. package/build/src/kvk/kvks-file.js.map +1 -1
  73. package/build/src/kvk/visual-keyboard.js +76 -75
  74. package/build/src/kvk/visual-keyboard.js.map +1 -1
  75. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js +22 -21
  76. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -1
  77. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js +410 -409
  78. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -1
  79. package/build/src/ldml-keyboard/ldml-keyboard-xml.js +58 -57
  80. package/build/src/ldml-keyboard/ldml-keyboard-xml.js.map +1 -1
  81. package/build/src/ldml-keyboard/pattern-parser.js +491 -490
  82. package/build/src/ldml-keyboard/pattern-parser.js.map +1 -1
  83. package/build/src/ldml-keyboard/unicodeset-parser-api.js +30 -29
  84. package/build/src/ldml-keyboard/unicodeset-parser-api.js.map +1 -1
  85. package/build/src/main.js +35 -34
  86. package/build/src/main.js.map +1 -1
  87. package/build/src/package/kmp-json-file.js +4 -3
  88. package/build/src/package/kmp-json-file.js.map +1 -1
  89. package/build/src/package/kps-file.js +18 -17
  90. package/build/src/package/kps-file.js.map +1 -1
  91. package/build/src/schema-validators.js +28 -27
  92. package/build/src/schema-validators.js.map +1 -1
  93. package/build/src/schemas/displaymap.schema.js +38 -37
  94. package/build/src/schemas/displaymap.schema.js.map +1 -1
  95. package/build/src/schemas/displaymap.schema.validator.mjs +267 -266
  96. package/build/src/schemas/displaymap.schema.validator.mjs.map +1 -1
  97. package/build/src/schemas/keyboard_info.schema.js +101 -100
  98. package/build/src/schemas/keyboard_info.schema.js.map +1 -1
  99. package/build/src/schemas/keyboard_info.schema.validator.mjs +1161 -1160
  100. package/build/src/schemas/keyboard_info.schema.validator.mjs.map +1 -1
  101. package/build/src/schemas/keyman-touch-layout.clean.spec.js +154 -153
  102. package/build/src/schemas/keyman-touch-layout.clean.spec.js.map +1 -1
  103. package/build/src/schemas/keyman-touch-layout.clean.spec.validator.mjs +1095 -1094
  104. package/build/src/schemas/keyman-touch-layout.clean.spec.validator.mjs.map +1 -1
  105. package/build/src/schemas/keyman-touch-layout.spec.js +143 -142
  106. package/build/src/schemas/keyman-touch-layout.spec.js.map +1 -1
  107. package/build/src/schemas/keyman-touch-layout.spec.validator.mjs +1437 -1436
  108. package/build/src/schemas/keyman-touch-layout.spec.validator.mjs.map +1 -1
  109. package/build/src/schemas/kmp.schema.js +356 -355
  110. package/build/src/schemas/kmp.schema.js.map +1 -1
  111. package/build/src/schemas/kmp.schema.validator.mjs +1628 -1627
  112. package/build/src/schemas/kmp.schema.validator.mjs.map +1 -1
  113. package/build/src/schemas/kpj-9.0.schema.js +134 -133
  114. package/build/src/schemas/kpj-9.0.schema.js.map +1 -1
  115. package/build/src/schemas/kpj-9.0.schema.validator.mjs +656 -655
  116. package/build/src/schemas/kpj-9.0.schema.validator.mjs.map +1 -1
  117. package/build/src/schemas/kpj.schema.js +132 -131
  118. package/build/src/schemas/kpj.schema.js.map +1 -1
  119. package/build/src/schemas/kpj.schema.validator.mjs +516 -515
  120. package/build/src/schemas/kpj.schema.validator.mjs.map +1 -1
  121. package/build/src/schemas/kvks.schema.js +185 -184
  122. package/build/src/schemas/kvks.schema.js.map +1 -1
  123. package/build/src/schemas/kvks.schema.validator.mjs +626 -625
  124. package/build/src/schemas/kvks.schema.validator.mjs.map +1 -1
  125. package/build/src/schemas/ldml-keyboard3.schema.js +699 -698
  126. package/build/src/schemas/ldml-keyboard3.schema.js.map +1 -1
  127. package/build/src/schemas/ldml-keyboard3.schema.validator.mjs +3118 -3117
  128. package/build/src/schemas/ldml-keyboard3.schema.validator.mjs.map +1 -1
  129. package/build/src/schemas/ldml-keyboardtest3.schema.js +228 -227
  130. package/build/src/schemas/ldml-keyboardtest3.schema.js.map +1 -1
  131. package/build/src/schemas/ldml-keyboardtest3.schema.validator.mjs +745 -744
  132. package/build/src/schemas/ldml-keyboardtest3.schema.validator.mjs.map +1 -1
  133. package/build/src/schemas.js +26 -25
  134. package/build/src/schemas.js.map +1 -1
  135. package/build/src/util/common-events.js +29 -28
  136. package/build/src/util/common-events.js.map +1 -1
  137. package/build/src/util/compiler-interfaces.js +381 -380
  138. package/build/src/util/compiler-interfaces.js.map +1 -1
  139. package/build/src/util/errors.js +8 -7
  140. package/build/src/util/errors.js.map +1 -1
  141. package/build/src/util/file-types.js +143 -142
  142. package/build/src/util/file-types.js.map +1 -1
  143. package/build/src/util/util.d.ts +4 -0
  144. package/build/src/util/util.d.ts.map +1 -1
  145. package/build/src/util/util.js +369 -362
  146. package/build/src/util/util.js.map +1 -1
  147. package/package.json +2 -2
@@ -1,300 +1,304 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ad3ae357-c8ad-5ab6-bbf3-1107592833cf")}catch(e){}}();
2
- import * as r from 'restructure';
3
- /* Definitions from kmx_file.h. Must be kept in sync */
4
- // TODO: split kmx-file from kmx in-memory, similar to what I've done for kvk (keep restructure decl + BUILDER_ interfaces together)
5
- // In memory representations of KMX structures
6
- // kmx-builder will transform these to the corresponding COMP_xxxx
7
- export class KEYBOARD {
8
- fileVersion; // dwFileVersion (TSS_FILEVERSION)
9
- startGroup = { ansi: -1, unicode: -1, newContext: -1, postKeystroke: -1 };
10
- flags;
11
- hotkey;
12
- //bitmap:
13
- groups = [];
14
- stores = [];
15
- // Following values are extracted from stores[] but are
16
- // informative only
17
- keyboardVersion; // version (TSS_KEYBOARDVERSION)
18
- isMnemonic; // TSS_MNEMONICLAYOUT store
19
- targets; // TSS_TARGETS store ('desktop' if missing)
20
- }
21
- ;
22
- export class STORE {
23
- dwSystemID;
24
- dpName;
25
- dpString;
26
- }
27
- ;
28
- export class GROUP {
29
- dpName;
30
- keys = [];
31
- dpMatch;
32
- dpNoMatch;
33
- fUsingKeys;
34
- }
35
- ;
36
- export class KEY {
37
- Key;
38
- Line;
39
- ShiftFlags;
40
- dpOutput;
41
- dpContext;
42
- }
43
- ;
44
- ;
45
- ;
46
- ;
47
- ;
48
- ;
49
- export class KMXFile {
50
- /* KMX file structures */
51
- COMP_STORE;
52
- COMP_KEY;
53
- COMP_GROUP;
54
- COMP_KEYBOARD_KMXPLUSINFO;
55
- COMP_KEYBOARD;
56
- static FILEID_COMPILED = 0x5354584B; // 'KXTS'
57
- //
58
- // File version identifiers (COMP_KEYBOARD.dwFileVersion)
59
- //
60
- static VERSION_30 = 0x00000300;
61
- static VERSION_31 = 0x00000301;
62
- static VERSION_32 = 0x00000302;
63
- static VERSION_40 = 0x00000400;
64
- static VERSION_50 = 0x00000500;
65
- static VERSION_501 = 0x00000501;
66
- static VERSION_60 = 0x00000600;
67
- static VERSION_70 = 0x00000700;
68
- static VERSION_80 = 0x00000800;
69
- static VERSION_90 = 0x00000900;
70
- static VERSION_100 = 0x00000A00;
71
- static VERSION_140 = 0x00000E00;
72
- static VERSION_150 = 0x00000F00;
73
- static VERSION_160 = 0x00001000;
74
- static VERSION_170 = 0x00001100;
75
- static VERSION_MIN = this.VERSION_50;
76
- static VERSION_MAX = this.VERSION_170;
77
- //
78
- // Backspace types
79
- //
80
- static BK_DEFAULT = 0;
81
- static BK_DEADKEY = 1;
82
- // Different begin types (COMP_STORE.StartGroup_*)
83
- static BEGIN_ANSI = 0;
84
- static BEGIN_UNICODE = 1;
85
- //
86
- // System Store values (COMP_STORE.dwSystemID)
87
- //
88
- static TSS_NONE = 0;
89
- static TSS_BITMAP = 1;
90
- static TSS_COPYRIGHT = 2;
91
- static TSS_HOTKEY = 3;
92
- static TSS_LANGUAGE = 4;
93
- static TSS_LAYOUT = 5;
94
- static TSS_MESSAGE = 6;
95
- static TSS_NAME = 7;
96
- static TSS_VERSION = 8;
97
- static TSS_CAPSONONLY = 9;
98
- static TSS_CAPSALWAYSOFF = 10;
99
- static TSS_SHIFTFREESCAPS = 11;
100
- static TSS_LANGUAGENAME = 12;
101
- static TSS_CALLDEFINITION = 13;
102
- static TSS_CALLDEFINITION_LOADFAILED = 14;
103
- static TSS_ETHNOLOGUECODE = 15;
104
- static TSS_DEBUG_LINE = 16;
105
- static TSS_MNEMONIC = 17;
106
- static TSS_INCLUDECODES = 18;
107
- static TSS_OLDCHARPOSMATCHING = 19;
108
- static TSS_COMPILEDVERSION = 20;
109
- static TSS_KEYMANCOPYRIGHT = 21;
110
- static TSS_CUSTOMKEYMANEDITION = 22;
111
- static TSS_CUSTOMKEYMANEDITIONNAME = 23;
112
- /* Keyman 7.0 system stores */
113
- static TSS__KEYMAN_60_MAX = 23;
114
- static TSS_VISUALKEYBOARD = 24;
115
- static TSS_KMW_RTL = 25;
116
- static TSS_KMW_HELPFILE = 26;
117
- static TSS_KMW_HELPTEXT = 27;
118
- static TSS_KMW_EMBEDJS = 28;
119
- static TSS_WINDOWSLANGUAGES = 29;
120
- static TSS__KEYMAN_70_MAX = 29;
121
- /* Keyman 8.0 system stores */
122
- static TSS_COMPARISON = 30;
123
- static TSS__KEYMAN_80_MAX = 30;
124
- /* Keyman 9.0 system stores */
125
- static TSS_PLATFORM = 31;
126
- static TSS_BASELAYOUT = 32;
127
- static TSS_LAYER = 33;
128
- static TSS_PLATFORM_NOMATCH = 0x8001; // Reserved for internal use - after platform statement is run, set to either TSS_PLATFORM_NOMATCH or TSS_PLATFORM_MATCH
129
- static TSS_PLATFORM_MATCH = 0x8002; // Reserved for internal use - as the result will never change for the lifetime of the process.
130
- static TSS_VKDICTIONARY = 34; // Dictionary of virtual key names for v9 dynamic layouts
131
- static TSS_LAYOUTFILE = 35; // Keyman 9 layer-based JSON OSK
132
- static TSS_KEYBOARDVERSION = 36; // &keyboardversion system store // I4140
133
- static TSS_KMW_EMBEDCSS = 37;
134
- static TSS_TARGETS = 38;
135
- static TSS__KEYMAN_90_MAX = 38;
136
- /* Keyman 14.0 system stores */
137
- static TSS_CASEDKEYS = 39;
138
- static TSS__KEYMAN_140_MAX = 39;
139
- /* Keyman 15.0 system stores */
140
- static TSS_BEGIN_NEWCONTEXT = 40;
141
- static TSS_BEGIN_POSTKEYSTROKE = 41;
142
- static TSS_NEWLAYER = 42;
143
- static TSS_OLDLAYER = 43;
144
- static TSS__KEYMAN_150_MAX = 43;
145
- /* Keyman 17.0 system stores */
146
- static TSS_DISPLAYMAP = 44;
147
- static TSS__KEYMAN_170_MAX = 44;
148
- static TSS__MAX = 44;
149
- static UC_SENTINEL = 0xFFFF;
150
- static UC_SENTINEL_EXTENDEDEND = 0x10;
151
- static U_UC_SENTINEL = "\uFFFF";
152
- //
153
- // VK__MAX defines the highest virtual key code defined in the system = 0xFF. Custom VK codes start at 256
154
- //
155
- static VK__MAX = 255;
156
- //
157
- // Extended String CODE_ values
158
- //
159
- static CODE_ANY = 0x01;
160
- static CODE_INDEX = 0x02;
161
- static CODE_CONTEXT = 0x03;
162
- static CODE_NUL = 0x04;
163
- static CODE_USE = 0x05;
164
- static CODE_RETURN = 0x06;
165
- static CODE_BEEP = 0x07;
166
- static CODE_DEADKEY = 0x08;
167
- // 0x09 = bkspace.-- we don't need to keep this separate though with UC_SENTINEL
168
- static CODE_EXTENDED = 0x0A;
169
- //public static readonly CODE_EXTENDEDEND = 0x0B; deprecated
170
- static CODE_SWITCH = 0x0C;
171
- static CODE_KEY = 0x0D;
172
- static CODE_CLEARCONTEXT = 0x0E;
173
- static CODE_CALL = 0x0F;
174
- // UC_SENTINEL_EXTENDEDEND 0x10
175
- static CODE_CONTEXTEX = 0x11;
176
- static CODE_NOTANY = 0x12;
177
- static CODE_KEYMAN70_LASTCODE = 0x12;
178
- static CODE_SETOPT = 0x13;
179
- static CODE_IFOPT = 0x14;
180
- static CODE_SAVEOPT = 0x15;
181
- static CODE_RESETOPT = 0x16;
182
- static CODE_KEYMAN80_LASTCODE = 0x16;
183
- /* Keyman 9.0 codes */
184
- static CODE_IFSYSTEMSTORE = 0x17;
185
- static CODE_SETSYSTEMSTORE = 0x18;
186
- static CODE_LASTCODE = 0x18;
187
- static KF_SHIFTFREESCAPS = 0x0001;
188
- static KF_CAPSONONLY = 0x0002;
189
- static KF_CAPSALWAYSOFF = 0x0004;
190
- static KF_LOGICALLAYOUT = 0x0008;
191
- static KF_AUTOMATICVERSION = 0x0010;
192
- // 16.0: Support for LDML Keyboards in KMXPlus file format
193
- static KF_KMXPLUS = 0x0020;
194
- static HK_ALT = 0x00010000;
195
- static HK_CTRL = 0x00020000;
196
- static HK_SHIFT = 0x00040000;
197
- static LCTRLFLAG = 0x0001; // Left Control flag
198
- static RCTRLFLAG = 0x0002; // Right Control flag
199
- static LALTFLAG = 0x0004; // Left Alt flag
200
- static RALTFLAG = 0x0008; // Right Alt flag
201
- static K_SHIFTFLAG = 0x0010; // Either shift flag
202
- static K_CTRLFLAG = 0x0020; // Either ctrl flag
203
- static K_ALTFLAG = 0x0040; // Either alt flag
204
- //public static readonly K_METAFLAG = 0x0080; // Either Meta-key flag (tentative). Not usable in keyboard rules;
205
- // Used internally (currently, only by KMW) to ensure Meta-key
206
- // shortcuts safely bypass rules
207
- // Meta key = Command key on macOS, Windows key on Windows
208
- static CAPITALFLAG = 0x0100; // Caps lock on
209
- static NOTCAPITALFLAG = 0x0200; // Caps lock NOT on
210
- static NUMLOCKFLAG = 0x0400; // Num lock on
211
- static NOTNUMLOCKFLAG = 0x0800; // Num lock NOT on
212
- static SCROLLFLAG = 0x1000; // Scroll lock on
213
- static NOTSCROLLFLAG = 0x2000; // Scroll lock NOT on
214
- static ISVIRTUALKEY = 0x4000; // It is a Virtual Key Sequence
215
- static VIRTUALCHARKEY = 0x8000; // Keyman 6.0: Virtual Key Cap Sequence NOT YET
216
- static MASK_MODIFIER_CHIRAL = KMXFile.LCTRLFLAG | KMXFile.RCTRLFLAG | KMXFile.LALTFLAG | KMXFile.RALTFLAG;
217
- static MASK_MODIFIER_SHIFT = KMXFile.K_SHIFTFLAG;
218
- static MASK_MODIFIER_NONCHIRAL = KMXFile.K_CTRLFLAG | KMXFile.K_ALTFLAG;
219
- static MASK_STATEKEY = KMXFile.CAPITALFLAG | KMXFile.NOTCAPITALFLAG |
220
- KMXFile.NUMLOCKFLAG | KMXFile.NOTNUMLOCKFLAG |
221
- KMXFile.SCROLLFLAG | KMXFile.NOTSCROLLFLAG;
222
- static MASK_KEYTYPE = KMXFile.ISVIRTUALKEY | KMXFile.VIRTUALCHARKEY;
223
- static MASK_MODIFIER = KMXFile.MASK_MODIFIER_CHIRAL | KMXFile.MASK_MODIFIER_SHIFT | KMXFile.MASK_MODIFIER_NONCHIRAL;
224
- static MASK_KEYS = KMXFile.MASK_MODIFIER | KMXFile.MASK_STATEKEY;
225
- static KMX_MASK_VALID = KMXFile.MASK_KEYS | KMXFile.MASK_KEYTYPE;
226
- static K_MODIFIERFLAG = 0x007F;
227
- static K_NOTMODIFIERFLAG = 0xFF00; // I4548
228
- static COMP_KEYBOARD_SIZE = 64;
229
- static COMP_KEYBOARD_KMXPLUSINFO_SIZE = 8;
230
- static COMP_STORE_SIZE = 12;
231
- static COMP_GROUP_SIZE = 24;
232
- static COMP_KEY_SIZE = 20;
233
- static VERSION_MASK_MINOR = 0x00FF;
234
- static VERSION_MASK_MAJOR = 0xFF00;
235
- /* In-memory representation of the keyboard */
236
- keyboard = new KEYBOARD();
237
- constructor() {
238
- // Binary-correct structures matching kmx_file.h
239
- this.COMP_STORE = new r.Struct({
240
- dwSystemID: r.uint32le,
241
- dpName: r.uint32le,
242
- dpString: r.uint32le
243
- });
244
- if (this.COMP_STORE.size() != KMXFile.COMP_STORE_SIZE) {
245
- throw "COMP_STORE size is " + this.COMP_STORE.size() + " but should be " + KMXFile.COMP_STORE_SIZE + " bytes";
246
- }
247
- this.COMP_KEY = new r.Struct({
248
- Key: r.uint16le,
249
- _padding: new r.Reserved(r.uint16le),
250
- Line: r.uint32le,
251
- ShiftFlags: r.uint32le,
252
- dpOutput: r.uint32le,
253
- dpContext: r.uint32le
254
- });
255
- if (this.COMP_KEY.size() != KMXFile.COMP_KEY_SIZE) {
256
- throw "COMP_KEY size is " + this.COMP_KEY.size() + " but should be " + KMXFile.COMP_KEY_SIZE + " bytes";
257
- }
258
- this.COMP_GROUP = new r.Struct({
259
- dpName: r.uint32le,
260
- dpKeyArray: r.uint32le,
261
- dpMatch: r.uint32le,
262
- dpNoMatch: r.uint32le,
263
- cxKeyArray: r.uint32le,
264
- fUsingKeys: r.uint32le // group(xx) [using keys] <-- specified or not
265
- });
266
- if (this.COMP_GROUP.size() != KMXFile.COMP_GROUP_SIZE) {
267
- throw "COMP_GROUP size is " + this.COMP_GROUP.size() + " but should be " + KMXFile.COMP_GROUP_SIZE + " bytes";
268
- }
269
- this.COMP_KEYBOARD_KMXPLUSINFO = new r.Struct({
270
- dpKMXPlus: r.uint32le,
271
- dwKMXPlusSize: r.uint32le // 0044 size in bytes of entire KMXPlus data
272
- });
273
- if (this.COMP_KEYBOARD_KMXPLUSINFO.size() != KMXFile.COMP_KEYBOARD_KMXPLUSINFO_SIZE) {
274
- throw "COMP_KEYBOARD_KMXPLUSINFO size is " + this.COMP_KEYBOARD_KMXPLUSINFO.size() + " but should be " + KMXFile.COMP_KEYBOARD_KMXPLUSINFO_SIZE + " bytes";
275
- }
276
- this.COMP_KEYBOARD = new r.Struct({
277
- dwIdentifier: r.uint32le,
278
- dwFileVersion: r.uint32le,
279
- dwCheckSum: r.uint32le,
280
- KeyboardID: r.uint32le,
281
- IsRegistered: r.uint32le,
282
- version: r.uint32le,
283
- cxStoreArray: r.uint32le,
284
- cxGroupArray: r.uint32le,
285
- dpStoreArray: r.uint32le,
286
- dpGroupArray: r.uint32le,
287
- StartGroup_ANSI: r.uint32le,
288
- StartGroup_Unicode: r.uint32le,
289
- dwFlags: r.uint32le,
290
- dwHotKey: r.uint32le,
291
- dpBitmapOffset: r.uint32le,
292
- dwBitmapSize: r.uint32le // 003C size in bytes of the bitmaps
293
- });
294
- if (this.COMP_KEYBOARD.size() != KMXFile.COMP_KEYBOARD_SIZE) {
295
- throw "COMP_KEYBOARD size is " + this.COMP_KEYBOARD.size() + " but should be " + KMXFile.COMP_KEYBOARD_SIZE + " bytes";
296
- }
297
- }
298
- }
299
- //# debugId=ad3ae357-c8ad-5ab6-bbf3-1107592833cf
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0fdaf1af-f31f-51ee-8071-72eeb1db1515")}catch(e){}}();
3
+ import * as r from 'restructure';
4
+ /* Definitions from kmx_file.h. Must be kept in sync */
5
+ // TODO: split kmx-file from kmx in-memory, similar to what I've done for kvk (keep restructure decl + BUILDER_ interfaces together)
6
+ // In memory representations of KMX structures
7
+ // kmx-builder will transform these to the corresponding COMP_xxxx
8
+ export class KEYBOARD {
9
+ fileVersion; // dwFileVersion (TSS_FILEVERSION)
10
+ startGroup = { ansi: -1, unicode: -1, newContext: -1, postKeystroke: -1 };
11
+ flags;
12
+ hotkey;
13
+ //bitmap:
14
+ groups = [];
15
+ stores = [];
16
+ // Following values are extracted from stores[] but are
17
+ // informative only
18
+ keyboardVersion; // version (TSS_KEYBOARDVERSION)
19
+ isMnemonic; // TSS_MNEMONICLAYOUT store
20
+ targets; // TSS_TARGETS store ('desktop' if missing)
21
+ }
22
+ ;
23
+ export class STORE {
24
+ dwSystemID;
25
+ dpName;
26
+ dpString;
27
+ }
28
+ ;
29
+ export class GROUP {
30
+ dpName;
31
+ keys = [];
32
+ dpMatch;
33
+ dpNoMatch;
34
+ fUsingKeys;
35
+ }
36
+ ;
37
+ export class KEY {
38
+ Key;
39
+ Line;
40
+ ShiftFlags;
41
+ dpOutput;
42
+ dpContext;
43
+ }
44
+ ;
45
+ ;
46
+ ;
47
+ ;
48
+ ;
49
+ ;
50
+ export class KMXFile {
51
+ /* KMX file structures */
52
+ COMP_STORE;
53
+ COMP_KEY;
54
+ COMP_GROUP;
55
+ COMP_KEYBOARD_KMXPLUSINFO;
56
+ COMP_KEYBOARD;
57
+ static FILEID_COMPILED = 0x5354584B; // 'KXTS'
58
+ //
59
+ // File version identifiers (COMP_KEYBOARD.dwFileVersion)
60
+ //
61
+ static VERSION_30 = 0x00000300;
62
+ static VERSION_31 = 0x00000301;
63
+ static VERSION_32 = 0x00000302;
64
+ static VERSION_40 = 0x00000400;
65
+ static VERSION_50 = 0x00000500;
66
+ static VERSION_501 = 0x00000501;
67
+ static VERSION_60 = 0x00000600;
68
+ static VERSION_70 = 0x00000700;
69
+ static VERSION_80 = 0x00000800;
70
+ static VERSION_90 = 0x00000900;
71
+ static VERSION_100 = 0x00000A00;
72
+ static VERSION_140 = 0x00000E00;
73
+ static VERSION_150 = 0x00000F00;
74
+ static VERSION_160 = 0x00001000;
75
+ static VERSION_170 = 0x00001100;
76
+ static VERSION_MIN = this.VERSION_50;
77
+ static VERSION_MAX = this.VERSION_170;
78
+ //
79
+ // Backspace types
80
+ //
81
+ static BK_DEFAULT = 0;
82
+ static BK_DEADKEY = 1;
83
+ // Different begin types (COMP_STORE.StartGroup_*)
84
+ static BEGIN_ANSI = 0;
85
+ static BEGIN_UNICODE = 1;
86
+ //
87
+ // System Store values (COMP_STORE.dwSystemID)
88
+ //
89
+ static TSS_NONE = 0;
90
+ static TSS_BITMAP = 1;
91
+ static TSS_COPYRIGHT = 2;
92
+ static TSS_HOTKEY = 3;
93
+ static TSS_LANGUAGE = 4;
94
+ static TSS_LAYOUT = 5;
95
+ static TSS_MESSAGE = 6;
96
+ static TSS_NAME = 7;
97
+ static TSS_VERSION = 8;
98
+ static TSS_CAPSONONLY = 9;
99
+ static TSS_CAPSALWAYSOFF = 10;
100
+ static TSS_SHIFTFREESCAPS = 11;
101
+ static TSS_LANGUAGENAME = 12;
102
+ static TSS_CALLDEFINITION = 13;
103
+ static TSS_CALLDEFINITION_LOADFAILED = 14;
104
+ static TSS_ETHNOLOGUECODE = 15;
105
+ static TSS_DEBUG_LINE = 16;
106
+ static TSS_MNEMONIC = 17;
107
+ static TSS_INCLUDECODES = 18;
108
+ static TSS_OLDCHARPOSMATCHING = 19;
109
+ static TSS_COMPILEDVERSION = 20;
110
+ static TSS_KEYMANCOPYRIGHT = 21;
111
+ static TSS_CUSTOMKEYMANEDITION = 22;
112
+ static TSS_CUSTOMKEYMANEDITIONNAME = 23;
113
+ /* Keyman 7.0 system stores */
114
+ static TSS__KEYMAN_60_MAX = 23;
115
+ static TSS_VISUALKEYBOARD = 24;
116
+ static TSS_KMW_RTL = 25;
117
+ static TSS_KMW_HELPFILE = 26;
118
+ static TSS_KMW_HELPTEXT = 27;
119
+ static TSS_KMW_EMBEDJS = 28;
120
+ static TSS_WINDOWSLANGUAGES = 29;
121
+ static TSS__KEYMAN_70_MAX = 29;
122
+ /* Keyman 8.0 system stores */
123
+ static TSS_COMPARISON = 30;
124
+ static TSS__KEYMAN_80_MAX = 30;
125
+ /* Keyman 9.0 system stores */
126
+ static TSS_PLATFORM = 31;
127
+ static TSS_BASELAYOUT = 32;
128
+ static TSS_LAYER = 33;
129
+ static TSS_PLATFORM_NOMATCH = 0x8001; // Reserved for internal use - after platform statement is run, set to either TSS_PLATFORM_NOMATCH or TSS_PLATFORM_MATCH
130
+ static TSS_PLATFORM_MATCH = 0x8002; // Reserved for internal use - as the result will never change for the lifetime of the process.
131
+ static TSS_VKDICTIONARY = 34; // Dictionary of virtual key names for v9 dynamic layouts
132
+ static TSS_LAYOUTFILE = 35; // Keyman 9 layer-based JSON OSK
133
+ static TSS_KEYBOARDVERSION = 36; // &keyboardversion system store // I4140
134
+ static TSS_KMW_EMBEDCSS = 37;
135
+ static TSS_TARGETS = 38;
136
+ static TSS__KEYMAN_90_MAX = 38;
137
+ /* Keyman 14.0 system stores */
138
+ static TSS_CASEDKEYS = 39;
139
+ static TSS__KEYMAN_140_MAX = 39;
140
+ /* Keyman 15.0 system stores */
141
+ static TSS_BEGIN_NEWCONTEXT = 40;
142
+ static TSS_BEGIN_POSTKEYSTROKE = 41;
143
+ static TSS_NEWLAYER = 42;
144
+ static TSS_OLDLAYER = 43;
145
+ static TSS__KEYMAN_150_MAX = 43;
146
+ /* Keyman 17.0 system stores */
147
+ static TSS_DISPLAYMAP = 44;
148
+ static TSS__KEYMAN_170_MAX = 44;
149
+ static TSS__MAX = 44;
150
+ static UC_SENTINEL = 0xFFFF;
151
+ static UC_SENTINEL_EXTENDEDEND = 0x10;
152
+ static U_UC_SENTINEL = "\uFFFF";
153
+ //
154
+ // VK__MAX defines the highest virtual key code defined in the system = 0xFF. Custom VK codes start at 256
155
+ //
156
+ static VK__MAX = 255;
157
+ //
158
+ // Extended String CODE_ values
159
+ //
160
+ static CODE_ANY = 0x01;
161
+ static CODE_INDEX = 0x02;
162
+ static CODE_CONTEXT = 0x03;
163
+ static CODE_NUL = 0x04;
164
+ static CODE_USE = 0x05;
165
+ static CODE_RETURN = 0x06;
166
+ static CODE_BEEP = 0x07;
167
+ static CODE_DEADKEY = 0x08;
168
+ // 0x09 = bkspace.-- we don't need to keep this separate though with UC_SENTINEL
169
+ static CODE_EXTENDED = 0x0A;
170
+ //public static readonly CODE_EXTENDEDEND = 0x0B; deprecated
171
+ static CODE_SWITCH = 0x0C;
172
+ static CODE_KEY = 0x0D;
173
+ static CODE_CLEARCONTEXT = 0x0E;
174
+ static CODE_CALL = 0x0F;
175
+ // UC_SENTINEL_EXTENDEDEND 0x10
176
+ static CODE_CONTEXTEX = 0x11;
177
+ static CODE_NOTANY = 0x12;
178
+ static CODE_KEYMAN70_LASTCODE = 0x12;
179
+ static CODE_SETOPT = 0x13;
180
+ static CODE_IFOPT = 0x14;
181
+ static CODE_SAVEOPT = 0x15;
182
+ static CODE_RESETOPT = 0x16;
183
+ static CODE_KEYMAN80_LASTCODE = 0x16;
184
+ /* Keyman 9.0 codes */
185
+ static CODE_IFSYSTEMSTORE = 0x17;
186
+ static CODE_SETSYSTEMSTORE = 0x18;
187
+ static CODE_LASTCODE = 0x18;
188
+ static KF_SHIFTFREESCAPS = 0x0001;
189
+ static KF_CAPSONONLY = 0x0002;
190
+ static KF_CAPSALWAYSOFF = 0x0004;
191
+ static KF_LOGICALLAYOUT = 0x0008;
192
+ static KF_AUTOMATICVERSION = 0x0010;
193
+ // 16.0: Support for LDML Keyboards in KMXPlus file format
194
+ static KF_KMXPLUS = 0x0020;
195
+ static HK_ALT = 0x00010000;
196
+ static HK_CTRL = 0x00020000;
197
+ static HK_SHIFT = 0x00040000;
198
+ static LCTRLFLAG = 0x0001; // Left Control flag
199
+ static RCTRLFLAG = 0x0002; // Right Control flag
200
+ static LALTFLAG = 0x0004; // Left Alt flag
201
+ static RALTFLAG = 0x0008; // Right Alt flag
202
+ static K_SHIFTFLAG = 0x0010; // Either shift flag
203
+ static K_CTRLFLAG = 0x0020; // Either ctrl flag
204
+ static K_ALTFLAG = 0x0040; // Either alt flag
205
+ //public static readonly K_METAFLAG = 0x0080; // Either Meta-key flag (tentative). Not usable in keyboard rules;
206
+ // Used internally (currently, only by KMW) to ensure Meta-key
207
+ // shortcuts safely bypass rules
208
+ // Meta key = Command key on macOS, Windows key on Windows
209
+ static CAPITALFLAG = 0x0100; // Caps lock on
210
+ static NOTCAPITALFLAG = 0x0200; // Caps lock NOT on
211
+ static NUMLOCKFLAG = 0x0400; // Num lock on
212
+ static NOTNUMLOCKFLAG = 0x0800; // Num lock NOT on
213
+ static SCROLLFLAG = 0x1000; // Scroll lock on
214
+ static NOTSCROLLFLAG = 0x2000; // Scroll lock NOT on
215
+ static ISVIRTUALKEY = 0x4000; // It is a Virtual Key Sequence
216
+ static VIRTUALCHARKEY = 0x8000; // Keyman 6.0: Virtual Key Cap Sequence NOT YET
217
+ // Note: OTHER_MODIFIER = 0x10000, used by KMX+ for the
218
+ // other modifier flag in layers, > 16 bit so not available here.
219
+ // See keys_mod_other in keyman_core_ldml.ts
220
+ static MASK_MODIFIER_CHIRAL = KMXFile.LCTRLFLAG | KMXFile.RCTRLFLAG | KMXFile.LALTFLAG | KMXFile.RALTFLAG;
221
+ static MASK_MODIFIER_SHIFT = KMXFile.K_SHIFTFLAG;
222
+ static MASK_MODIFIER_NONCHIRAL = KMXFile.K_CTRLFLAG | KMXFile.K_ALTFLAG;
223
+ static MASK_STATEKEY = KMXFile.CAPITALFLAG | KMXFile.NOTCAPITALFLAG |
224
+ KMXFile.NUMLOCKFLAG | KMXFile.NOTNUMLOCKFLAG |
225
+ KMXFile.SCROLLFLAG | KMXFile.NOTSCROLLFLAG;
226
+ static MASK_KEYTYPE = KMXFile.ISVIRTUALKEY | KMXFile.VIRTUALCHARKEY;
227
+ static MASK_MODIFIER = KMXFile.MASK_MODIFIER_CHIRAL | KMXFile.MASK_MODIFIER_SHIFT | KMXFile.MASK_MODIFIER_NONCHIRAL;
228
+ static MASK_KEYS = KMXFile.MASK_MODIFIER | KMXFile.MASK_STATEKEY;
229
+ static KMX_MASK_VALID = KMXFile.MASK_KEYS | KMXFile.MASK_KEYTYPE;
230
+ static K_MODIFIERFLAG = 0x007F;
231
+ static K_NOTMODIFIERFLAG = 0xFF00; // I4548
232
+ static COMP_KEYBOARD_SIZE = 64;
233
+ static COMP_KEYBOARD_KMXPLUSINFO_SIZE = 8;
234
+ static COMP_STORE_SIZE = 12;
235
+ static COMP_GROUP_SIZE = 24;
236
+ static COMP_KEY_SIZE = 20;
237
+ static VERSION_MASK_MINOR = 0x00FF;
238
+ static VERSION_MASK_MAJOR = 0xFF00;
239
+ /* In-memory representation of the keyboard */
240
+ keyboard = new KEYBOARD();
241
+ constructor() {
242
+ // Binary-correct structures matching kmx_file.h
243
+ this.COMP_STORE = new r.Struct({
244
+ dwSystemID: r.uint32le,
245
+ dpName: r.uint32le,
246
+ dpString: r.uint32le
247
+ });
248
+ if (this.COMP_STORE.size() != KMXFile.COMP_STORE_SIZE) {
249
+ throw "COMP_STORE size is " + this.COMP_STORE.size() + " but should be " + KMXFile.COMP_STORE_SIZE + " bytes";
250
+ }
251
+ this.COMP_KEY = new r.Struct({
252
+ Key: r.uint16le,
253
+ _padding: new r.Reserved(r.uint16le),
254
+ Line: r.uint32le,
255
+ ShiftFlags: r.uint32le,
256
+ dpOutput: r.uint32le,
257
+ dpContext: r.uint32le
258
+ });
259
+ if (this.COMP_KEY.size() != KMXFile.COMP_KEY_SIZE) {
260
+ throw "COMP_KEY size is " + this.COMP_KEY.size() + " but should be " + KMXFile.COMP_KEY_SIZE + " bytes";
261
+ }
262
+ this.COMP_GROUP = new r.Struct({
263
+ dpName: r.uint32le,
264
+ dpKeyArray: r.uint32le,
265
+ dpMatch: r.uint32le,
266
+ dpNoMatch: r.uint32le,
267
+ cxKeyArray: r.uint32le,
268
+ fUsingKeys: r.uint32le // group(xx) [using keys] <-- specified or not
269
+ });
270
+ if (this.COMP_GROUP.size() != KMXFile.COMP_GROUP_SIZE) {
271
+ throw "COMP_GROUP size is " + this.COMP_GROUP.size() + " but should be " + KMXFile.COMP_GROUP_SIZE + " bytes";
272
+ }
273
+ this.COMP_KEYBOARD_KMXPLUSINFO = new r.Struct({
274
+ dpKMXPlus: r.uint32le,
275
+ dwKMXPlusSize: r.uint32le // 0044 size in bytes of entire KMXPlus data
276
+ });
277
+ if (this.COMP_KEYBOARD_KMXPLUSINFO.size() != KMXFile.COMP_KEYBOARD_KMXPLUSINFO_SIZE) {
278
+ throw "COMP_KEYBOARD_KMXPLUSINFO size is " + this.COMP_KEYBOARD_KMXPLUSINFO.size() + " but should be " + KMXFile.COMP_KEYBOARD_KMXPLUSINFO_SIZE + " bytes";
279
+ }
280
+ this.COMP_KEYBOARD = new r.Struct({
281
+ dwIdentifier: r.uint32le,
282
+ dwFileVersion: r.uint32le,
283
+ dwCheckSum: r.uint32le,
284
+ KeyboardID: r.uint32le,
285
+ IsRegistered: r.uint32le,
286
+ version: r.uint32le,
287
+ cxStoreArray: r.uint32le,
288
+ cxGroupArray: r.uint32le,
289
+ dpStoreArray: r.uint32le,
290
+ dpGroupArray: r.uint32le,
291
+ StartGroup_ANSI: r.uint32le,
292
+ StartGroup_Unicode: r.uint32le,
293
+ dwFlags: r.uint32le,
294
+ dwHotKey: r.uint32le,
295
+ dpBitmapOffset: r.uint32le,
296
+ dwBitmapSize: r.uint32le // 003C size in bytes of the bitmaps
297
+ });
298
+ if (this.COMP_KEYBOARD.size() != KMXFile.COMP_KEYBOARD_SIZE) {
299
+ throw "COMP_KEYBOARD size is " + this.COMP_KEYBOARD.size() + " but should be " + KMXFile.COMP_KEYBOARD_SIZE + " bytes";
300
+ }
301
+ }
302
+ }
300
303
  //# sourceMappingURL=kmx.js.map
304
+ //# debugId=0fdaf1af-f31f-51ee-8071-72eeb1db1515