function keypress()

in webconsole-plugins/gogo/src/main/resources/res/ui/gogo.js [102:172]


   function keypress(ev) {
        // Translate to standard keycodes
        if (!ev)
            ev = window.event;
        var kc;
        if (ev.keyCode)
            kc = ev.keyCode;
        if (ev.which)
            kc = ev.which;
        if (ev.ctrlKey) {
            if (kc >= 0 && kc <= 32)
                kc = kc;
            else if (kc >= 65 && kc <= 90)
                kc -= 64;
            else if (kc >= 97 && kc <= 122)
                kc -= 96;
            else {
                switch (kc) {
                    case 54:  kc=30; break; // Ctrl-^
                    case 109: kc=31; break; // Ctrl-_
                    case 219: kc=27; break; // Ctrl-[
                    case 220: kc=28; break; // Ctrl-\
                    case 221: kc=29; break; // Ctrl-]
                    default: return true;
                }
            }
        } 

        var k = "";
        // Build character
        switch (kc) {
            case 126:   k = "~~"; break;
            case 63232: k = "~A"; break; // Up
            case 63233: k = "~B"; break; // Down
            case 63234: k = "~D"; break; // Left
            case 63235: k = "~C"; break; // Right
            case 63276: k = "~1"; break; // PgUp
            case 63277: k = "~2"; break; // PgDn
            case 63273: k = "~H"; break; // Home
            case 63275: k = "~F"; break; // End
            case 63302: k = "~3"; break; // Ins
            case 63272: k = "~4"; break; // Del
            case 63236: k = "~a"; break; // F1
            case 63237: k = "~b"; break; // F2
            case 63238: k = "~c"; break; // F3
            case 63239: k = "~d"; break; // F4
            case 63240: k = "~e"; break; // F5
            case 63241: k = "~f"; break; // F6
            case 63242: k = "~g"; break; // F7
            case 63243: k = "~h"; break; // F8
            case 63244: k = "~i"; break; // F9
            case 63245: k = "~j"; break; // F10
            case 63246: k = "~k"; break; // F11
            case 63247: k = "~l"; break; // F12
            default:    k = String.fromCharCode(kc); break;
        }

        var s = encodeURIComponent(k);
        
//        debug("ev.keyCode=" + ev.keyCode + ", " +
//              "ev.which=" + ev.which + ", ev.ctrlKey=" + ev.ctrlKey + ", " +
//              "kc=" + kc + ", k=" + k + ", s=" + s);

        queue(s);

        ev.cancelBubble = true;
        if (ev.stopPropagation) ev.stopPropagation();
        if (ev.preventDefault) ev.preventDefault();

        return true;
   }