UNPKG

keyboard-manager

Version:

Small keyboard shortcut management for DOM-based applications

68 lines (67 loc) 1.97 kB
/** * Custom keyboard event interface with looser requirements than the native browser keyboard event, helpful for testing. */ export interface Event { key?: string; target?: EventTarget | HTMLElement | null; shiftKey?: boolean; ctrlKey?: boolean; altKey?: boolean; metaKey?: boolean; } /** * Keyboard event listener. */ export declare type KeyboardEventListener = (event: Event) => void; /** * Source: https://github.com/madrobby/keymaster/blob/3b1f2afabf1569848dea8b697ac418f19b601a30/keymaster.js */ export declare const KEY_MAP: Map<string, string>; /** * Continue propagating the event to older listeners. */ export declare const SHOULD_PROPAGATE = true; /** * Normalize a key value to standard format. */ export declare function normalizeKey(key: string | undefined): string; /** * Stringify a keyboard event. */ export declare function keyboardEventCombo(e: Event): string; /** * Map keys to string. */ export declare function stringifyKey(...keys: (string | undefined)[]): string; /** * Keyboard event handler. */ export declare type KeyHandler = (event: Event, key: string) => void | boolean; /** * Keyboard shortcut map. */ export interface Shortcuts { [key: string]: KeyHandler; } /** * Create a listener function from shortcuts. */ export declare function createShortcuts(shortcuts: Shortcuts, returnValue?: boolean): KeyHandler; /** * Check if a keyboard event originated from an input. */ export declare function isInputEvent(event: Event): boolean; /** * Function to wrap listener by filtering input events. */ export declare function filterInputEvent(listener: KeyHandler): KeyHandler; /** * Keyboard manager library for mapping key events. */ export declare class Keyboard { listeners: Set<KeyHandler>; addListener(callback: KeyHandler): void; removeListener(callback: KeyHandler): void; getHandler(): KeyboardEventListener; getListener(returnValue?: boolean): KeyHandler; }