@keymanapp/common-types
Version:
Keyman Developer keyboard file types
93 lines (91 loc) • 4.07 kB
JavaScript
!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]="8c03099b-d6b6-5110-8d1b-2d7b6ca3c87a")}catch(e){}}();
import * as r from 'restructure';
//
// Binary backing structures for .kvk format
// matching VisualKeyboardSaverBinary.pas
//
export const BUILDER_KVK_HEADER_IDENTIFIER = 0x464B564B; // 'KVKF', little-endian
export const KVK_HEADER_IDENTIFIER_BYTES = [0x4B, 0x56, 0x4B, 0x46];
export const BUILDER_KVK_HEADER_VERSION = 0x0600; // Keyman 6.0
;
;
export const BUILDER_KVK_FONT_Size = 8; // size of fixed elements of BUILDER_KVK_FONT
export var BUILDER_KVK_KEY_FLAGS;
(function (BUILDER_KVK_KEY_FLAGS) {
BUILDER_KVK_KEY_FLAGS[BUILDER_KVK_KEY_FLAGS["kvkkBitmap"] = 1] = "kvkkBitmap";
BUILDER_KVK_KEY_FLAGS[BUILDER_KVK_KEY_FLAGS["kvkkUnicode"] = 2] = "kvkkUnicode";
})(BUILDER_KVK_KEY_FLAGS || (BUILDER_KVK_KEY_FLAGS = {}));
;
export var BUILDER_KVK_SHIFT_STATE;
(function (BUILDER_KVK_SHIFT_STATE) {
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_NORMAL"] = 0] = "KVKS_NORMAL";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_SHIFT"] = 1] = "KVKS_SHIFT";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_CTRL"] = 2] = "KVKS_CTRL";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_ALT"] = 4] = "KVKS_ALT";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_LCTRL"] = 8] = "KVKS_LCTRL";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_RCTRL"] = 16] = "KVKS_RCTRL";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_LALT"] = 32] = "KVKS_LALT";
BUILDER_KVK_SHIFT_STATE[BUILDER_KVK_SHIFT_STATE["KVKS_RALT"] = 64] = "KVKS_RALT";
})(BUILDER_KVK_SHIFT_STATE || (BUILDER_KVK_SHIFT_STATE = {}));
;
;
export const BUILDER_KVK_KEY_Size = 9; // size of fixed elements of BUILDER_KVK_KEY
export var BUILDER_KVK_HEADER_FLAGS;
(function (BUILDER_KVK_HEADER_FLAGS) {
BUILDER_KVK_HEADER_FLAGS[BUILDER_KVK_HEADER_FLAGS["kvkhNone"] = 0] = "kvkhNone";
BUILDER_KVK_HEADER_FLAGS[BUILDER_KVK_HEADER_FLAGS["kvkh102"] = 1] = "kvkh102";
BUILDER_KVK_HEADER_FLAGS[BUILDER_KVK_HEADER_FLAGS["kvkhDisplayUnderlying"] = 2] = "kvkhDisplayUnderlying";
BUILDER_KVK_HEADER_FLAGS[BUILDER_KVK_HEADER_FLAGS["kvkhUseUnderlying"] = 4] = "kvkhUseUnderlying";
BUILDER_KVK_HEADER_FLAGS[BUILDER_KVK_HEADER_FLAGS["kvkhAltGr"] = 8] = "kvkhAltGr";
})(BUILDER_KVK_HEADER_FLAGS || (BUILDER_KVK_HEADER_FLAGS = {}));
;
;
export const BUILDER_KVK_HEADER_Size = 9 + BUILDER_KVK_FONT_Size + BUILDER_KVK_FONT_Size; // size of fixed elements of BUILDER_KVK_HEADER
;
export default class KVKFile {
KVK_HEADER;
KVK_KEY;
KVK_KEYS;
KVK_FONT;
KVK_FILE;
KVK_STRING;
constructor() {
//
// Binary restructure definitions matching VisualKeyboardSaverBinary.pas
// TODO: move binaries to separate kvk-file.ts
//
this.KVK_STRING = new r.Struct({
len: r.int16le,
str: new r.String(null, 'utf16le')
});
this.KVK_FONT = new r.Struct({
name: this.KVK_STRING,
size: r.int32le,
color: r.uint32le
});
this.KVK_KEY = new r.Struct({
flags: r.uint8,
shift: r.uint16le,
vkey: r.uint16le,
text: this.KVK_STRING,
bitmapSize: r.uint32le,
bitmapData: new r.Array(r.uint8, 'bitmapSize')
});
this.KVK_HEADER = new r.Struct({
identifier: r.uint32le, // KVKF
version: r.uint32le, // 0x0600
flags: r.uint8,
associatedKeyboard: this.KVK_STRING,
ansiFont: this.KVK_FONT,
unicodeFont: this.KVK_FONT
});
this.KVK_FILE = new r.Struct({
header: this.KVK_HEADER,
keyCount: r.uint32le,
keys: new r.Array(this.KVK_KEY, 'keyCount')
});
}
}
;
//# sourceMappingURL=kvk-file.js.map
//# debugId=8c03099b-d6b6-5110-8d1b-2d7b6ca3c87a