|
|
- define(function () {
-
- 'use strict';
-
- var shortcut = {};
-
- shortcut._allShortcuts = [];
-
- shortcut.add = function (modifiersString, key, callback) {
- // Parse the modifiers. For example "Ctrl+Alt" will become
- // {'ctrlKey': true, 'altKey': true, 'shiftKey': false}
- var modifiersList = modifiersString.toLowerCase().split("+");
- var modifiers = {
- 'ctrlKey': modifiersList.indexOf('ctrl') >= 0,
- 'altKey': modifiersList.indexOf('alt') >= 0,
- 'shiftKey': modifiersList.indexOf('shift') >= 0
- };
-
- this._allShortcuts.push({
- 'modifiers': modifiers,
- 'key': key.toLowerCase(),
- 'callback': callback
- });
- };
-
- document.onkeypress = function (e) {
- e = e || window.event;
-
- var modifiers = {
- 'ctrlKey': e.ctrlKey,
- 'altKey': e.altKey,
- 'shiftKey': e.shiftKey
- };
-
- // Obtain the key
- var charCode;
- if (typeof e.which == "number") {
- charCode = e.which;
- } else {
- charCode = e.keyCode;
- }
- var key = String.fromCharCode(charCode).toLowerCase();
-
- // Search for a matching shortcut
- for (var i = 0; i < shortcut._allShortcuts.length; i += 1) {
- var currentShortcut = shortcut._allShortcuts[i];
-
- var match = currentShortcut.key == key &&
- currentShortcut.modifiers.ctrlKey == modifiers.ctrlKey &&
- currentShortcut.modifiers.altKey == modifiers.altKey &&
- currentShortcut.modifiers.shiftKey == modifiers.shiftKey;
- if (match) {
- currentShortcut.callback();
- return;
- }
- }
- };
-
- return shortcut;
- });
|