Path: blob/1.0-develop/public/js/keyboard.polyfill.js
7432 views
/* global define, KeyboardEvent, module */12(function () {34var keyboardeventKeyPolyfill = {5polyfill: polyfill,6keys: {73: 'Cancel',86: 'Help',98: 'Backspace',109: 'Tab',1112: 'Clear',1213: 'Enter',1316: 'Shift',1417: 'Control',1518: 'Alt',1619: 'Pause',1720: 'CapsLock',1827: 'Escape',1928: 'Convert',2029: 'NonConvert',2130: 'Accept',2231: 'ModeChange',2332: ' ',2433: 'PageUp',2534: 'PageDown',2635: 'End',2736: 'Home',2837: 'ArrowLeft',2938: 'ArrowUp',3039: 'ArrowRight',3140: 'ArrowDown',3241: 'Select',3342: 'Print',3443: 'Execute',3544: 'PrintScreen',3645: 'Insert',3746: 'Delete',3848: ['0', ')'],3949: ['1', '!'],4050: ['2', '@'],4151: ['3', '#'],4252: ['4', '$'],4353: ['5', '%'],4454: ['6', '^'],4555: ['7', '&'],4656: ['8', '*'],4757: ['9', '('],4891: 'OS',4993: 'ContextMenu',50144: 'NumLock',51145: 'ScrollLock',52181: 'VolumeMute',53182: 'VolumeDown',54183: 'VolumeUp',55186: [';', ':'],56187: ['=', '+'],57188: [',', '<'],58189: ['-', '_'],59190: ['.', '>'],60191: ['/', '?'],61192: ['`', '~'],62219: ['[', '{'],63220: ['\\', '|'],64221: [']', '}'],65222: ["'", '"'],66224: 'Meta',67225: 'AltGraph',68246: 'Attn',69247: 'CrSel',70248: 'ExSel',71249: 'EraseEof',72250: 'Play',73251: 'ZoomOut'74}75};7677// Function keys (F1-24).78var i;79for (i = 1; i < 25; i++) {80keyboardeventKeyPolyfill.keys[111 + i] = 'F' + i;81}8283// Printable ASCII characters.84var letter = '';85for (i = 65; i < 91; i++) {86letter = String.fromCharCode(i);87keyboardeventKeyPolyfill.keys[i] = [letter.toLowerCase(), letter.toUpperCase()];88}8990function polyfill () {91if (!('KeyboardEvent' in window) ||92'key' in KeyboardEvent.prototype) {93return false;94}9596// Polyfill `key` on `KeyboardEvent`.97var proto = {98get: function (x) {99var key = keyboardeventKeyPolyfill.keys[this.which || this.keyCode];100101if (Array.isArray(key)) {102key = key[+this.shiftKey];103}104105return key;106}107};108Object.defineProperty(KeyboardEvent.prototype, 'key', proto);109return proto;110}111112if (typeof define === 'function' && define.amd) {113define('keyboardevent-key-polyfill', keyboardeventKeyPolyfill);114} else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {115module.exports = keyboardeventKeyPolyfill;116} else if (window) {117window.keyboardeventKeyPolyfill = keyboardeventKeyPolyfill;118}119120})();121122123