UNPKG

@waradu/keyboard

Version:

A keyboard manager compatible with JavaScript, TypeScript and Nuxt

155 lines (153 loc) 5.1 kB
declare const SEPARATOR: "+"; declare const ANYKEY: "$any"; type AnyKey = typeof ANYKEY; declare const keys: { readonly backspace: "backspace"; readonly tab: "tab"; readonly enter: "enter"; readonly pause: "pause"; readonly escape: "escape"; readonly " ": "space"; readonly pageup: "page-up"; readonly pagedown: "page-down"; readonly end: "end"; readonly home: "home"; readonly arrowleft: "arrow-left"; readonly arrowup: "arrow-up"; readonly arrowright: "arrow-right"; readonly arrowdown: "arrow-down"; readonly printscreen: "print-screen"; readonly insert: "insert"; readonly delete: "delete"; readonly contextmenu: "context-menu"; readonly "0": "0"; readonly "1": "1"; readonly "2": "2"; readonly "3": "3"; readonly "4": "4"; readonly "5": "5"; readonly "6": "6"; readonly "7": "7"; readonly "8": "8"; readonly "9": "9"; readonly a: "a"; readonly b: "b"; readonly c: "c"; readonly d: "d"; readonly e: "e"; readonly f: "f"; readonly g: "g"; readonly h: "h"; readonly i: "i"; readonly j: "j"; readonly k: "k"; readonly l: "l"; readonly m: "m"; readonly n: "n"; readonly o: "o"; readonly p: "p"; readonly q: "q"; readonly r: "r"; readonly s: "s"; readonly t: "t"; readonly u: "u"; readonly v: "v"; readonly w: "w"; readonly x: "x"; readonly y: "y"; readonly z: "z"; readonly f1: "f1"; readonly f2: "f2"; readonly f3: "f3"; readonly f4: "f4"; readonly f5: "f5"; readonly f6: "f6"; readonly f7: "f7"; readonly f8: "f8"; readonly f9: "f9"; readonly f10: "f10"; readonly f11: "f11"; readonly f12: "f12"; readonly f13: "f13"; readonly f14: "f14"; readonly f15: "f15"; readonly f16: "f16"; readonly f17: "f17"; readonly f18: "f18"; readonly f19: "f19"; readonly f20: "f20"; readonly f21: "f21"; readonly f22: "f22"; readonly f23: "f23"; readonly f24: "f24"; readonly numlock: "num-lock"; readonly scrolllock: "scroll-lock"; readonly audiovolumemute: "audio-volume-mute"; readonly audiovolumedown: "audio-volume-down"; readonly audiovolumeup: "audio-volume-up"; readonly mediatracknext: "media-track-next"; readonly mediatrackprevious: "media-track-previous"; readonly mediaplaypause: "media-play-pause"; readonly mediaplay: "media-play"; readonly mediapause: "media-pause"; readonly mediastop: "media-stop"; readonly "-": "minus"; readonly "=": "equal"; readonly "+": "plus"; readonly ",": "comma"; readonly ".": "period"; readonly "*": "star"; readonly "#": "hash"; readonly "%": "percent"; readonly "&": "ampersand"; readonly "'": "single-quote"; readonly '"': "double-quote"; readonly "/": "slash"; readonly "\\": "backslash"; readonly "<": "angle-brackets-open"; readonly ">": "angle-brackets-close"; readonly "[": "square-brackets-open"; readonly "]": "square-brackets-close"; readonly "{": "curly-brackets-open"; readonly "}": "curly-brackets-close"; readonly "`": "backquote"; readonly "~": "tilde"; readonly $: "dollar"; readonly "?": "question-mark"; readonly "!": "exclamation-mark"; readonly dynNum: "$num"; }; declare const modifiers: { readonly meta: "meta"; readonly ctrl: "ctrl"; readonly ctrlCmd: "ctrlCmd"; readonly alt: "alt"; readonly shift: "shift"; }; declare const platforms: { readonly macos: "macos"; readonly windows: "win"; readonly linux: "linux"; readonly no_macos: "no-macos"; readonly no_windows: "no-win"; readonly no_linux: "no-linux"; }; type ModifierKey = keyof typeof modifiers; type KeyKey = keyof typeof keys; type PlatformKey = keyof typeof platforms; type ModifierValue = (typeof modifiers)[ModifierKey]; type KeyValue = (typeof keys)[KeyKey]; type PlatformValue = (typeof platforms)[PlatformKey]; type FixedCombinations<T extends readonly string[], Acc extends string[] = []> = T extends [ infer F extends string, ...infer R extends string[] ] ? FixedCombinations<R, Acc> | FixedCombinations<R, [...Acc, F]> : Acc; type PhysicalPrefixTuples = Exclude<FixedCombinations<["meta", "ctrl", "alt", "shift"]>, []>; type CtrlCmdPrefixTuples = Exclude<FixedCombinations<["ctrl-cmd", "alt", "shift"]>, []>; type PrefixTuples = PhysicalPrefixTuples | CtrlCmdPrefixTuples; type Join<T extends readonly string[]> = T extends [] ? "" : T extends [infer F extends string] ? F : T extends [infer F extends string, ...infer R extends readonly string[]] ? `${F}${typeof SEPARATOR}${Join<R>}` : string; type WithModifier = `${Join<PrefixTuples>}${typeof SEPARATOR}${KeyValue}`; type KeySequence = KeyValue | WithModifier; type KeyString = KeySequence | `${PlatformValue}:${KeySequence}` | AnyKey; export { ANYKEY, SEPARATOR, keys, modifiers, platforms }; export type { AnyKey, KeyKey, KeySequence, KeyString, KeyValue, ModifierKey, ModifierValue, PlatformKey, PlatformValue };