view termemu-keys.js @ 143:f1676e81c80a

sqlickrypt: add support for salted SHA-512 passwords, and fix NULL bug. Passwords will now be securely encrypted with random salt. Also avoid storing NULL in the database, because that makes dgamelaunch segfault.
author John "Elwin" Edwards
date Sun, 20 Oct 2013 21:19:13 -0700
parents 6cfaf6d202be
children
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[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
    this[12]  = ["1b5b45", "1b5b45"]; // Clear key = numpad 5 (Firefox)
    this.appCursor(false);
    this.appKeypad(false);
  },
  /* Multi-char control sequences!  Neat! */
  appCursor: function (on) {
    /* Aren't special keys vile? */
    if (on) {
      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
    }
    else {
      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
    }
  },
  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[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"];
    return;
  }
};