UNPKG

@keymanapp/common-types

Version:

Keyman Developer keyboard file types

173 lines 6.78 kB
import { TouchLayoutPlatform as LayoutFormFactorSpec } from './keyman-touch-layout/keyman-touch-layout-file.js'; export type ComplexKeyboardStore = (string | { t: 'd'; d: number; } | { ['t']: 'b'; })[]; type KeyEventStub = {}; type OutputTargetStub = {}; export interface EncodedVisualKeyboard { /** Represents CSS font styling to use for VisualKeyboard text */ F: string; /** Should there be a 102nd key? */ K102?: boolean; /** * Keyboard Layer Specification: an object-based map of layer name to the keycaps for its * 65 keys. The 65 keys are ordered from left to right, then top to bottom. * * The key ID corresponding to each index of the array is specified within `Codes.dfltCodes`. * Entries corresponding to `K_*` in `Codes.dfltCodes` are reserved for future use. */ KLS?: { [layerName: string]: string[]; }; /** * @deprecated * The older form for data in KLS - defines keycaps for 'default' keys, then 'shift' keys, * in a single concatenated array. */ BK?: string[]; } export type LayoutSpec = { "desktop"?: LayoutFormFactorSpec; "phone"?: LayoutFormFactorSpec; "tablet"?: LayoutFormFactorSpec; }; export type KeyboardObject = { /** * group-start: the function triggering processing for the keyboard's * "Unicode" start group, corresponding to `begin Unicode > use(_____)` in * Keyman keyboard language. * @param outputTarget The context to which the keystroke applies * @param keystroke The full, pre-processed keystroke triggering * keyboard-rule application. */ gs(outputTarget: OutputTargetStub, keystroke: KeyEventStub): boolean; /** * group-newcontext: the function triggering processing for the keyboard's * "NewContext" start group, corresponding to `begin NewContext > use(_____)` * in Keyman keyboard language. * @param outputTarget The new context to be used with future keystrokes * @param keystroke A 'null' `KeyEvent` providing current modifier + state information. */ gn?(outputTarget: OutputTargetStub, keystroke: KeyEventStub): boolean; /** * group-postkeystroke: the function triggering processing for the keyboard's * "PostKeystroke" start group, corresponding to `begin PostKeystroke > * use(_____)` in Keyman keyboard language. * @param outputTarget The context altered by a recent keystroke. As a * precondition, all changes due to `gs` / `begin Unicode` should already be * applied. * @param keystroke A 'null' `KeyEvent` providing current modifier + state information. */ gpk?(outputTarget: OutputTargetStub, keystroke: KeyEventStub): boolean; /** * Keyboard ID: the uniquely-identifying name for this keyboard. Includes the standard * `Keyboard_` prefix. May be 'namespaced' with a prefix corresponding to a package name * within app/webview. */ KI: string; /** * Keyboard Name: the human-readable name of the keyboard. */ KN: string; /** * Encoded data usable to construct a desktop/hardware-oriented on-screen keyboard. */ KV: EncodedVisualKeyboard; /** * Keyboard Language Code: set within select keyboards. * * Currently, it's only used to determine the need for CJK-picker support. Is missing * in most compiled keyboards. */ KLC?: string; /** * @deprecated * Keyboard Language Code: set within select keyboards. * * Currently, it's only used to determine the need for CJK-picker support. * Is (probably) an older name of KLC with the identical purpose. Is missing * in most compiled keyboards. */ LanguageCode?: string; /** * Keyboard CSS: provides the definition for custom keyboard style sheets */ KCSS?: string; /** * Keyboard is RTL: a simple flag noting if the keyboard's script is RTL. */ KRTL?: boolean; /** * Keyboard Modifier BitMask: a set of bitflags indicating which modifiers * the keyboard's rules utilize. See also: `ModifierKeyConstants`. */ KMBM?: number; /** * Keyboard Supplementary plane: set to 1 if the keyboard uses non-BMP Unicode * characters. */ KS?: number; /** * Keyman Visual Keyboard Layout: defines the touch-layout definitions used for * 'phone' and 'tablet' form-factors. */ KVKL?: LayoutSpec; /** * Keyboard is Mnemonic: set to 1 if the keyboard uses a mnemonic layout. */ KM?: number; /** * KeyBoard VERsion: the version of this keyboard. */ KBVER?: string; /** * Keyman VERsion: the version of Keyman Developer used to compile this keyboard. */ KVER?: string; /** * Keyman Variable Stores: an array of the names of all variable stores used by the * keyboard. */ KVS?: (`s${number}`)[]; /** * Keyboard Help: HTML help text, as specified by either the &kmw_helptext or &kmw_helpfile system stores. * * Reference: https://help.keyman.com/developer/language/reference/kmw_helptext, * https://help.keyman.com/developer/language/reference/kmw_helpfile */ KH?: string; /** * Keyboard Virtual Key Dictionary: the Developer-compiled, minified dictionary of virtual-key codes */ KVKD?: string; /** * Keyboard Display Underlying: set to 1 if the desktop form of the keyboard * should show the US QWERTY underlying keycaps. These may also appear on * touch layouts if set and no touch-layout information is available. */ KDU?: number; /** * Keyboard Help File: Embedded JS script designed for use with a keyboard's * HTML help text. Always defined within the file referenced by &kmw_embedjs * in a keyboard's source, though that file may also contain _other_ script * definitions as well. (`KHF` must be explicitly defined within that file.) * @param e Will be provided with the root element (a <div>) of the On-Screen Keyboard. * @returns */ KHF?: (e: any) => string; /** * Keyboard Notify Shift: Provided by CJK-picker keyboards to properly * interface them with Keyman Engine for Web. * @param {number} _PCommand event code (16,17,18) or 0; 16-18 * correspond to modifier codes when pressed, while 0 corresponds to loss of focus * @param {Object} _PTarget target element * @param {number} _PData 1 or 0 * @returns */ KNS?: (_PCommand: number, _PTarget: OutputTargetStub, _PData: number) => void; } & Record<`s${number}`, string>; export {}; //# sourceMappingURL=keyboard-object.d.ts.map