@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.
Files changed (248) hide show
  1. package/build/src/consts/virtual-key-constants.d.ts +131 -0
  2. package/build/src/consts/virtual-key-constants.d.ts.map +1 -0
  3. package/build/src/consts/virtual-key-constants.js +245 -0
  4. package/build/src/consts/virtual-key-constants.js.map +1 -0
  5. package/build/src/import/techpreview/cldr_info.json +5 -0
  6. package/build/src/import/techpreview/keys-Latn-implied.xml +80 -0
  7. package/build/src/import/techpreview/keys-Zyyy-currency.xml +22 -0
  8. package/build/src/import/techpreview/keys-Zyyy-punctuation.xml +46 -0
  9. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
  10. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
  11. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
  12. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
  13. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +24 -0
  14. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
  15. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js +75 -0
  16. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
  17. package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts +76 -0
  18. package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts.map +1 -0
  19. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js +26 -0
  20. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js.map +1 -0
  21. package/build/src/keyman-touch-layout.clean.spec.json +170 -0
  22. package/build/src/kmx/element-string.d.ts +19 -0
  23. package/build/src/kmx/element-string.d.ts.map +1 -0
  24. package/build/src/kmx/element-string.js +72 -0
  25. package/build/src/kmx/element-string.js.map +1 -0
  26. package/build/src/kmx/kmx-builder.d.ts +77 -0
  27. package/build/src/kmx/kmx-builder.d.ts.map +1 -0
  28. package/build/src/kmx/kmx-builder.js +193 -0
  29. package/build/src/kmx/kmx-builder.js.map +1 -0
  30. package/build/src/kmx/kmx-plus-builder/build-disp.d.ts +18 -0
  31. package/build/src/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
  32. package/build/src/kmx/kmx-plus-builder/build-disp.js +25 -0
  33. package/build/src/kmx/kmx-plus-builder/build-disp.js.map +1 -0
  34. package/build/src/kmx/kmx-plus-builder/build-elem.d.ts +26 -0
  35. package/build/src/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
  36. package/build/src/kmx/kmx-plus-builder/build-elem.js +78 -0
  37. package/build/src/kmx/kmx-plus-builder/build-elem.js.map +1 -0
  38. package/build/src/kmx/kmx-plus-builder/build-keys.d.ts +60 -0
  39. package/build/src/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
  40. package/build/src/kmx/kmx-plus-builder/build-keys.js +107 -0
  41. package/build/src/kmx/kmx-plus-builder/build-keys.js.map +1 -0
  42. package/build/src/kmx/kmx-plus-builder/build-layr.d.ts +54 -0
  43. package/build/src/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
  44. package/build/src/kmx/kmx-plus-builder/build-layr.js +99 -0
  45. package/build/src/kmx/kmx-plus-builder/build-layr.js.map +1 -0
  46. package/build/src/kmx/kmx-plus-builder/build-list.d.ts +34 -0
  47. package/build/src/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
  48. package/build/src/kmx/kmx-plus-builder/build-list.js +62 -0
  49. package/build/src/kmx/kmx-plus-builder/build-list.js.map +1 -0
  50. package/build/src/kmx/kmx-plus-builder/build-loca.d.ts +12 -0
  51. package/build/src/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
  52. package/build/src/kmx/kmx-plus-builder/build-loca.js +20 -0
  53. package/build/src/kmx/kmx-plus-builder/build-loca.js.map +1 -0
  54. package/build/src/kmx/kmx-plus-builder/build-meta.d.ts +17 -0
  55. package/build/src/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
  56. package/build/src/kmx/kmx-plus-builder/build-meta.js +21 -0
  57. package/build/src/kmx/kmx-plus-builder/build-meta.js.map +1 -0
  58. package/build/src/kmx/kmx-plus-builder/build-name.d.ts +12 -0
  59. package/build/src/kmx/kmx-plus-builder/build-name.d.ts.map +1 -0
  60. package/build/src/kmx/kmx-plus-builder/build-name.js +23 -0
  61. package/build/src/kmx/kmx-plus-builder/build-name.js.map +1 -0
  62. package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts +18 -0
  63. package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts.map +1 -0
  64. package/build/src/kmx/kmx-plus-builder/build-ordr.js +27 -0
  65. package/build/src/kmx/kmx-plus-builder/build-ordr.js.map +1 -0
  66. package/build/src/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
  67. package/build/src/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
  68. package/build/src/kmx/kmx-plus-builder/build-sect.js +14 -0
  69. package/build/src/kmx/kmx-plus-builder/build-sect.js.map +1 -0
  70. package/build/src/kmx/kmx-plus-builder/build-strs.d.ts +18 -0
  71. package/build/src/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
  72. package/build/src/kmx/kmx-plus-builder/build-strs.js +34 -0
  73. package/build/src/kmx/kmx-plus-builder/build-strs.js.map +1 -0
  74. package/build/src/kmx/kmx-plus-builder/build-tran.d.ts +20 -0
  75. package/build/src/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
  76. package/build/src/kmx/kmx-plus-builder/build-tran.js +30 -0
  77. package/build/src/kmx/kmx-plus-builder/build-tran.js.map +1 -0
  78. package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts +16 -0
  79. package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts.map +1 -0
  80. package/build/src/kmx/kmx-plus-builder/build-vkey.js +23 -0
  81. package/build/src/kmx/kmx-plus-builder/build-vkey.js.map +1 -0
  82. package/build/src/kmx/kmx-plus-builder/builder-section.d.ts +6 -0
  83. package/build/src/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
  84. package/build/src/kmx/kmx-plus-builder/builder-section.js +3 -0
  85. package/build/src/kmx/kmx-plus-builder/builder-section.js.map +1 -0
  86. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +47 -0
  87. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
  88. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js +143 -0
  89. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
  90. package/build/src/kmx/kmx-plus.d.ts +259 -0
  91. package/build/src/kmx/kmx-plus.d.ts.map +1 -0
  92. package/build/src/kmx/kmx-plus.js +594 -0
  93. package/build/src/kmx/kmx-plus.js.map +1 -0
  94. package/build/src/kmx/kmx.d.ts +166 -0
  95. package/build/src/kmx/kmx.d.ts.map +1 -0
  96. package/build/src/kmx/kmx.js +271 -0
  97. package/build/src/kmx/kmx.js.map +1 -0
  98. package/build/src/kmx/string-list.d.ts +29 -0
  99. package/build/src/kmx/string-list.d.ts.map +1 -0
  100. package/build/src/kmx/string-list.js +75 -0
  101. package/build/src/kmx/string-list.js.map +1 -0
  102. package/build/src/kpj/keyman-developer-project.d.ts +58 -0
  103. package/build/src/kpj/keyman-developer-project.d.ts.map +1 -0
  104. package/build/src/kpj/keyman-developer-project.js +141 -0
  105. package/build/src/kpj/keyman-developer-project.js.map +1 -0
  106. package/build/src/kpj/kpj-file-reader.d.ts +17 -0
  107. package/build/src/kpj/kpj-file-reader.d.ts.map +1 -0
  108. package/build/src/kpj/kpj-file-reader.js +92 -0
  109. package/build/src/kpj/kpj-file-reader.js.map +1 -0
  110. package/build/src/kpj/kpj-file.d.ts +39 -0
  111. package/build/src/kpj/kpj-file.d.ts.map +1 -0
  112. package/build/src/kpj/kpj-file.js +11 -0
  113. package/build/src/kpj/kpj-file.js.map +1 -0
  114. package/build/src/kpj.schema.json +127 -0
  115. package/build/src/kvk/kvk-file-reader.d.ts +5 -0
  116. package/build/src/kvk/kvk-file-reader.d.ts.map +1 -0
  117. package/build/src/kvk/kvk-file-reader.js +35 -0
  118. package/build/src/kvk/kvk-file-reader.js.map +1 -0
  119. package/build/src/kvk/kvk-file-writer.d.ts +20 -0
  120. package/build/src/kvk/kvk-file-writer.d.ts.map +1 -0
  121. package/build/src/kvk/kvk-file-writer.js +67 -0
  122. package/build/src/kvk/kvk-file-writer.js.map +1 -0
  123. package/build/src/kvk/kvk-file.d.ts +64 -0
  124. package/build/src/kvk/kvk-file.d.ts.map +1 -0
  125. package/build/src/kvk/kvk-file.js +63 -0
  126. package/build/src/kvk/kvk-file.js.map +1 -0
  127. package/build/src/kvk/kvks-file-reader.d.ts +30 -0
  128. package/build/src/kvk/kvks-file-reader.d.ts.map +1 -0
  129. package/build/src/kvk/kvks-file-reader.js +154 -0
  130. package/build/src/kvk/kvks-file-reader.js.map +1 -0
  131. package/build/src/kvk/kvks-file-writer.d.ts +6 -0
  132. package/build/src/kvk/kvks-file-writer.d.ts.map +1 -0
  133. package/build/src/kvk/kvks-file-writer.js +99 -0
  134. package/build/src/kvk/kvks-file-writer.js.map +1 -0
  135. package/build/src/kvk/kvks-file.d.ts +44 -0
  136. package/build/src/kvk/kvks-file.d.ts.map +1 -0
  137. package/build/src/kvk/kvks-file.js +10 -0
  138. package/build/src/kvk/kvks-file.js.map +1 -0
  139. package/build/src/kvk/visual-keyboard.d.ts +35 -0
  140. package/build/src/kvk/visual-keyboard.d.ts.map +1 -0
  141. package/build/src/kvk/visual-keyboard.js +61 -0
  142. package/build/src/kvk/visual-keyboard.js.map +1 -0
  143. package/build/src/kvks.schema.json +182 -0
  144. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +56 -0
  145. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
  146. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js +20 -0
  147. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
  148. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +91 -0
  149. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
  150. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js +370 -0
  151. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
  152. package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts +143 -0
  153. package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
  154. package/build/src/ldml-keyboard/ldml-keyboard-xml.js +34 -0
  155. package/build/src/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
  156. package/build/src/ldml-keyboard.schema.json +634 -0
  157. package/build/src/ldml-keyboardtest.schema.json +221 -0
  158. package/build/src/main.d.ts +21 -0
  159. package/build/src/main.d.ts.map +1 -0
  160. package/build/src/main.js +20 -0
  161. package/build/src/main.js.map +1 -0
  162. package/build/src/util/common-events.d.ts +49 -0
  163. package/build/src/util/common-events.d.ts.map +1 -0
  164. package/build/src/util/common-events.js +29 -0
  165. package/build/src/util/common-events.js.map +1 -0
  166. package/build/src/util/compiler-interfaces.d.ts +51 -0
  167. package/build/src/util/compiler-interfaces.d.ts.map +1 -0
  168. package/build/src/util/compiler-interfaces.js +33 -0
  169. package/build/src/util/compiler-interfaces.js.map +1 -0
  170. package/build/src/util/util.d.ts +17 -0
  171. package/build/src/util/util.d.ts.map +1 -0
  172. package/build/src/util/util.js +67 -0
  173. package/build/src/util/util.js.map +1 -0
  174. package/build/tsconfig.tsbuildinfo +1 -0
  175. package/build.sh +86 -0
  176. package/package.json +58 -0
  177. package/src/consts/virtual-key-constants.ts +257 -0
  178. package/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts +81 -0
  179. package/src/keyman-touch-layout/keyman-touch-layout-file-writer.ts +84 -0
  180. package/src/keyman-touch-layout/keyman-touch-layout-file.ts +87 -0
  181. package/src/kmx/element-string.ts +79 -0
  182. package/src/kmx/kmx-builder.ts +287 -0
  183. package/src/kmx/kmx-plus-builder/build-disp.ts +46 -0
  184. package/src/kmx/kmx-plus-builder/build-elem.ts +103 -0
  185. package/src/kmx/kmx-plus-builder/build-keys.ts +175 -0
  186. package/src/kmx/kmx-plus-builder/build-layr.ts +154 -0
  187. package/src/kmx/kmx-plus-builder/build-list.ts +95 -0
  188. package/src/kmx/kmx-plus-builder/build-loca.ts +34 -0
  189. package/src/kmx/kmx-plus-builder/build-meta.ts +37 -0
  190. package/src/kmx/kmx-plus-builder/build-name.ts +37 -0
  191. package/src/kmx/kmx-plus-builder/build-ordr.ts +45 -0
  192. package/src/kmx/kmx-plus-builder/build-sect.ts +31 -0
  193. package/src/kmx/kmx-plus-builder/build-strs.ts +58 -0
  194. package/src/kmx/kmx-plus-builder/build-tran.ts +50 -0
  195. package/src/kmx/kmx-plus-builder/build-vkey.ts +43 -0
  196. package/src/kmx/kmx-plus-builder/builder-section.ts +6 -0
  197. package/src/kmx/kmx-plus-builder/kmx-plus-builder.ts +190 -0
  198. package/src/kmx/kmx-plus.ts +692 -0
  199. package/src/kmx/kmx.ts +360 -0
  200. package/src/kmx/string-list.ts +74 -0
  201. package/src/kpj/keyman-developer-project.ts +155 -0
  202. package/src/kpj/kpj-file-reader.ts +103 -0
  203. package/src/kpj/kpj-file.ts +52 -0
  204. package/src/kvk/kvk-file-reader.ts +34 -0
  205. package/src/kvk/kvk-file-writer.ts +72 -0
  206. package/src/kvk/kvk-file.ts +122 -0
  207. package/src/kvk/kvks-file-reader.ts +164 -0
  208. package/src/kvk/kvks-file-writer.ts +113 -0
  209. package/src/kvk/kvks-file.ts +53 -0
  210. package/src/kvk/visual-keyboard.ts +80 -0
  211. package/src/ldml-keyboard/ldml-keyboard-testdata-xml.ts +74 -0
  212. package/src/ldml-keyboard/ldml-keyboard-xml-reader.ts +387 -0
  213. package/src/ldml-keyboard/ldml-keyboard-xml.ts +177 -0
  214. package/src/main.ts +27 -0
  215. package/src/restructure.d.ts +2 -0
  216. package/src/util/common-events.ts +50 -0
  217. package/src/util/compiler-interfaces.ts +54 -0
  218. package/src/util/util.ts +68 -0
  219. package/test/fixtures/import-minimal.xml +8 -0
  220. package/test/fixtures/import-minimal1.xml +11 -0
  221. package/test/fixtures/import-minimal2.xml +11 -0
  222. package/test/fixtures/import-symbols.xml +13 -0
  223. package/test/fixtures/invalid-conforms-to.xml +19 -0
  224. package/test/fixtures/invalid-import-base.xml +16 -0
  225. package/test/fixtures/invalid-import-path.xml +16 -0
  226. package/test/fixtures/invalid-import-readfail.xml +16 -0
  227. package/test/fixtures/invalid-import-wrongroot.xml +16 -0
  228. package/test/fixtures/invalid-structure-per-dtd.xml +8 -0
  229. package/test/fixtures/keyman-touch-layout/khmer_angkor.keyman-touch-layout +1950 -0
  230. package/test/fixtures/keyman-touch-layout/legacy.keyman-touch-layout +36 -0
  231. package/test/fixtures/kpj/khmer_angkor.kpj +187 -0
  232. package/test/fixtures/kvk/khmer_angkor.kvk +0 -0
  233. package/test/fixtures/kvk/khmer_angkor.kvks +206 -0
  234. package/test/fixtures/test-fr.xml +22 -0
  235. package/test/helpers/index.ts +39 -0
  236. package/test/helpers/reader-callback-test.ts +199 -0
  237. package/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.ts +71 -0
  238. package/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.ts +35 -0
  239. package/test/kpj/test-kpj-file-reader.ts +123 -0
  240. package/test/kvk/test-kvk-file.ts +15 -0
  241. package/test/kvk/test-kvk-round-trip.ts +87 -0
  242. package/test/kvk/test-kvk-utils.ts +24 -0
  243. package/test/kvk/test-kvks-file.ts +45 -0
  244. package/test/ldml-keyboard/test-ldml-keyboard-testdata-reader.ts +51 -0
  245. package/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts +131 -0
  246. package/test/tsconfig.json +21 -0
  247. package/test/util/test-unescape.ts +38 -0
  248. package/tsconfig.json +17 -0
