| OLD | NEW |
| 1 (function() { | 1 (function() { |
| 2 'use strict'; | 2 'use strict'; |
| 3 | 3 |
| 4 /** | 4 /** |
| 5 * Chrome uses an older version of DOM Level 3 Keyboard Events | 5 * Chrome uses an older version of DOM Level 3 Keyboard Events |
| 6 * | 6 * |
| 7 * Most keys are labeled as text, but some are Unicode codepoints. | 7 * Most keys are labeled as text, but some are Unicode codepoints. |
| 8 * Values taken from: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-200712
21/keyset.html#KeySet-Set | 8 * Values taken from: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-200712
21/keyset.html#KeySet-Set |
| 9 */ | 9 */ |
| 10 var KEY_IDENTIFIER = { | 10 var KEY_IDENTIFIER = { |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 * Calculates the normalized key for a KeyboardEvent. | 156 * Calculates the normalized key for a KeyboardEvent. |
| 157 * @param {KeyboardEvent} keyEvent | 157 * @param {KeyboardEvent} keyEvent |
| 158 * @param {Boolean} [noSpecialChars] Set to true to limit keyEvent.key | 158 * @param {Boolean} [noSpecialChars] Set to true to limit keyEvent.key |
| 159 * transformation to alpha-numeric chars. This is useful with key | 159 * transformation to alpha-numeric chars. This is useful with key |
| 160 * combinations like shift + 2, which on FF for MacOS produces | 160 * combinations like shift + 2, which on FF for MacOS produces |
| 161 * keyEvent.key = @ | 161 * keyEvent.key = @ |
| 162 * To get 2 returned, set noSpecialChars = true | 162 * To get 2 returned, set noSpecialChars = true |
| 163 * To get @ returned, set noSpecialChars = false | 163 * To get @ returned, set noSpecialChars = false |
| 164 */ | 164 */ |
| 165 function normalizedKeyForEvent(keyEvent, noSpecialChars) { | 165 function normalizedKeyForEvent(keyEvent, noSpecialChars) { |
| 166 // Fall back from .key, to .keyIdentifier, to .keyCode, and then to | 166 // Fall back from .key, to .detail.key for artifical keyboard events, |
| 167 // .detail.key to support artificial keyboard events. | 167 // and then to deprecated .keyIdentifier and .keyCode. |
| 168 return transformKey(keyEvent.key, noSpecialChars) || | 168 if (keyEvent.key) { |
| 169 transformKeyIdentifier(keyEvent.keyIdentifier) || | 169 return transformKey(keyEvent.key, noSpecialChars); |
| 170 transformKeyCode(keyEvent.keyCode) || | 170 } |
| 171 transformKey(keyEvent.detail ? keyEvent.detail.key : keyEvent.detail, no
SpecialChars) || ''; | 171 if (keyEvent.detail && keyEvent.detail.key) { |
| 172 return transformKey(keyEvent.detail.key, noSpecialChars); |
| 173 } |
| 174 return transformKeyIdentifier(keyEvent.keyIdentifier) || |
| 175 transformKeyCode(keyEvent.keyCode) || ''; |
| 172 } | 176 } |
| 173 | 177 |
| 174 function keyComboMatchesEvent(keyCombo, event) { | 178 function keyComboMatchesEvent(keyCombo, event) { |
| 175 // For combos with modifiers we support only alpha-numeric keys | 179 // For combos with modifiers we support only alpha-numeric keys |
| 176 var keyEvent = normalizedKeyForEvent(event, keyCombo.hasModifiers); | 180 var keyEvent = normalizedKeyForEvent(event, keyCombo.hasModifiers); |
| 177 return keyEvent === keyCombo.key && | 181 return keyEvent === keyCombo.key && |
| 178 (!keyCombo.hasModifiers || ( | 182 (!keyCombo.hasModifiers || ( |
| 179 !!event.shiftKey === !!keyCombo.shiftKey && | 183 !!event.shiftKey === !!keyCombo.shiftKey && |
| 180 !!event.ctrlKey === !!keyCombo.ctrlKey && | 184 !!event.ctrlKey === !!keyCombo.ctrlKey && |
| 181 !!event.altKey === !!keyCombo.altKey && | 185 !!event.altKey === !!keyCombo.altKey && |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 detail: detail, | 473 detail: detail, |
| 470 cancelable: true | 474 cancelable: true |
| 471 }); | 475 }); |
| 472 this[handlerName].call(this, event); | 476 this[handlerName].call(this, event); |
| 473 if (event.defaultPrevented) { | 477 if (event.defaultPrevented) { |
| 474 keyboardEvent.preventDefault(); | 478 keyboardEvent.preventDefault(); |
| 475 } | 479 } |
| 476 } | 480 } |
| 477 }; | 481 }; |
| 478 })(); | 482 })(); |
| OLD | NEW |