/** * Check whether pressed KeyboardEvent matches given `keyCode` and has Ctrl/Cmd modifier key pressed * @param {KeyboardEvent} event * @param {number} keyCode * @returns {boolean} true - if everything matches */ export function isCtrlKeyPress(event: KeyboardEvent, keyCode: number): boolean; /** * Check whether pressed KeyboardEvent is without key modifiers, such as: Ctrl, Alt, Shift * @param {KeyboardEvent} event * @returns {boolean} true - if no modifier keys pressed */ export function isPureKeyPress(event: KeyboardEvent): boolean; declare var _default: Keyboard; export default _default; /** * KEYBOARD EVENTS TRACKER ---------------------------------------------------- * Global KeyboardEvent observable instance to listen to key press events. * Keyboard Event listeners get activated upon import on client side, * but can be paused/reactivated at any time. * * @example: * import keyboard from '@webframer/js/keyboard.js' * keyboard.addShortcut(callback, [KEY.Ctrl, KEY.i], groupId?) // all keydown events * keyboard.onTap.addShortcut(callback, KEY.i, groupId?) // keydown followed by keyup events * keyboard.onHold.addShortcut(callback, KEY.ArrowUp, groupId?) // all keydown events * keyboard.onRelease.addShortcut(callback, KEY.Alt, groupId?) // keyup event * keyboard.unsubscribe() // pause Keyboard Event subscription * keyboard.subscribe() // resume Keyboard Event subscription * keyboard.pressed.Shift >>> true // if Shift key is currently pressed * keyboard.pressedKeyCode[16] >>> true // if Shift key is currently pressed * keyboard.pressedKeyCode[16] >>> undefined // if Shift key is released/not pressed * * ----------------------------------------------------------------------------- */ declare class Keyboard { constructor({ ignoreEventsFrom }?: { ignoreEventsFrom: any; }); /** * Check if given keyCode is currently pressed * @example: * keyboard.hasKeyPress(KEY.Space) * >>> false * * @param {number} keyCode * @returns {boolean} true is it is pressed */ hasKeyPress: (keyCode: number) => boolean; pressed: { UNDEFINED: number; LEFT_CLICK: number; MIDDLE_CLICK: number; RIGHT_CLICK: number; /** * Remove Keyboard Observable for all shortcuts by `callback`, group `id` or `keyCodes` * @example: * // Initial setup * const observable = keyboard.addShortcut(this.enable, KEY.p, 'PenTool') * // Remove all shortcuts by callback * keyboard.removeShortcut(observable) * // Same as above * keyboard.removeShortcut(this.enable) * // Remove all shortcuts by keyCodes * keyboard.removeShortcut([KEY.p]) * // Remove all shortcuts by group id * keyboard.removeShortcut('PenTool') * * @param {function|number[]|string|number} callbackOrKeyCodesOrId */ Ctrl: number; Cancel: number; Help: number; Backspace: number; Tab: number; Clear: number; Enter: number; ShiftLeft: number; ShiftRight: number; Shift: number; ControlLeft: number; ControlRight: number; Control: number; AltLeft: number; AltRight: number; Alt: number; Pause: number; CapsLock: number; Escape: number; Space: number; PageUp: number; PageDown: number; End: number; Home: number; ArrowLeft: number; ArrowUp: number; ArrowRight: number; ArrowDown: number; PrintScreen: number; Insert: number; Delete: number; Equal: number; Minus: number; MetaLeft: number; MetaRight: number; _0: number; _1: number; _2: number; _3: number; _4: number; _5: number; _6: number; _7: number; _8: number; _9: number; 0: number; 1: number; 2: number; 3: number; 4: number; 5: number; 6: number; 7: number; 8: number; 9: number; Digit0: number; Digit1: number; Digit2: number; Digit3: number; Digit4: number; Digit5: number; Digit6: number; Digit7: number; Digit8: number; Digit9: number; a: number; b: number; c: number; d: number; e: number; f: number; g: number; h: number; i: number; j: number; k: number; l: number; m: number; n: number; o: number; p: number; q: number; r: number; s: number; t: number; u: number; v: number; w: number; x: number; y: number; z: number; KeyA: number; KeyB: number; KeyC: number; KeyD: number; KeyE: number; KeyF: number; KeyG: number; KeyH: number; KeyI: number; KeyJ: number; KeyK: number; KeyL: number; KeyM: number; KeyN: number; KeyO: number; KeyP: number; KeyQ: number; KeyR: number; KeyS: number; KeyT: number; KeyU: number; KeyV: number; KeyW: number; KeyX: number; KeyY: number; KeyZ: number; }; pressedKeyCode: {}; ignoreEventsFrom: { input: boolean; textarea: boolean; }; _ctrlKeyCode: { [x: number]: number; }; _keyByCode: Object; _shortcuts: {}; /** * Add Keyboard Observable for key press(es). * To prevent duplicate error when using the same shortcut key(s), assign a unique id. * * @example: * class PenTool extend PureComponent { * setup = () => keyboard.addShortcut(this.enable, [KEY.Ctrl, KEY.p], 'PenTool') * remove = () => keyboard.removeShortcut(this.enable) * } * @param {function} callback - will get `KeyboardEvent` as argument * @param {number|number[]} keyCodes - KeyboardEvent.keyCode/s * @param {string|number} [id] - unique group id to remove all shortcuts on unmount * @returns {function} callback - to be used for removing the shortcut */ addShortcut: (callback: Function, keyCodes: number | number[], id?: string | number | undefined) => Function; /** * Remove Keyboard Observable for all shortcuts by `callback`, group `id` or `keyCodes` * @example: * // Initial setup * const observable = keyboard.addShortcut(this.enable, KEY.p, 'PenTool') * // Remove all shortcuts by callback * keyboard.removeShortcut(observable) * // Same as above * keyboard.removeShortcut(this.enable) * // Remove all shortcuts by keyCodes * keyboard.removeShortcut([KEY.p]) * // Remove all shortcuts by group id * keyboard.removeShortcut('PenTool') * * @param {function|number[]|string|number} callbackOrKeyCodesOrId */ removeShortcut: (callbackOrKeyCodesOrId: Function | number[] | string | number) => void; /** * @param {function} callback */ removeShortcutByCallback: (callback: Function) => void; /** * @param {number} keyCodes */ removeShortcutByKeyCodes: (...keyCodes: number) => void; /** * @param {string|number} id */ removeShortcutById: (id: string | number) => void; onTap: { addShortcut: (callback: Function, keyCodes: number | number[], id?: string | number | undefined) => Function; removeShortcut: (callbackOrKeyCodesOrId: Function | number[] | string | number) => void; }; onHold: { addShortcut: (callback: Function, keyCodes: number | number[], id?: string | number | undefined) => Function; removeShortcut: (callbackOrKeyCodesOrId: Function | number[] | string | number) => void; }; onRelease: { addShortcut: (callback: Function, keyCodes: number | number[], id?: string | number | undefined) => Function; removeShortcut: (callbackOrKeyCodesOrId: Function | number[] | string | number) => void; }; subscribe: () => void; unsubscribe: () => void; _onPress: (event: any) => void; _onRelease: (event: any) => void; }