@@ -0,0 +1,64 @@
1
+ export declare const BUILDER_KVK_HEADER_IDENTIFIER = 1179342411;
2
+ export declare const BUILDER_KVK_HEADER_VERSION = 1536;
3
+ export interface BUILDER_KVK_STRING {
4
+ len: number;
5
+ str: string;
6
+ }
7
+ export interface BUILDER_KVK_FONT {
8
+ name: BUILDER_KVK_STRING;
9
+ size: number;
10
+ color: number;
11
+ }
12
+ export declare const BUILDER_KVK_FONT_Size = 8;
13
+ export declare const enum BUILDER_KVK_KEY_FLAGS {
14
+ kvkkBitmap = 1,
15
+ kvkkUnicode = 2
16
+ }
17
+ export declare const enum BUILDER_KVK_SHIFT_STATE {
18
+ KVKS_NORMAL = 0,
19
+ KVKS_SHIFT = 1,
20
+ KVKS_CTRL = 2,
21
+ KVKS_ALT = 4,
22
+ KVKS_LCTRL = 8,
23
+ KVKS_RCTRL = 16,
24
+ KVKS_LALT = 32,
25
+ KVKS_RALT = 64
26
+ }
27
+ export interface BUILDER_KVK_KEY {
28
+ flags: BUILDER_KVK_KEY_FLAGS;
29
+ shift: number;
30
+ vkey: number;
31
+ text: BUILDER_KVK_STRING;
32
+ bitmap: number;
33
+ }
34
+ export declare const BUILDER_KVK_KEY_Size = 9;
35
+ export declare const enum BUILDER_KVK_HEADER_FLAGS {
36
+ kvkh102 = 1,
37
+ kvkhDisplayUnderlying = 2,
38
+ kvkhUseUnderlying = 4,
39
+ kvkhAltGr = 8
40
+ }
41
+ export interface BUILDER_KVK_HEADER {
42
+ identifier: number;
43
+ version: number;
44
+ flags: BUILDER_KVK_HEADER_FLAGS;
45
+ associatedKeyboard: BUILDER_KVK_STRING;
46
+ ansiFont: BUILDER_KVK_FONT;
47
+ unicodeFont: BUILDER_KVK_FONT;
48
+ }
49
+ export declare const BUILDER_KVK_HEADER_Size: number;
50
+ export interface BUILDER_KVK_FILE {
51
+ header: BUILDER_KVK_HEADER;
52
+ keyCount: number;
53
+ keys: BUILDER_KVK_KEY[];
54
+ }
55
+ export default class KVKFile {
56
+ KVK_HEADER: any;
57
+ KVK_KEY: any;
58
+ KVK_KEYS: any;
59
+ KVK_FONT: any;
60
+ KVK_FILE: any;
61
+ KVK_STRING: any;
62
+ constructor();
63
+ }
64
+ //# sourceMappingURL=kvk-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvk-file.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvk-file.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B,aAAa,CAAC;AACxD,eAAO,MAAM,0BAA0B,OAAY,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,0BAAkB,qBAAqB;IACrC,UAAU,IAAO;IACjB,WAAW,IAAO;CACnB;AAED,0BAAkB,uBAAuB;IACvC,WAAW,IAAK;IAChB,UAAU,IAAM;IAChB,SAAS,IAAO;IAChB,QAAQ,IAAQ;IAChB,UAAU,IAAM;IAChB,UAAU,KAAM;IAChB,SAAS,KAAO;IAChB,SAAS,KAAO;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,0BAAkB,wBAAwB;IACxC,OAAO,IAAO;IACd,qBAAqB,IAAO;IAC5B,iBAAiB,IAAO;IACxB,SAAS,IAAO;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,wBAAwB,CAAC;IAChC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,eAAO,MAAM,uBAAuB,QAAoD,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,OAAO;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,GAAG,CAAC;;CA2CxB"}
@@ -0,0 +1,63 @@
1
+ import * as r from 'restructure';
2
+ //
3
+ // Binary backing structures for .kvk format
4
+ // matching VisualKeyboardSaverBinary.pas
5
+ //
6
+ export const BUILDER_KVK_HEADER_IDENTIFIER = 0x464B564B; // 'KVKF', little-endian
7
+ export const BUILDER_KVK_HEADER_VERSION = 0x0600; // Keyman 6.0
8
+ ;
9
+ ;
10
+ export const BUILDER_KVK_FONT_Size = 8; // size of fixed elements of BUILDER_KVK_FONT
11
+ ;
12
+ ;
13
+ ;
14
+ export const BUILDER_KVK_KEY_Size = 9; // size of fixed elements of BUILDER_KVK_KEY
15
+ ;
16
+ ;
17
+ export const BUILDER_KVK_HEADER_Size = 9 + BUILDER_KVK_FONT_Size + BUILDER_KVK_FONT_Size; // size of fixed elements of BUILDER_KVK_HEADER
18
+ ;
19
+ export default class KVKFile {
20
+ KVK_HEADER;
21
+ KVK_KEY;
22
+ KVK_KEYS;
23
+ KVK_FONT;
24
+ KVK_FILE;
25
+ KVK_STRING;
26
+ constructor() {
27
+ //
28
+ // Binary restructure definitions matching VisualKeyboardSaverBinary.pas
29
+ // TODO: move binaries to separate kvk-file.ts
30
+ //
31
+ this.KVK_STRING = new r.Struct({
32
+ len: r.int16le,
33
+ str: new r.String(null, 'utf16le')
34
+ });
35
+ this.KVK_FONT = new r.Struct({
36
+ name: this.KVK_STRING,
37
+ size: r.int32le,
38
+ color: r.uint32le
39
+ });
40
+ this.KVK_KEY = new r.Struct({
41
+ flags: r.uint8,
42
+ shift: r.uint16le,
43
+ vkey: r.uint16le,
44
+ text: this.KVK_STRING,
45
+ bitmap: r.uint32le // always 00 00 00 00 for now
46
+ });
47
+ this.KVK_HEADER = new r.Struct({
48
+ identifier: r.uint32le,
49
+ version: r.uint32le,
50
+ flags: r.uint8,
51
+ associatedKeyboard: this.KVK_STRING,
52
+ ansiFont: this.KVK_FONT,
53
+ unicodeFont: this.KVK_FONT
54
+ });
55
+ this.KVK_FILE = new r.Struct({
56
+ header: this.KVK_HEADER,
57
+ keyCount: r.uint32le,
58
+ keys: new r.Array(this.KVK_KEY, 'keyCount')
59
+ });
60
+ }
61
+ }
62
+ ;
63
+ //# sourceMappingURL=kvk-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvk-file.js","sourceRoot":"","sources":["../../../src/kvk/kvk-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,EAAE;AACF,4CAA4C;AAC5C,yCAAyC;AACzC,EAAE;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC,CAAC,wBAAwB;AACjF,MAAM,CAAC,MAAM,0BAA0B,GAAM,MAAM,CAAC,CAAK,aAAa;AAKrE,CAAC;AAMD,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,CAAC,6CAA6C;AAKpF,CAAC;AAWD,CAAC;AAQD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,4CAA4C;AAOlF,CAAC;AASD,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,+CAA+C;AAMxI,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,OAAO;IACnB,UAAU,CAAM;IAChB,OAAO,CAAM;IACb,QAAQ,CAAM;IACd,QAAQ,CAAM;IACd,QAAQ,CAAM;IACd,UAAU,CAAM;IAEvB;QACE,EAAE;QACF,wEAAwE;QACxE,8CAA8C;QAC9C,EAAE;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7B,GAAG,EAAE,CAAC,CAAC,OAAO;YACd,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,IAAI,EAAE,CAAC,CAAC,OAAO;YACf,KAAK,EAAE,CAAC,CAAC,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,QAAQ;YACjB,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7B,UAAU,EAAE,CAAC,CAAC,QAAQ;YACtB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;SAC5C,CAAC,CAAC;IAEL,CAAC;CACF;AAAA,CAAC"}
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import KVKSourceFile from './kvks-file.js';
3
+ import { VisualKeyboard, VisualKeyboardShiftState } from './visual-keyboard.js';
4
+ export declare enum KVKSParseErrorType {
5
+ invalidVkey = 0
6
+ }
7
+ export declare class KVKSParseError extends Error {
8
+ type: KVKSParseErrorType;
9
+ vkey: string;
10
+ }
11
+ export default class KVKSFileReader {
12
+ read(file: Uint8Array): KVKSourceFile;
13
+ /**
14
+ * The only element that allows spaces is <key>. Remove
15
+ * all other empty whitespace-only values.
16
+ * @param root
17
+ * @param source
18
+ */
19
+ private cleanupUnderscore;
20
+ validate(source: KVKSourceFile, schemaBuffer: Buffer): void;
21
+ transform(source: KVKSourceFile, errors?: KVKSParseError[]): VisualKeyboard;
22
+ /**
23
+ * xml2js will not place single-entry objects into arrays.
24
+ * Easiest way to fix this is to box them ourselves as needed
25
+ * @param source KVKSourceFile
26
+ */
27
+ private boxArrays;
28
+ kvksShiftToKvkShift(shift: string): VisualKeyboardShiftState;
29
+ }
30
+ //# sourceMappingURL=kvks-file-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-reader.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file-reader.ts"],"names":[],"mappings":";AACA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAE,cAAc,EAAwG,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAItL,oBAAY,kBAAkB;IAAG,WAAW,IAAA;CAAE;AAC9C,qBAAa,cAAe,SAAQ,KAAK;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa;IAyB5C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAoBlB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ3D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,cAAc;IA4DlF;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAYV,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;CAWpE"}
@@ -0,0 +1,154 @@
1
+ import * as xml2js from 'xml2js';
2
+ import { default as AjvModule } from 'ajv';
3
+ const Ajv = AjvModule.default; // The actual expected Ajv type.
4
+ import { boxXmlArray } from '../util/util.js';
5
+ import { VisualKeyboardLegalShiftStates } from './visual-keyboard.js';
6
+ import { USVirtualKeyCodes } from '../consts/virtual-key-constants.js';
7
+ import { BUILDER_KVK_HEADER_VERSION } from './kvk-file.js';
8
+ export var KVKSParseErrorType;
9
+ (function (KVKSParseErrorType) {
10
+ KVKSParseErrorType[KVKSParseErrorType["invalidVkey"] = 0] = "invalidVkey";
11
+ })(KVKSParseErrorType || (KVKSParseErrorType = {}));
12
+ ;
13
+ export class KVKSParseError extends Error {
14
+ type;
15
+ vkey;
16
+ }
17
+ ;
18
+ export default class KVKSFileReader {
19
+ read(file) {
20
+ let source;
21
+ const parser = new xml2js.Parser({
22
+ explicitArray: false,
23
+ mergeAttrs: false,
24
+ includeWhiteChars: true,
25
+ normalize: false,
26
+ emptyTag: {}
27
+ // Why "as any"? xml2js is broken:
28
+ // https://github.com/Leonidas-from-XIV/node-xml2js/issues/648 means
29
+ // that an old version of `emptyTag` is used which doesn't support
30
+ // functions, but DefinitelyTyped is requiring use of function or a
31
+ // string. See also notes at
32
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259#issuecomment-1254405470
33
+ // An alternative fix would be to pull xml2js directly from github
34
+ // rather than using the version tagged on npmjs.com.
35
+ });
36
+ parser.parseString(file, (e, r) => { source = r; });
37
+ source = this.boxArrays(source);
38
+ this.cleanupUnderscore('visualkeyboard', source.visualkeyboard);
39
+ return source;
40
+ }
41
+ /**
42
+ * The only element that allows spaces is <key>. Remove
43
+ * all other empty whitespace-only values.
44
+ * @param root
45
+ * @param source
46
+ */
47
+ cleanupUnderscore(root, source) {
48
+ if (root != 'key') {
49
+ if (source?.['_']?.trim() === '') {
50
+ delete source['_'];
51
+ }
52
+ }
53
+ for (let key of Object.keys(source)) {
54
+ if (Array.isArray(source[key])) {
55
+ for (let item of source[key]) {
56
+ if (typeof (item) === 'object') {
57
+ this.cleanupUnderscore(key, item);
58
+ }
59
+ }
60
+ }
61
+ else if (typeof source[key] === 'object') {
62
+ this.cleanupUnderscore(key, source[key]);
63
+ }
64
+ }
65
+ }
66
+ validate(source, schemaBuffer) {
67
+ const schema = JSON.parse(schemaBuffer.toString('utf8'));
68
+ const ajv = new Ajv();
69
+ if (!ajv.validate(schema, source)) {
70
+ throw new Error(ajv.errorsText());
71
+ }
72
+ }
73
+ transform(source, errors) {
74
+ // NOTE: at this point, the xml should have been validated
75
+ // and matched the schema result so we can assume properties exist
76
+ let result = {
77
+ header: {
78
+ version: BUILDER_KVK_HEADER_VERSION,
79
+ flags: 0,
80
+ ansiFont: { name: "Arial", size: -12, color: 0xFF000008 },
81
+ unicodeFont: { name: "Arial", size: -12, color: 0xFF000008 },
82
+ associatedKeyboard: source.visualkeyboard?.header?.kbdname,
83
+ underlyingLayout: source.visualkeyboard?.header?.layout,
84
+ },
85
+ keys: []
86
+ };
87
+ if (source.visualkeyboard?.header?.flags?.displayunderlying !== undefined) {
88
+ result.header.flags |= 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */;
89
+ }
90
+ if (source.visualkeyboard?.header?.flags?.key102 !== undefined) {
91
+ result.header.flags |= 1 /* VisualKeyboardHeaderFlags.kvkh102 */;
92
+ }
93
+ if (source.visualkeyboard?.header?.flags?.usealtgr !== undefined) {
94
+ result.header.flags |= 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */;
95
+ }
96
+ if (source.visualkeyboard?.header?.flags?.useunderlying !== undefined) {
97
+ result.header.flags |= 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */;
98
+ }
99
+ for (let encoding of source.visualkeyboard.encoding) {
100
+ let isUnicode = (encoding.$?.name == 'unicode'), font = isUnicode ? result.header.unicodeFont : result.header.ansiFont;
101
+ font.name = encoding.$?.fontname;
102
+ font.size = parseInt(encoding.$?.fontsize, 10);
103
+ for (let layer of encoding.layer) {
104
+ let shift = this.kvksShiftToKvkShift(layer.$?.shift);
105
+ for (let sourceKey of layer.key) {
106
+ let vkey = USVirtualKeyCodes[sourceKey.$?.vkey];
107
+ if (!vkey) {
108
+ if (errors) {
109
+ let e = new KVKSParseError();
110
+ e.type = KVKSParseErrorType.invalidVkey;
111
+ e.vkey = sourceKey.$?.vkey;
112
+ errors.push(e);
113
+ }
114
+ continue;
115
+ }
116
+ let key = {
117
+ flags: isUnicode ? 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ : 0,
118
+ shift: shift,
119
+ text: sourceKey._ ?? '',
120
+ vkey: vkey
121
+ };
122
+ result.keys.push(key);
123
+ }
124
+ }
125
+ }
126
+ return result;
127
+ }
128
+ /**
129
+ * xml2js will not place single-entry objects into arrays.
130
+ * Easiest way to fix this is to box them ourselves as needed
131
+ * @param source KVKSourceFile
132
+ */
133
+ boxArrays(source) {
134
+ boxXmlArray(source.visualkeyboard, 'encoding');
135
+ for (let encoding of source.visualkeyboard.encoding) {
136
+ boxXmlArray(encoding, 'layer');
137
+ for (let layer of encoding.layer) {
138
+ boxXmlArray(layer, 'key');
139
+ }
140
+ }
141
+ return source;
142
+ }
143
+ kvksShiftToKvkShift(shift) {
144
+ shift = shift.toUpperCase();
145
+ // TODO-LDML(lowpri): make a map of this?
146
+ for (let state of VisualKeyboardLegalShiftStates) {
147
+ if (state.name == shift) {
148
+ return state.shift;
149
+ }
150
+ }
151
+ return 0;
152
+ }
153
+ }
154
+ //# sourceMappingURL=kvks-file-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-reader.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { VisualKeyboard, VisualKeyboardShiftState } from './visual-keyboard.js';
2
+ export default class KVKSFileWriter {
3
+ write(vk: VisualKeyboard): string;
4
+ kvkShiftToKvksShift(shift: VisualKeyboardShiftState): string;
5
+ }
6
+ //# sourceMappingURL=kvks-file-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-writer.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file-writer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAqF,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGnK,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM;IAiGjC,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM;CASpE"}
@@ -0,0 +1,99 @@
1
+ import * as xml2js from 'xml2js';
2
+ import { VisualKeyboardLegalShiftStates } from './visual-keyboard.js';
3
+ import { USVirtualKeyCodes } from '../consts/virtual-key-constants.js';
4
+ export default class KVKSFileWriter {
5
+ write(vk) {
6
+ const builder = new xml2js.Builder({
7
+ allowSurrogateChars: true,
8
+ attrkey: '$',
9
+ charkey: '_',
10
+ xmldec: {
11
+ version: '1.0',
12
+ encoding: 'UTF-8',
13
+ standalone: true
14
+ }
15
+ });
16
+ let flags = {};
17
+ if (vk.header.flags & 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */) {
18
+ flags.displayunderlying = '';
19
+ }
20
+ if (vk.header.flags & 1 /* VisualKeyboardHeaderFlags.kvkh102 */) {
21
+ flags.key102 = '';
22
+ }
23
+ if (vk.header.flags & 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */) {
24
+ flags.usealtgr = '';
25
+ }
26
+ if (vk.header.flags & 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */) {
27
+ flags.useunderlying = '';
28
+ }
29
+ let kvks = {
30
+ visualkeyboard: {
31
+ header: {
32
+ version: '10.0',
33
+ kbdname: vk.header.associatedKeyboard,
34
+ flags: flags,
35
+ },
36
+ encoding: []
37
+ }
38
+ };
39
+ if (vk.header.underlyingLayout)
40
+ kvks.visualkeyboard.header.layout = vk.header.underlyingLayout;
41
+ let encodings = { ansi: null, unicode: null };
42
+ for (let key of vk.keys) {
43
+ const encoding = key.flags & 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ ? 'unicode' : 'ansi';
44
+ const shift = this.kvkShiftToKvksShift(key.shift);
45
+ if (!encodings[encoding]) {
46
+ encodings[encoding] = {
47
+ o: {
48
+ layer: [],
49
+ $: { name: encoding,
50
+ fontname: encoding == 'ansi' ? vk.header.ansiFont.name : vk.header.unicodeFont.name,
51
+ fontsize: (encoding == 'ansi' ? vk.header.ansiFont.size : vk.header.unicodeFont.size).toString(),
52
+ },
53
+ },
54
+ l: {}
55
+ };
56
+ kvks.visualkeyboard.encoding.push(encodings[encoding].o);
57
+ }
58
+ let e = encodings[encoding];
59
+ if (!e.l[shift]) {
60
+ e.l[shift] = {
61
+ key: [],
62
+ $: { shift: shift },
63
+ };
64
+ e.o.layer.push(e.l[shift]);
65
+ }
66
+ let l = e.l[shift];
67
+ // TODO-LDML: map
68
+ let vkeyName = '';
69
+ for (let vkey of Object.keys(USVirtualKeyCodes)) {
70
+ if (USVirtualKeyCodes[vkey] == key.vkey) {
71
+ vkeyName = vkey;
72
+ break;
73
+ }
74
+ }
75
+ if (vkeyName == '') {
76
+ //TODO-LDML: warn
77
+ continue;
78
+ }
79
+ let k = {
80
+ $: { vkey: vkeyName },
81
+ _: key.text,
82
+ };
83
+ l.key.push(k);
84
+ }
85
+ // console.dir(kvks, {depth:8});
86
+ let result = builder.buildObject(kvks);
87
+ return result; //Uint8Array.from(result);
88
+ }
89
+ kvkShiftToKvksShift(shift) {
90
+ // TODO-LDML(lowpri): make a map of this?
91
+ for (let state of VisualKeyboardLegalShiftStates) {
92
+ if (state.shift == shift) {
93
+ return state.name;
94
+ }
95
+ }
96
+ return '';
97
+ }
98
+ }
99
+ //# sourceMappingURL=kvks-file-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-writer.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export default interface KVKSourceFile {
2
+ /**
3
+ * <visualkeyboard> -- the root element.
4
+ */
5
+ visualkeyboard: KVKSVisualKeyboard;
6
+ }
7
+ export interface KVKSVisualKeyboard {
8
+ header?: KVKSHeader;
9
+ encoding?: KVKSEncoding[];
10
+ }
11
+ export interface KVKSHeader {
12
+ version?: string;
13
+ kbdname?: string;
14
+ flags?: KVKSFlags;
15
+ layout?: string;
16
+ }
17
+ export interface KVKSFlags {
18
+ key102?: string;
19
+ displayunderlying?: string;
20
+ useunderlying?: string;
21
+ usealtgr?: string;
22
+ }
23
+ export interface KVKSEncoding {
24
+ $?: {
25
+ name?: string;
26
+ fontname?: string;
27
+ fontsize?: string;
28
+ };
29
+ layer?: KVKSLayer[];
30
+ }
31
+ export interface KVKSLayer {
32
+ $?: {
33
+ shift?: string;
34
+ };
35
+ key?: KVKSKey[];
36
+ }
37
+ export interface KVKSKey {
38
+ $?: {
39
+ vkey?: string;
40
+ };
41
+ bitmap?: string;
42
+ _?: string;
43
+ }
44
+ //# sourceMappingURL=kvks-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,WAAW,aAAa;IACpC;;OAEG;IACH,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,10 @@
1
+ // .kvks xml format
2
+ // See VisualKeyboardLoaderXML.pas, not the same as VisualKeyboardImportXML.pas!
3
+ ;
4
+ ;
5
+ ;
6
+ ;
7
+ ;
8
+ ;
9
+ export {};
10
+ //# sourceMappingURL=kvks-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,gFAAgF;AAY/E,CAAC;AAOD,CAAC;AAOD,CAAC;AASD,CAAC;AAOD,CAAC;AAQD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { BUILDER_KVK_SHIFT_STATE, BUILDER_KVK_HEADER_FLAGS, BUILDER_KVK_KEY_FLAGS } from "./kvk-file.js";
2
+ export declare class VisualKeyboard {
3
+ header: VisualKeyboardHeader;
4
+ keys: VisualKeyboardKey[];
5
+ }
6
+ export { BUILDER_KVK_HEADER_FLAGS as VisualKeyboardHeaderFlags } from "./kvk-file.js";
7
+ export declare class VisualKeyboardHeader {
8
+ version?: number;
9
+ flags: BUILDER_KVK_HEADER_FLAGS;
10
+ associatedKeyboard?: string;
11
+ ansiFont: VisualKeyboardFont;
12
+ unicodeFont: VisualKeyboardFont;
13
+ underlyingLayout?: string;
14
+ }
15
+ export declare class VisualKeyboardFont {
16
+ name?: string;
17
+ size?: number;
18
+ color?: number;
19
+ }
20
+ export { BUILDER_KVK_KEY_FLAGS as VisualKeyboardKeyFlags } from "./kvk-file.js";
21
+ export { BUILDER_KVK_SHIFT_STATE as VisualKeyboardShiftState } from "./kvk-file.js";
22
+ export declare class VisualKeyboardKey {
23
+ flags?: BUILDER_KVK_KEY_FLAGS;
24
+ shift?: BUILDER_KVK_SHIFT_STATE;
25
+ vkey?: number;
26
+ text?: string;
27
+ }
28
+ interface VisualKeyboardLegalShiftState {
29
+ desc: string;
30
+ name: string;
31
+ shift: number;
32
+ vkeys: number[];
33
+ }
34
+ export declare const VisualKeyboardLegalShiftStates: VisualKeyboardLegalShiftState[];
35
+ //# sourceMappingURL=visual-keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-keyboard.d.ts","sourceRoot":"","sources":["../../../src/kvk/visual-keyboard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEzG,qBAAa,cAAc;IACzB,MAAM,EAAE,oBAAoB,CAAwE;IACpG,IAAI,EAAE,iBAAiB,EAAE,CAAM;CAChC;AAED,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEtF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,wBAAwB,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,kBAAkB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEpF,qBAAa,iBAAiB;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CAEf;AAED,UAAU,6BAA6B;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAKD,eAAO,MAAM,8BAA8B,EAAE,6BAA6B,EA2BzE,CAAC"}
@@ -0,0 +1,61 @@
1
+ //
2
+ // Visual Keyboard in-memory data
3
+ //
4
+ // Corresponds to .kvk / .kvks file data
5
+ //
6
+ export class VisualKeyboard {
7
+ header = { flags: 0, ansiFont: {}, unicodeFont: {}, underlyingLayout: undefined };
8
+ keys = [];
9
+ }
10
+ ;
11
+ export class VisualKeyboardHeader {
12
+ version; // 0x0600
13
+ flags;
14
+ associatedKeyboard;
15
+ ansiFont; // generally unused
16
+ unicodeFont;
17
+ underlyingLayout;
18
+ }
19
+ ;
20
+ export class VisualKeyboardFont {
21
+ name;
22
+ size;
23
+ color; // unused
24
+ }
25
+ ;
26
+ export class VisualKeyboardKey {
27
+ flags;
28
+ shift;
29
+ vkey;
30
+ text;
31
+ }
32
+ ;
33
+ ;
34
+ import { USVirtualKeyCodes as vk } from "../consts/virtual-key-constants.js";
35
+ export const VisualKeyboardLegalShiftStates = [
36
+ { desc: 'Unshifted', name: '', shift: 0 /* ss.KVKS_NORMAL */, vkeys: [] },
37
+ { desc: 'Shift', name: 'S', shift: 1 /* ss.KVKS_SHIFT */, vkeys: [vk.K_SHIFT] },
38
+ { desc: 'Ctrl', name: 'C', shift: 2 /* ss.KVKS_CTRL */, vkeys: [vk.K_CONTROL] },
39
+ { desc: 'Alt', name: 'A', shift: 4 /* ss.KVKS_ALT */, vkeys: [vk.K_ALT] },
40
+ { desc: 'Shift+Ctrl', name: 'SC', shift: 1 /* ss.KVKS_SHIFT */ | 2 /* ss.KVKS_CTRL */, vkeys: [vk.K_SHIFT, vk.K_CONTROL] },
41
+ { desc: 'Shift+Alt', name: 'SA', shift: 1 /* ss.KVKS_SHIFT */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_SHIFT, vk.K_ALT] },
42
+ { desc: 'Ctrl+Alt', name: 'CA', shift: 2 /* ss.KVKS_CTRL */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_CONTROL, vk.K_ALT] },
43
+ { desc: 'Shift+Ctrl+Alt', name: 'SCA', shift: 1 /* ss.KVKS_SHIFT */ | 2 /* ss.KVKS_CTRL */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_SHIFT, vk.K_CONTROL, vk.K_ALT] },
44
+ { desc: 'Left Ctrl', name: 'LC', shift: 8 /* ss.KVKS_LCTRL */, vkeys: [vk.K_LCONTROL] },
45
+ { desc: 'Right Ctrl', name: 'RC', shift: 16 /* ss.KVKS_RCTRL */, vkeys: [vk.K_RCONTROL] },
46
+ { desc: 'Left Alt', name: 'LA', shift: 32 /* ss.KVKS_LALT */, vkeys: [vk.K_LALT] },
47
+ { desc: 'Right Alt', name: 'RA', shift: 64 /* ss.KVKS_RALT */, vkeys: [vk.K_RALT] },
48
+ { desc: 'Shift+Left Ctrl', name: 'SLC', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL] },
49
+ { desc: 'Shift+Right Ctrl', name: 'SRC', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL] },
50
+ { desc: 'Shift+Left Alt', name: 'SLA', shift: 1 /* ss.KVKS_SHIFT */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_LALT] },
51
+ { desc: 'Shift+Right Alt', name: 'SRA', shift: 1 /* ss.KVKS_SHIFT */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_RALT] },
52
+ { desc: 'Left Ctrl+Left Alt', name: 'LCLA', shift: 8 /* ss.KVKS_LCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_LCONTROL, vk.K_LALT] },
53
+ { desc: 'Left Ctrl+Right Alt', name: 'LCRA', shift: 8 /* ss.KVKS_LCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_LCONTROL, vk.K_RALT] },
54
+ { desc: 'Right Ctrl+Left Alt', name: 'RCLA', shift: 16 /* ss.KVKS_RCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_RCONTROL, vk.K_LALT] },
55
+ { desc: 'Right Ctrl+Right Alt', name: 'RCRA', shift: 16 /* ss.KVKS_RCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_RCONTROL, vk.K_RALT] },
56
+ { desc: 'Shift+Left Ctrl+Left Alt', name: 'SLCLA', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL, vk.K_LALT] },
57
+ { desc: 'Shift+Left Ctrl+Right Alt', name: 'SLCRA', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL, vk.K_RALT] },
58
+ { desc: 'Shift+Right Ctrl+Left Alt', name: 'SRCLA', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL, vk.K_LALT] },
59
+ { desc: 'Shift+Right Ctrl+Right Alt', name: 'SRCRA', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL, vk.K_RALT] }, //16
60
+ ];
61
+ //# sourceMappingURL=visual-keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-keyboard.js","sourceRoot":"","sources":["../../../src/kvk/visual-keyboard.ts"],"names":[],"mappings":"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"}