@keymanapp/common-types
Version:
Keyman Developer keyboard file types
173 lines • 6.78 kB
TypeScript
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