in webconsole/gogo/src/main/resources/res/ui/gogo.js [100:197]
function keypress(ev, fromkeydown) {
// Translate to standard keycodes
if (!ev)
ev = window.event;
var kc;
if (ev.keyCode)
kc = ev.keyCode;
if (!fromkeydown && 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;
}
}
} else if (fromkeydown) {
switch(kc) {
case 8: break; // Backspace
case 9: break; // Tab
case 27: break; // ESC
case 33: kc = 63276; break; // PgUp
case 34: kc = 63277; break; // PgDn
case 35: kc = 63275; break; // End
case 36: kc = 63273; break; // Home
case 37: kc = 63234; break; // Left
case 38: kc = 63232; break; // Up
case 39: kc = 63235; break; // Right
case 40: kc = 63233; break; // Down
case 45: kc = 63302; break; // Ins
case 46: kc = 63272; break; // Del
case 112: kc = 63236; break; // F1
case 113: kc = 63237; break; // F2
case 114: kc = 63238; break; // F3
case 115: kc = 63239; break; // F4
case 116: kc = 63240; break; // F5
case 117: kc = 63241; break; // F6
case 118: kc = 63242; break; // F7
case 119: kc = 63243; break; // F8
case 120: kc = 63244; break; // F9
case 121: kc = 63245; break; // F10
case 122: kc = 63246; break; // F11
case 123: kc = 63247; break; // F12
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;
}
// debug("fromkeydown=" + fromkeydown + ", ev.keyCode=" + ev.keyCode + ", " +
// "ev.which=" + ev.which + ", ev.ctrlKey=" + ev.ctrlKey + ", " +
// "kc=" + kc + ", k=" + k);
queue(encodeURIComponent(k));
ev.cancelBubble = true;
if (ev.stopPropagation) ev.stopPropagation();
if (ev.preventDefault) ev.preventDefault();
return true;
}