Mercurial > hg > rlgwebd
view termemu-keys.js @ 39:e8ac0e3d2614
RLG-Web: separate logging in and starting a game.
The user now logs in with a username and password, receiving a token
which is then used for any actions requiring authentication. Starting
a game is one such action. Games use a different set of id keys.
This allows users to supply their passwords once and then play any
number of successive games. Also, newly registered users do not need
to supply their passwords again.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Thu, 07 Jun 2012 15:43:06 -0700 |
parents | 21738794755e |
children | d7eb63cd7a16 |
line wrap: on
line source
/* 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; } };