diff --git a/lib/client/key.js b/lib/client/key.js index 32900e5d..06ccddbc 100644 --- a/lib/client/key.js +++ b/lib/client/key.js @@ -63,6 +63,8 @@ var CloudCmd, Util, DOM; F9 : 120, F10 : 121, + EQUAL : 187, + HYPHEN : 189, DOT : 190, SLASH : 191, TRA : 192, /* Typewritten Reverse Apostrophe (`) */ @@ -98,6 +100,7 @@ var CloudCmd, Util, DOM; var keyCode = event.keyCode, alt = event.altKey, ctrl = event.ctrlKey, + shift = event.shiftKey, meta = event.metaKey, keyIdentifier = event.keyIdentifier, isBetween = keyCode >= KEY.ZERO && keyCode <= KEY.Z, @@ -109,11 +112,13 @@ var CloudCmd, Util, DOM; else char = event.key; - isSymbol = ~['.', '_'].indexOf(char); + isSymbol = ~['.', '_', '-', '+', '='].indexOf(char); - if (!isSymbol && keyCode === KEY.DOT) { - char = '.'; - isSymbol = true; + if (!isSymbol) { + isSymbol = getSymbol(shift, keyCode); + + if (isSymbol) + char = isSymbol; } /* если клавиши можно обрабатывать*/ @@ -126,6 +131,26 @@ var CloudCmd, Util, DOM; } } + function getSymbol(shift, keyCode) { + var char; + + switch (keyCode) { + case KEY.DOT: + char = '.'; + break; + + case KEY.HYPHEN: + char = shift ? '_' : '-'; + break; + + case KEY.EQUAL: + char = shift ? '+' : '='; + break; + } + + return char; + } + function fromCharCode(keyIdentifier) { var code = keyIdentifier.substring(2), hex = parseInt(code, 16),