1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | 'use strict';
|
10 |
|
11 | var getEventCharCode = require('./getEventCharCode');
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | var normalizeKey = {
|
18 | Esc: 'Escape',
|
19 | Spacebar: ' ',
|
20 | Left: 'ArrowLeft',
|
21 | Up: 'ArrowUp',
|
22 | Right: 'ArrowRight',
|
23 | Down: 'ArrowDown',
|
24 | Del: 'Delete',
|
25 | Win: 'OS',
|
26 | Menu: 'ContextMenu',
|
27 | Apps: 'ContextMenu',
|
28 | Scroll: 'ScrollLock',
|
29 | MozPrintableKey: 'Unidentified'
|
30 | };
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | var translateToKey = {
|
38 | 8: 'Backspace',
|
39 | 9: 'Tab',
|
40 | 12: 'Clear',
|
41 | 13: 'Enter',
|
42 | 16: 'Shift',
|
43 | 17: 'Control',
|
44 | 18: 'Alt',
|
45 | 19: 'Pause',
|
46 | 20: 'CapsLock',
|
47 | 27: 'Escape',
|
48 | 32: ' ',
|
49 | 33: 'PageUp',
|
50 | 34: 'PageDown',
|
51 | 35: 'End',
|
52 | 36: 'Home',
|
53 | 37: 'ArrowLeft',
|
54 | 38: 'ArrowUp',
|
55 | 39: 'ArrowRight',
|
56 | 40: 'ArrowDown',
|
57 | 45: 'Insert',
|
58 | 46: 'Delete',
|
59 | 112: 'F1',
|
60 | 113: 'F2',
|
61 | 114: 'F3',
|
62 | 115: 'F4',
|
63 | 116: 'F5',
|
64 | 117: 'F6',
|
65 | 118: 'F7',
|
66 | 119: 'F8',
|
67 | 120: 'F9',
|
68 | 121: 'F10',
|
69 | 122: 'F11',
|
70 | 123: 'F12',
|
71 | 144: 'NumLock',
|
72 | 145: 'ScrollLock',
|
73 | 224: 'Meta'
|
74 | };
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 | function getEventKey(nativeEvent) {
|
81 | if (nativeEvent.key) {
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 | var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
|
88 | if (key !== 'Unidentified') {
|
89 | return key;
|
90 | }
|
91 | }
|
92 |
|
93 |
|
94 | if (nativeEvent.type === 'keypress') {
|
95 | var charCode = getEventCharCode(nativeEvent);
|
96 |
|
97 |
|
98 |
|
99 | return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
|
100 | }
|
101 | if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
|
102 |
|
103 |
|
104 | return translateToKey[nativeEvent.keyCode] || 'Unidentified';
|
105 | }
|
106 | return '';
|
107 | }
|
108 |
|
109 | module.exports = getEventKey; |
\ | No newline at end of file |