Your IP : 18.219.40.177
//hotkey module
App.HotKeys = function(window, $, EventMgr) {
'use strict';
var init = function() {
EventMgr.obind($(document), 'keydown', hotKeyHandler);
EventMgr.obind($(document), 'keyup', removeKeyUp);
EventMgr.obind($(window), 'focus', removeAllKeys);
},
hotkeys = {},
len = 0,
ZERO = 0,
ESC_KEY = 27,
CTRL_KEY = 17,
SHIFT_KEY = 16,
ENTER_KEY = 13,
SPACE = 32,
UP = 38,
DOWN = 40,
LEFT = 37,
RIGHT = 39,
M = 77,
A = 65,
F = 70,
X = 88,
Y = 89,
Z = 90,
B = 66,
C = 67,
V = 86,
N = 78,
S = 83,
D = 68,
G = 71,
H = 72,
J = 74,
K = 75,
L = 76,
Q = 81,
W = 87,
E = 69,
R = 82,
T = 84,
U = 85,
I = 73,
O = 79,
P = 80,
keyDic = {
77: 'M',
65: 'A',
70: 'F',
88: 'X',
89: 'Y',
90: 'Z',
66: 'B',
67: 'C',
86: 'V',
78: 'N',
83: 'S',
68: 'D',
71: 'G',
72: 'H',
74: 'J',
75: 'K',
76: 'L',
81: 'Q',
87: 'W',
69: 'E',
82: 'R',
84: 'T',
85: 'U',
73: 'I',
79: 'O',
80: 'P'
},
keys = {},
hotKeyHandler = function (e) {
e = e || window.event;
var codeKey = e.which || e.keyCode;
keys[codeKey] = true;
len ++;
if (e.ctrlKey) {
keys[CTRL_KEY] = true;
}
if (e.shiftKey) {
keys[SHIFT_KEY] = true;
}
//esc
if (codeKey === ESC_KEY) {
EventMgr.trigger('escKeyUp', { e: e });
e.preventDefault();
//enter
} else if (codeKey === ENTER_KEY) {
EventMgr.trigger('enterKeyUp', { e: e });
//CTRL + SHIFT + M
} else if ((keys[CTRL_KEY]) && (keys[SHIFT_KEY]) && keys[M]) {
EventMgr.trigger('comboCtrlShiftMKeyUp', { codeKey: codeKey });
e.preventDefault();
//CTRL + SHIFT + A
} else if ((keys[CTRL_KEY]) && (keys[SHIFT_KEY]) && keys[A]) {
EventMgr.trigger('comboCtrlShiftAKeyUp', { codeKey: codeKey });
e.preventDefault();
//CTRL + SHIFT + F
} else if ((keys[CTRL_KEY]) && (keys[SHIFT_KEY]) && keys[F]) {
EventMgr.trigger('comboCtrlShiftFKeyUp', { codeKey: codeKey });
e.preventDefault();
//CTRL + SHIFT + Z
} else if ((keys[CTRL_KEY]) && (keys[SHIFT_KEY]) && keys[Z]) {
EventMgr.trigger('comboCtrlShiftZKeyUp', { codeKey: codeKey });
e.preventDefault();
//CTRL + SHIFT + X
} else if ((keys[CTRL_KEY]) && (keys[SHIFT_KEY]) && keys[X]) {
EventMgr.trigger('comboCtrlShiftXKeyUp', { codeKey: codeKey });
e.preventDefault();
//SPACE
} else if (keys[SPACE]) {
EventMgr.trigger('spaceKeyUp');
window.scrollTo(0, 0);
} else if (keys[UP]) {
EventMgr.trigger('upKeyUp', { codeKey: codeKey, shiftKey: keys[SHIFT_KEY], ctrl: keys[CTRL_KEY] });
} else if (keys[DOWN]) {
EventMgr.trigger('downKeyUp', { codeKey: codeKey, shiftKey: keys[SHIFT_KEY], ctrl: keys[CTRL_KEY] });
} else if (keys[LEFT]) {
EventMgr.trigger('leftKeyUp', { codeKey: codeKey, shift: keys[SHIFT_KEY], ctrl: keys[CTRL_KEY] });
} else if (keys[RIGHT]) {
EventMgr.trigger('rightKeyUp', { codeKey: codeKey, shift: keys[SHIFT_KEY], ctrl: keys[CTRL_KEY] });
//check for hotkey in toolbtn
} else {
var key = null;
if (keyDic[codeKey]) {
key = keyDic[codeKey];
} else {
for (var keyVar in keys) {
if (keyDic[keyVar]) {
key = keyDic[keyVar];
break;
}
}
}
EventMgr.trigger('otherKeyUp', { keys: $.extend({}, keys), key: key, len: len, shift: keys[SHIFT_KEY], ctrl: keys[CTRL_KEY] });
}
codeKey = null;
},
removeKeyUp = function(e) {
var codeKey = e.which || e.keyCode;
if (keys[ZERO]) {
delete keys[ZERO];
len --;
}
if (keys[codeKey]) {
delete keys[codeKey];
len --;
}
if (e.ctrlKey) {
delete keys[CTRL_KEY];
len --;
}
},
removeAllKeys = function(e) {
keys = {};
len = 0;
};
return {
init: init
};
}(window, $, EventMgr);