keyboard-manager
Version:
Small keyboard shortcut management for DOM-based applications
68 lines (67 loc) • 1.97 kB
TypeScript
/**
* 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;
}