diff --git a/index-rlg.html b/index-rlg.html
index f5567c0..9283acc 100644
--- a/index-rlg.html
+++ b/index-rlg.html
@@ -3,6 +3,7 @@
WebTTY
+
diff --git a/index-sh.html b/index-sh.html
index 39f4707..16b1342 100644
--- a/index-sh.html
+++ b/index-sh.html
@@ -3,6 +3,7 @@
WebTTY
+
diff --git a/rlgterm.js b/rlgterm.js
index 9bb414b..c981c51 100644
--- a/rlgterm.js
+++ b/rlgterm.js
@@ -181,69 +181,6 @@ function sendback(str) {
return;
}
-/* ASCII values of keys 0-9. */
-var numShifts = [41, 33, 64, 35, 36, 37, 94, 38, 42, 40];
-
-var keyHexCodes = {
- init: function () {
- this[KeyboardEvent.DOM_VK_RETURN] = ["0d", "0d"];
- this[KeyboardEvent.DOM_VK_SPACE] = ["20", "20"];
- this[KeyboardEvent.DOM_VK_TAB] = ["09", "09"];
- this[KeyboardEvent.DOM_VK_BACK_QUOTE] = ["60", "7e"];
- this[KeyboardEvent.DOM_VK_OPEN_BRACKET] = ["5b", "7b"];
- this[KeyboardEvent.DOM_VK_CLOSE_BRACKET] = ["5d", "7d"];
- this[KeyboardEvent.DOM_VK_BACK_SLASH] = ["5c", "7c"];
- this[KeyboardEvent.DOM_VK_SEMICOLON] = ["3b", "3a"];
- this[KeyboardEvent.DOM_VK_QUOTE] = ["27", "22"];
- this[KeyboardEvent.DOM_VK_COMMA] = ["2c", "3c"];
- this[KeyboardEvent.DOM_VK_PERIOD] = ["2e", "3e"];
- this[KeyboardEvent.DOM_VK_SLASH] = ["2f", "3f"];
- this[KeyboardEvent.DOM_VK_EQUALS] = ["3d", "2b"];
- this[KeyboardEvent.DOM_VK_SUBTRACT] = ["2d", "5f"];
- this[KeyboardEvent.DOM_VK_BACK_SPACE] = ["08", "08"];
- this[KeyboardEvent.DOM_VK_ESCAPE] = ["1b", "1b"];
- /* Multi-char control sequences! Neat! */
- this[KeyboardEvent.DOM_VK_PAGE_UP] = ["1b5b357e", "1b5b357e"];
- this[KeyboardEvent.DOM_VK_PAGE_DOWN] = ["1b5b367e", "1b5b367e"];
- this.appCursor(false);
- this.appKeypad(false);
- },
- appCursor: function (on) {
- if (on) {
- this[KeyboardEvent.DOM_VK_LEFT] = ["1b4f44", "1b4f44"];
- this[KeyboardEvent.DOM_VK_RIGHT] = ["1b4f43", "1b4f43"];
- this[KeyboardEvent.DOM_VK_UP] = ["1b4f41", "1b4f41"];
- this[KeyboardEvent.DOM_VK_DOWN] = ["1b4f42", "1b4f42"];
- this[KeyboardEvent.DOM_VK_END] = ["1b4f46", "1b4f46"];
- this[KeyboardEvent.DOM_VK_HOME] = ["1b4f48", "1b4f48"];
- }
- else {
- this[KeyboardEvent.DOM_VK_LEFT] = ["1b5b44", "1b5b44"];
- this[KeyboardEvent.DOM_VK_RIGHT] = ["1b5b43", "1b5b43"];
- this[KeyboardEvent.DOM_VK_UP] = ["1b5b41", "1b5b41"];
- this[KeyboardEvent.DOM_VK_DOWN] = ["1b5b42", "1b5b42"];
- this[KeyboardEvent.DOM_VK_END] = ["1b5b46", "1b5b46"];
- this[KeyboardEvent.DOM_VK_HOME] = ["1b5b48", "1b5b48"];
- }
- },
- 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.
- */
- this[KeyboardEvent.DOM_VK_NUMPAD1] = ["1b4f46", "1b4f46"];
- this[KeyboardEvent.DOM_VK_NUMPAD2] = ["1b4f42", "1b4f42"];
- this[KeyboardEvent.DOM_VK_NUMPAD3] = ["1b5b367e", "1b5b367e"];
- this[KeyboardEvent.DOM_VK_NUMPAD4] = ["1b4f44", "1b4f44"];
- this[KeyboardEvent.DOM_VK_NUMPAD5] = ["1b5b45", "1b5b45"];
- this[KeyboardEvent.DOM_VK_NUMPAD6] = ["1b4f43", "1b4f43"];
- this[KeyboardEvent.DOM_VK_NUMPAD7] = ["1b4f48", "1b4f48"];
- this[KeyboardEvent.DOM_VK_NUMPAD8] = ["1b4f41", "1b4f41"];
- this[KeyboardEvent.DOM_VK_NUMPAD9] = ["1b5b357e", "1b5b357e"];
- return;
- }
-};
-
function sendkey(ev) {
if (termemu.sessid == null)
return;
diff --git a/shterm.js b/shterm.js
index cff4a8e..12872bf 100644
--- a/shterm.js
+++ b/shterm.js
@@ -174,71 +174,6 @@ function sendback(str) {
return;
}
-/* ASCII values of keys 0-9. */
-var numShifts = [41, 33, 64, 35, 36, 37, 94, 38, 42, 40];
-
-var keyHexCodes = {
- init: function () {
- this[KeyboardEvent.DOM_VK_RETURN] = ["0d", "0d"];
- this[KeyboardEvent.DOM_VK_SPACE] = ["20", "20"];
- this[KeyboardEvent.DOM_VK_TAB] = ["09", "09"];
- this[KeyboardEvent.DOM_VK_BACK_QUOTE] = ["60", "7e"];
- this[KeyboardEvent.DOM_VK_OPEN_BRACKET] = ["5b", "7b"];
- this[KeyboardEvent.DOM_VK_CLOSE_BRACKET] = ["5d", "7d"];
- this[KeyboardEvent.DOM_VK_BACK_SLASH] = ["5c", "7c"];
- this[KeyboardEvent.DOM_VK_SEMICOLON] = ["3b", "3a"];
- this[KeyboardEvent.DOM_VK_QUOTE] = ["27", "22"];
- this[KeyboardEvent.DOM_VK_COMMA] = ["2c", "3c"];
- this[KeyboardEvent.DOM_VK_PERIOD] = ["2e", "3e"];
- this[KeyboardEvent.DOM_VK_SLASH] = ["2f", "3f"];
- this[KeyboardEvent.DOM_VK_EQUALS] = ["3d", "2b"];
- this[KeyboardEvent.DOM_VK_SUBTRACT] = ["2d", "5f"];
- this[KeyboardEvent.DOM_VK_BACK_SPACE] = ["08", "08"];
- this[KeyboardEvent.DOM_VK_DELETE] = ["1b5b337e", "1b5b337e"];
- this[KeyboardEvent.DOM_VK_ESCAPE] = ["1b", "1b"];
- this[KeyboardEvent.DOM_VK_PAGE_UP] = ["1b5b357e", "1b5b357e"];
- this[KeyboardEvent.DOM_VK_PAGE_DOWN] = ["1b5b367e", "1b5b367e"];
- this.appCursor(false);
- this.appKeypad(false);
- },
- /* Multi-char control sequences! Neat! */
- appCursor: function (on) {
- /* Aren't special keys vile? */
- if (on) {
- this[KeyboardEvent.DOM_VK_LEFT] = ["1b4f44", "1b4f44"];
- this[KeyboardEvent.DOM_VK_RIGHT] = ["1b4f43", "1b4f43"];
- this[KeyboardEvent.DOM_VK_UP] = ["1b4f41", "1b4f41"];
- this[KeyboardEvent.DOM_VK_DOWN] = ["1b4f42", "1b4f42"];
- this[KeyboardEvent.DOM_VK_END] = ["1b4f46", "1b4f46"];
- this[KeyboardEvent.DOM_VK_HOME] = ["1b4f48", "1b4f48"];
- }
- else {
- this[KeyboardEvent.DOM_VK_LEFT] = ["1b5b44", "1b5b44"];
- this[KeyboardEvent.DOM_VK_RIGHT] = ["1b5b43", "1b5b43"];
- this[KeyboardEvent.DOM_VK_UP] = ["1b5b41", "1b5b41"];
- this[KeyboardEvent.DOM_VK_DOWN] = ["1b5b42", "1b5b42"];
- this[KeyboardEvent.DOM_VK_END] = ["1b5b46", "1b5b46"];
- this[KeyboardEvent.DOM_VK_HOME] = ["1b5b48", "1b5b48"];
- }
- },
- 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.
- */
- this[KeyboardEvent.DOM_VK_NUMPAD1] = ["1b4f46", "1b4f46"];
- this[KeyboardEvent.DOM_VK_NUMPAD2] = ["1b4f42", "1b4f42"];
- this[KeyboardEvent.DOM_VK_NUMPAD3] = ["1b5b367e", "1b5b367e"];
- this[KeyboardEvent.DOM_VK_NUMPAD4] = ["1b4f44", "1b4f44"];
- this[KeyboardEvent.DOM_VK_NUMPAD5] = ["1b5b45", "1b5b45"];
- this[KeyboardEvent.DOM_VK_NUMPAD6] = ["1b4f43", "1b4f43"];
- this[KeyboardEvent.DOM_VK_NUMPAD7] = ["1b4f48", "1b4f48"];
- this[KeyboardEvent.DOM_VK_NUMPAD8] = ["1b4f41", "1b4f41"];
- this[KeyboardEvent.DOM_VK_NUMPAD9] = ["1b5b357e", "1b5b357e"];
- return;
- }
-};
-
function sendkey(ev) {
var keynum = ev.keyCode;
var code;
diff --git a/termemu-keys.js b/termemu-keys.js
new file mode 100644
index 0000000..7d97da8
--- /dev/null
+++ b/termemu-keys.js
@@ -0,0 +1,67 @@
+/* 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 () {
+ this[KeyboardEvent.DOM_VK_RETURN] = ["0d", "0d"];
+ this[KeyboardEvent.DOM_VK_SPACE] = ["20", "20"];
+ this[KeyboardEvent.DOM_VK_TAB] = ["09", "09"];
+ this[KeyboardEvent.DOM_VK_BACK_QUOTE] = ["60", "7e"];
+ this[KeyboardEvent.DOM_VK_OPEN_BRACKET] = ["5b", "7b"];
+ this[KeyboardEvent.DOM_VK_CLOSE_BRACKET] = ["5d", "7d"];
+ this[KeyboardEvent.DOM_VK_BACK_SLASH] = ["5c", "7c"];
+ this[KeyboardEvent.DOM_VK_SEMICOLON] = ["3b", "3a"];
+ this[KeyboardEvent.DOM_VK_QUOTE] = ["27", "22"];
+ this[KeyboardEvent.DOM_VK_COMMA] = ["2c", "3c"];
+ this[KeyboardEvent.DOM_VK_PERIOD] = ["2e", "3e"];
+ this[KeyboardEvent.DOM_VK_SLASH] = ["2f", "3f"];
+ this[KeyboardEvent.DOM_VK_EQUALS] = ["3d", "2b"];
+ this[KeyboardEvent.DOM_VK_SUBTRACT] = ["2d", "5f"];
+ this[KeyboardEvent.DOM_VK_BACK_SPACE] = ["08", "08"];
+ this[KeyboardEvent.DOM_VK_DELETE] = ["1b5b337e", "1b5b337e"];
+ this[KeyboardEvent.DOM_VK_ESCAPE] = ["1b", "1b"];
+ this[KeyboardEvent.DOM_VK_PAGE_UP] = ["1b5b357e", "1b5b357e"];
+ this[KeyboardEvent.DOM_VK_PAGE_DOWN] = ["1b5b367e", "1b5b367e"];
+ this.appCursor(false);
+ this.appKeypad(false);
+ },
+ /* Multi-char control sequences! Neat! */
+ appCursor: function (on) {
+ /* Aren't special keys vile? */
+ if (on) {
+ this[KeyboardEvent.DOM_VK_LEFT] = ["1b4f44", "1b4f44"];
+ this[KeyboardEvent.DOM_VK_RIGHT] = ["1b4f43", "1b4f43"];
+ this[KeyboardEvent.DOM_VK_UP] = ["1b4f41", "1b4f41"];
+ this[KeyboardEvent.DOM_VK_DOWN] = ["1b4f42", "1b4f42"];
+ this[KeyboardEvent.DOM_VK_END] = ["1b4f46", "1b4f46"];
+ this[KeyboardEvent.DOM_VK_HOME] = ["1b4f48", "1b4f48"];
+ }
+ else {
+ this[KeyboardEvent.DOM_VK_LEFT] = ["1b5b44", "1b5b44"];
+ this[KeyboardEvent.DOM_VK_RIGHT] = ["1b5b43", "1b5b43"];
+ this[KeyboardEvent.DOM_VK_UP] = ["1b5b41", "1b5b41"];
+ this[KeyboardEvent.DOM_VK_DOWN] = ["1b5b42", "1b5b42"];
+ this[KeyboardEvent.DOM_VK_END] = ["1b5b46", "1b5b46"];
+ this[KeyboardEvent.DOM_VK_HOME] = ["1b5b48", "1b5b48"];
+ }
+ },
+ 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.
+ */
+ this[KeyboardEvent.DOM_VK_NUMPAD1] = ["1b4f46", "1b4f46"];
+ this[KeyboardEvent.DOM_VK_NUMPAD2] = ["1b4f42", "1b4f42"];
+ this[KeyboardEvent.DOM_VK_NUMPAD3] = ["1b5b367e", "1b5b367e"];
+ this[KeyboardEvent.DOM_VK_NUMPAD4] = ["1b4f44", "1b4f44"];
+ this[KeyboardEvent.DOM_VK_NUMPAD5] = ["1b5b45", "1b5b45"];
+ this[KeyboardEvent.DOM_VK_NUMPAD6] = ["1b4f43", "1b4f43"];
+ this[KeyboardEvent.DOM_VK_NUMPAD7] = ["1b4f48", "1b4f48"];
+ this[KeyboardEvent.DOM_VK_NUMPAD8] = ["1b4f41", "1b4f41"];
+ this[KeyboardEvent.DOM_VK_NUMPAD9] = ["1b5b357e", "1b5b357e"];
+ return;
+ }
+};
+