143 lines
5.9 KiB
JavaScript
143 lines
5.9 KiB
JavaScript
|
|
module.exports = function(locale, platform, userAgent) {
|
|
|
|
// general
|
|
locale.bindKeyCode(3, ['cancel']);
|
|
locale.bindKeyCode(8, ['backspace']);
|
|
locale.bindKeyCode(9, ['tab']);
|
|
locale.bindKeyCode(12, ['clear']);
|
|
locale.bindKeyCode(13, ['enter']);
|
|
locale.bindKeyCode(16, ['shift']);
|
|
locale.bindKeyCode(17, ['ctrl']);
|
|
locale.bindKeyCode(18, ['alt', 'menu']);
|
|
locale.bindKeyCode(19, ['pause', 'break']);
|
|
locale.bindKeyCode(20, ['capslock']);
|
|
locale.bindKeyCode(27, ['escape', 'esc']);
|
|
locale.bindKeyCode(32, ['space', 'spacebar']);
|
|
locale.bindKeyCode(33, ['pageup']);
|
|
locale.bindKeyCode(34, ['pagedown']);
|
|
locale.bindKeyCode(35, ['end']);
|
|
locale.bindKeyCode(36, ['home']);
|
|
locale.bindKeyCode(37, ['left']);
|
|
locale.bindKeyCode(38, ['up']);
|
|
locale.bindKeyCode(39, ['right']);
|
|
locale.bindKeyCode(40, ['down']);
|
|
locale.bindKeyCode(41, ['select']);
|
|
locale.bindKeyCode(42, ['printscreen']);
|
|
locale.bindKeyCode(43, ['execute']);
|
|
locale.bindKeyCode(44, ['snapshot']);
|
|
locale.bindKeyCode(45, ['insert', 'ins']);
|
|
locale.bindKeyCode(46, ['delete', 'del']);
|
|
locale.bindKeyCode(47, ['help']);
|
|
locale.bindKeyCode(145, ['scrolllock', 'scroll']);
|
|
locale.bindKeyCode(187, ['equal', 'equalsign', '=']);
|
|
locale.bindKeyCode(188, ['comma', ',']);
|
|
locale.bindKeyCode(190, ['period', '.']);
|
|
locale.bindKeyCode(191, ['slash', 'forwardslash', '/']);
|
|
locale.bindKeyCode(192, ['graveaccent', '`']);
|
|
locale.bindKeyCode(219, ['openbracket', '[']);
|
|
locale.bindKeyCode(220, ['backslash', '\\']);
|
|
locale.bindKeyCode(221, ['closebracket', ']']);
|
|
locale.bindKeyCode(222, ['apostrophe', '\'']);
|
|
|
|
// 0-9
|
|
locale.bindKeyCode(48, ['zero', '0']);
|
|
locale.bindKeyCode(49, ['one', '1']);
|
|
locale.bindKeyCode(50, ['two', '2']);
|
|
locale.bindKeyCode(51, ['three', '3']);
|
|
locale.bindKeyCode(52, ['four', '4']);
|
|
locale.bindKeyCode(53, ['five', '5']);
|
|
locale.bindKeyCode(54, ['six', '6']);
|
|
locale.bindKeyCode(55, ['seven', '7']);
|
|
locale.bindKeyCode(56, ['eight', '8']);
|
|
locale.bindKeyCode(57, ['nine', '9']);
|
|
|
|
// numpad
|
|
locale.bindKeyCode(96, ['numzero', 'num0']);
|
|
locale.bindKeyCode(97, ['numone', 'num1']);
|
|
locale.bindKeyCode(98, ['numtwo', 'num2']);
|
|
locale.bindKeyCode(99, ['numthree', 'num3']);
|
|
locale.bindKeyCode(100, ['numfour', 'num4']);
|
|
locale.bindKeyCode(101, ['numfive', 'num5']);
|
|
locale.bindKeyCode(102, ['numsix', 'num6']);
|
|
locale.bindKeyCode(103, ['numseven', 'num7']);
|
|
locale.bindKeyCode(104, ['numeight', 'num8']);
|
|
locale.bindKeyCode(105, ['numnine', 'num9']);
|
|
locale.bindKeyCode(106, ['nummultiply', 'num*']);
|
|
locale.bindKeyCode(107, ['numadd', 'num+']);
|
|
locale.bindKeyCode(108, ['numenter']);
|
|
locale.bindKeyCode(109, ['numsubtract', 'num-']);
|
|
locale.bindKeyCode(110, ['numdecimal', 'num.']);
|
|
locale.bindKeyCode(111, ['numdivide', 'num/']);
|
|
locale.bindKeyCode(144, ['numlock', 'num']);
|
|
|
|
// function keys
|
|
locale.bindKeyCode(112, ['f1']);
|
|
locale.bindKeyCode(113, ['f2']);
|
|
locale.bindKeyCode(114, ['f3']);
|
|
locale.bindKeyCode(115, ['f4']);
|
|
locale.bindKeyCode(116, ['f5']);
|
|
locale.bindKeyCode(117, ['f6']);
|
|
locale.bindKeyCode(118, ['f7']);
|
|
locale.bindKeyCode(119, ['f8']);
|
|
locale.bindKeyCode(120, ['f9']);
|
|
locale.bindKeyCode(121, ['f10']);
|
|
locale.bindKeyCode(122, ['f11']);
|
|
locale.bindKeyCode(123, ['f12']);
|
|
|
|
// secondary key symbols
|
|
locale.bindMacro('shift + `', ['tilde', '~']);
|
|
locale.bindMacro('shift + 1', ['exclamation', 'exclamationpoint', '!']);
|
|
locale.bindMacro('shift + 2', ['at', '@']);
|
|
locale.bindMacro('shift + 3', ['number', '#']);
|
|
locale.bindMacro('shift + 4', ['dollar', 'dollars', 'dollarsign', '$']);
|
|
locale.bindMacro('shift + 5', ['percent', '%']);
|
|
locale.bindMacro('shift + 6', ['caret', '^']);
|
|
locale.bindMacro('shift + 7', ['ampersand', 'and', '&']);
|
|
locale.bindMacro('shift + 8', ['asterisk', '*']);
|
|
locale.bindMacro('shift + 9', ['openparen', '(']);
|
|
locale.bindMacro('shift + 0', ['closeparen', ')']);
|
|
locale.bindMacro('shift + -', ['underscore', '_']);
|
|
locale.bindMacro('shift + =', ['plus', '+']);
|
|
locale.bindMacro('shift + [', ['opencurlybrace', 'opencurlybracket', '{']);
|
|
locale.bindMacro('shift + ]', ['closecurlybrace', 'closecurlybracket', '}']);
|
|
locale.bindMacro('shift + \\', ['verticalbar', '|']);
|
|
locale.bindMacro('shift + ;', ['colon', ':']);
|
|
locale.bindMacro('shift + \'', ['quotationmark', '\'']);
|
|
locale.bindMacro('shift + !,', ['openanglebracket', '<']);
|
|
locale.bindMacro('shift + .', ['closeanglebracket', '>']);
|
|
locale.bindMacro('shift + /', ['questionmark', '?']);
|
|
|
|
//a-z and A-Z
|
|
for (var keyCode = 65; keyCode <= 90; keyCode += 1) {
|
|
var keyName = String.fromCharCode(keyCode + 32);
|
|
var capitalKeyName = String.fromCharCode(keyCode);
|
|
locale.bindKeyCode(keyCode, keyName);
|
|
locale.bindMacro('shift + ' + keyName, capitalKeyName);
|
|
locale.bindMacro('capslock + ' + keyName, capitalKeyName);
|
|
}
|
|
|
|
// browser caveats
|
|
var semicolonKeyCode = userAgent.match('Firefox') ? 59 : 186;
|
|
var dashKeyCode = userAgent.match('Firefox') ? 173 : 189;
|
|
var leftCommandKeyCode;
|
|
var rightCommandKeyCode;
|
|
if (platform.match('Mac') && (userAgent.match('Safari') || userAgent.match('Chrome'))) {
|
|
leftCommandKeyCode = 91;
|
|
rightCommandKeyCode = 93;
|
|
} else if(platform.match('Mac') && userAgent.match('Opera')) {
|
|
leftCommandKeyCode = 17;
|
|
rightCommandKeyCode = 17;
|
|
} else if(platform.match('Mac') && userAgent.match('Firefox')) {
|
|
leftCommandKeyCode = 224;
|
|
rightCommandKeyCode = 224;
|
|
}
|
|
locale.bindKeyCode(semicolonKeyCode, ['semicolon', ';']);
|
|
locale.bindKeyCode(dashKeyCode, ['dash', '-']);
|
|
locale.bindKeyCode(leftCommandKeyCode, ['command', 'windows', 'win', 'super', 'leftcommand', 'leftwindows', 'leftwin', 'leftsuper']);
|
|
locale.bindKeyCode(rightCommandKeyCode, ['command', 'windows', 'win', 'super', 'rightcommand', 'rightwindows', 'rightwin', 'rightsuper']);
|
|
|
|
// kill keys
|
|
locale.setKillKey('command');
|
|
};
|