2012-05-07 13:08:24 -07:00
|
|
|
/* termemu-keys.js: some key-handling code common to both drivers. */
|
|
|
|
|
|
|
|
|
|
/* ASCII values of keys 0-9. */
|
|
|
|
|
var numShifts = [41, 33, 64, 35, 36, 37, 94, 38, 42, 40];
|
|
|
|
|
|
|
|
|
|
var keyHexCodes = {
|
|
|
|
|
init: function () {
|
2012-06-21 09:43:52 -07:00
|
|
|
this[13] = ["0d", "0d"]; // return
|
|
|
|
|
this[32] = ["20", "20"]; // space
|
|
|
|
|
this[9] = ["09", "09"]; // tab
|
|
|
|
|
this[192] = ["60", "7e"]; // backtick, tilde
|
|
|
|
|
this[219] = ["5b", "7b"]; // open bracket, open brace
|
|
|
|
|
this[221] = ["5d", "7d"]; // close bracket, close brace
|
|
|
|
|
this[220] = ["5c", "7c"]; // backslash, pipe
|
|
|
|
|
this[59] = ["3b", "3a"]; // semicolon, colon
|
|
|
|
|
this[186] = ["3b", "3a"]; // semicolon, colon (Chrome)
|
|
|
|
|
this[222] = ["27", "22"]; // single quote, double quote
|
|
|
|
|
this[188] = ["2c", "3c"]; // comma, less than
|
|
|
|
|
this[190] = ["2e", "3e"]; // period, right angle
|
|
|
|
|
this[191] = ["2f", "3f"]; // slash, question mark
|
|
|
|
|
this[61] = ["3d", "2b"]; // equal, plus
|
|
|
|
|
this[187] = ["3d", "2b"]; // equal, plus (Chrome)
|
|
|
|
|
this[109] = ["2d", "5f"]; // subtract, underscore (maybe on numpad)
|
|
|
|
|
this[173] = ["2d", "5f"]; // subtract, underscore (maybe not on numpad)
|
|
|
|
|
this[189] = ["2d", "5f"]; // subtract, underscore (Chrome)
|
|
|
|
|
this[8] = ["08", "08"]; // backspace
|
|
|
|
|
this[46] = ["1b5b337e", "1b5b337e"]; // delete
|
|
|
|
|
this[27] = ["1b", "1b"]; // escape
|
|
|
|
|
this[33] = ["1b5b357e", "1b5b357e"]; // page up
|
|
|
|
|
this[34] = ["1b5b367e", "1b5b367e"]; // page down
|
2012-08-12 08:22:55 -07:00
|
|
|
this[12] = ["1b5b45", "1b5b45"]; // Clear key = numpad 5 (Firefox)
|
2012-05-07 13:08:24 -07:00
|
|
|
this.appCursor(false);
|
|
|
|
|
this.appKeypad(false);
|
|
|
|
|
},
|
|
|
|
|
/* Multi-char control sequences! Neat! */
|
|
|
|
|
appCursor: function (on) {
|
|
|
|
|
/* Aren't special keys vile? */
|
|
|
|
|
if (on) {
|
2012-06-21 09:43:52 -07:00
|
|
|
this[37] = ["1b4f44", "1b4f44"]; // left arror
|
|
|
|
|
this[39] = ["1b4f43", "1b4f43"]; // right arrow
|
|
|
|
|
this[38] = ["1b4f41", "1b4f41"]; // up arrow
|
|
|
|
|
this[40] = ["1b4f42", "1b4f42"]; // down arrow
|
|
|
|
|
this[35] = ["1b4f46", "1b4f46"]; // end
|
|
|
|
|
this[36] = ["1b4f48", "1b4f48"]; // home
|
2012-05-07 13:08:24 -07:00
|
|
|
}
|
|
|
|
|
else {
|
2012-06-21 09:43:52 -07:00
|
|
|
this[37] = ["1b5b44", "1b5b44"]; // left arror
|
|
|
|
|
this[39] = ["1b5b43", "1b5b43"]; // right arrow
|
|
|
|
|
this[38] = ["1b5b41", "1b5b41"]; // up arrow
|
|
|
|
|
this[40] = ["1b5b42", "1b5b42"]; // down arrow
|
|
|
|
|
this[35] = ["1b5b46", "1b5b46"]; // end
|
|
|
|
|
this[36] = ["1b5b48", "1b5b48"]; // home
|
2012-05-07 13:08:24 -07:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
appKeypad: function (on) {
|
|
|
|
|
/* In theory, these should produce either numerals or the k[a-c][1-3]
|
|
|
|
|
* sequences. Since we can't count on the terminfo description actually
|
|
|
|
|
* containing those sequences, pretend they're just arrow keys etc.
|
|
|
|
|
*/
|
2012-06-21 09:43:52 -07:00
|
|
|
this[97] = ["1b4f46", "1b4f46"];
|
|
|
|
|
this[98] = ["1b4f42", "1b4f42"];
|
|
|
|
|
this[99] = ["1b5b367e", "1b5b367e"];
|
|
|
|
|
this[100] = ["1b4f44", "1b4f44"];
|
|
|
|
|
this[101] = ["1b5b45", "1b5b45"];
|
|
|
|
|
this[102] = ["1b4f43", "1b4f43"];
|
|
|
|
|
this[103] = ["1b4f48", "1b4f48"];
|
|
|
|
|
this[104] = ["1b4f41", "1b4f41"];
|
|
|
|
|
this[105] = ["1b5b357e", "1b5b357e"];
|
2012-05-07 13:08:24 -07:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|