not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

60 lines
1.8 KiB

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;
});