Skip to content

Instantly share code, notes, and snippets.

@tmanderson
Last active December 17, 2015 23:49
Show Gist options
  • Save tmanderson/5692586 to your computer and use it in GitHub Desktop.
Save tmanderson/5692586 to your computer and use it in GitHub Desktop.
JavaScript KeyEvent keyCode helper library
var Keyman = (function() {
var Key = {
8: 'BACKSPACE',
9: 'TAB',
13: 'ENTER',
16: 'SHIFT',
17: 'CTRL',
18: 'ALT',
19: 'PAUSE_BREAK',
20: 'CAPS_LOCK',
27: 'ESCAPE',
33: 'PAGE_UP',
34: 'PAGE_DOWN',
35: 'END',
36: 'HOME',
37: 'LEFT_ARROW',
38: 'UP_ARROW',
39: 'RIGHT_ARROW',
40: 'DOWN_ARROW',
45: 'INSERT',
46: 'DELETE',
48: [0,')'],
49: [1,'!'],
50: [2,'@'],
51: [3,'#'],
52: [4,'$'],
53: [5,'%'],
54: [6,'^'],
55: [7,'&'],
56: [8,'*'],
57: [9,'('],
65: 'A',
66: 'B',
67: 'C',
68: 'D',
69: 'E',
70: 'F',
71: 'G',
72: 'H',
73: 'I',
74: 'J',
75: 'K',
76: 'L',
77: 'M',
78: 'N',
79: 'O',
80: 'P',
81: 'Q',
82: 'R',
83: 'S',
84: 'T',
85: 'U',
86: 'V',
87: 'W',
88: 'X',
89: 'Y',
90: 'Z',
91: 'LEFT_WINDOW_KEY',
92: 'RIGHT_WINDOW_KEY',
93: 'SELECT_KEY',
96: 'NUM_PAD_0',
97: 'NUM_PAD_1',
98: 'NUM_PAD_2',
99: 'NUM_PAD_3',
100: 'NUM_PAD_4',
101: 'NUM_PAD_5',
102: 'NUM_PAD_6',
103: 'NUM_PAD_7',
104: 'NUM_PAD_8',
105: 'NUM_PAD_9',
106: 'NUM_PAD_ASTERISK',
107: 'NUM_PAD_PLUS',
109: 'NUM_PAD_MINUS',
111: 'NUM_PAD_FOWARD_SLASH',
112: 'F1',
113: 'F2',
114: 'F3',
115: 'F4',
116: 'F5',
117: 'F6',
118: 'F7',
119: 'F8',
120: 'F9',
121: 'F10',
122: 'F11',
123: 'F12',
144: 'NUM_LOCK',
145: 'SCROLL_LOCK',
186: [';',':'],
187: ['=','+'],
188: [',','<'],
189: ['-','_'],
190: ['.','>'],
191: ['/','?'],
192: ['`','~'],
219: ['[','{'],
220: ['\\','|'],
221: [']','}'],
222: ['\'','"']
}
var lastpressed = [],
currentlyPressed = [],
shift = false;
function isArray(obj) {
return Array.prototype.isPrototypeOf(obj);
}
function toChar(keycode) {
var shift = !~currentlyPressed.indexOf(/shift/i),
char = (shift && isArray(char) ? char[1] : char[0]);
return shift ? char : char.toLowerCase();
}
document.addEventListener('keydown', function(e) {
var char = toChar(e.keyCode);
currentlyPressed.push(char);
e.xchar = char;
e.xallChars = currentlyPressed;
}, true);
document.addEventListener('keyup', function(e) {
e.xchar = currentlyPressed.splice(toChar(e.keyCode), 1)[0];
e.xallChars = currentlyPressed;
}, true);
return {
toChar : toChar,
addToString : addToString
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment