UNPKG

key-display-names

Version:

Convert key codes to easily readable names.

84 lines (83 loc) 4.32 kB
const RAW_KEY_MAP = [ { keys: ['tab'], result: 'Tab ↹' }, { keys: ['enter'], result: '↵ Enter' }, { keys: ['space'], result: ['⎵', 'Space'] }, { keys: ['home'], result: 'Home' }, { keys: ['end'], result: 'End' }, { keys: ['minus'], result: ['-', 'Minus'] }, { keys: ['equal'], result: ['=', 'Equal'] }, { keys: ['bracketleft'], result: ['[', 'Left Bracket'] }, { keys: ['bracketright'], result: [']', 'Right Bracket'] }, { keys: ['backslash'], result: ['\\', 'Backslash'] }, { keys: ['semicolon'], result: [';', 'Semicolon'] }, { keys: ['quote'], result: ["'", 'Quote'] }, { keys: ['comma'], result: [',', 'Comma'] }, { keys: ['period'], result: ['.', 'Period'] }, { keys: ['slash'], result: ['/', 'Slash'] }, { keys: ['backquote'], result: ['`', 'Backquote'] }, // arrows { keys: ['arrowleft', 'left'], result: ['←', '← Left'] }, { keys: ['arrowright', 'right'], result: ['→', '→ Right'] }, { keys: ['arrowup', 'up'], result: ['↑', '↑ Up'] }, { keys: ['arrowdown', 'down'], result: ['↓', '↓ Down'] }, // functional keys { keys: ['capslock', 'caps'], result: 'Caps Lock' }, { keys: ['numlock', 'num'], result: 'Num Lock' }, { keys: ['shift', 'leftshift', 'shiftleft'], result: ['Shift', 'Left Shift'] }, { keys: ['rightshift', 'shiftright'], result: 'Right Shift' }, { keys: ['ctrl', 'control', 'leftctrl', 'ctrlleft', 'leftcontrol', 'controlleft'], result: ['Ctrl', 'Left Control'] }, { keys: ['rightctrl', 'ctrlright', 'rightcontrol', 'controlright'], result: ['Right Ctrl', 'Right Control'], }, { keys: ['cmd', 'command'], result: ['Cmd', 'Command'] }, { keys: ['option', 'opt'], result: ['Opt', 'Option'] }, { keys: ['alt', 'leftalt', 'altleft'], result: ['Alt', 'Left Alt'] }, { keys: ['altgraph', 'altgr', 'rightalt', 'altright'], result: ['Alt Gr', 'Alt Graph'] }, { keys: ['escape', 'esc'], result: ['Esc', 'Escape'] }, { keys: ['insert', 'ins'], result: ['Ins', 'Insert'] }, { keys: ['delete', 'del'], result: ['Del', 'Delete'] }, { keys: ['windows', 'win', 'leftmeta', 'metaleft'], result: ['⊞ Win', '⊞ Windows'] }, { keys: ['menu', 'contextmenu'], result: '▤ Menu' }, { keys: ['backspace', 'back', 'bcksp'], result: ['Bcksp', 'Backspace'] }, { keys: ['printscreen', 'printsc', 'prtsc'], result: ['Prt Sc', 'Print Screen'] }, // numpad { keys: ['numpaddivide', 'divide'], result: ['Numpad /', 'Divide'] }, { keys: ['numpadmultiply', 'multiply'], result: ['Numpad *', 'Multiply'] }, { keys: ['numpadadd', 'add'], result: ['Numpad +', 'Add'] }, { keys: ['numpadsubstract', 'substract'], result: ['Numpad -', 'Substract'] }, { keys: ['numpaddecimal', 'decimal'], result: ['Numpad .', 'Decimal'] }, { keys: ['numpadenter'], result: '↵ Numpad Enter' }, // volume { keys: ['audiovolumemute', 'audiomute', 'volumemute', 'mute'], result: ['Vol. Mute', 'Audio Volume Mute'] }, { keys: ['audiovolumedown', 'volumedown'], result: ['Vol. Down', 'Audio Volume Down'] }, { keys: ['audiovolumeup', 'volumeup'], result: ['Vol. Up', 'Audio Volume Up'] }, // page keys { keys: ['pagedown', 'pgdown'], result: ['Pg Down', 'Page Down'] }, { keys: ['pageup', 'pgup'], result: ['Pg Up', 'Page Up'] }, ]; const PREMADE_KEY_MAP = RAW_KEY_MAP.reduce((acc, v) => { for (const key of v.keys) { acc[key] = v.result; } return acc; }, {}); // create keys for all the letters const LETTER_KEY_MAP = 'abcdefghijklmnopqrstuvwxyz'.split('').reduce((acc, v) => { acc[`key${v}`] = v.toUpperCase(); return acc; }, {}); // create keys for all the numbers (and numpad numbers) const DIGIT_KEY_MAP = {}; for (let i = 0; i < 10; i++) { const str = i.toString(); DIGIT_KEY_MAP[`digit${str}`] = str; DIGIT_KEY_MAP[`numpad${str}`] = `Numpad ${str}`; } // create keys for all function keys (F1, F2, ..., F12) const F_KEY_MAP = {}; for (let i = 1; i <= 12; i++) { const str = i.toString(); F_KEY_MAP[`f${str}`] = str; } export const KEY_MAP = Object.assign(Object.assign(Object.assign(Object.assign({}, PREMADE_KEY_MAP), LETTER_KEY_MAP), DIGIT_KEY_MAP), F_KEY_MAP);