Create getKeysym to lookup keysym from keyCode.
- Most of the keyboard is now functional.
This commit is contained in:
parent
71085485e7
commit
d9cbdc7d85
91
canvas.js
91
canvas.js
@ -141,7 +141,98 @@ rfbImage: function(x, y, width, height, arr) {
|
||||
}
|
||||
Canvas.ctx.putImageData(img, x, y);
|
||||
|
||||
},
|
||||
|
||||
/* Translate DOM key event to keysym value */
|
||||
getKeysym: function(e) {
|
||||
evt = e.event || window.event;
|
||||
var keysym;
|
||||
//debug(dirObj(e, null, 1));
|
||||
|
||||
/* Remap modifier and special keys */
|
||||
switch ( evt.keyCode ) {
|
||||
case 8 : keysym = 0xFF08; break; // BACKSPACE
|
||||
case 9 : keysym = 0xFF09; break; // TAB
|
||||
case 13 : keysym = 0xFF0D; break; // ENTER
|
||||
case 27 : keysym = 0xFF1B; break; // ESCAPE
|
||||
case 45 : keysym = 0xFF63; break; // INSERT
|
||||
case 46 : keysym = 0xFFFF; break; // DELETE
|
||||
case 36 : keysym = 0xFF50; break; // HOME
|
||||
case 35 : keysym = 0xFF57; break; // END
|
||||
case 33 : keysym = 0xFF55; break; // PAGE_UP
|
||||
case 34 : keysym = 0xFF56; break; // PAGE_DOWN
|
||||
case 37 : keysym = 0xFF51; break; // LEFT
|
||||
case 38 : keysym = 0xFF52; break; // UP
|
||||
case 39 : keysym = 0xFF53; break; // RIGHT
|
||||
case 40 : keysym = 0xFF54; break; // DOWN
|
||||
case 112 : keysym = 0xFFBE; break; // F1
|
||||
case 113 : keysym = 0xFFBF; break; // F2
|
||||
case 114 : keysym = 0xFFC0; break; // F3
|
||||
case 115 : keysym = 0xFFC1; break; // F4
|
||||
case 116 : keysym = 0xFFC2; break; // F5
|
||||
case 117 : keysym = 0xFFC3; break; // F6
|
||||
case 118 : keysym = 0xFFC4; break; // F7
|
||||
case 119 : keysym = 0xFFC5; break; // F8
|
||||
case 120 : keysym = 0xFFC6; break; // F9
|
||||
case 121 : keysym = 0xFFC7; break; // F10
|
||||
case 122 : keysym = 0xFFC8; break; // F11
|
||||
case 123 : keysym = 0xFFC9; break; // F12
|
||||
case 16 : keysym = 0xFFE1; break; // SHIFT
|
||||
case 17 : keysym = 0xFFE3; break; // CONTROL
|
||||
case 18 : keysym = 0xFFE7; break; // ALT
|
||||
default : keysym = evt.keyCode; break;
|
||||
}
|
||||
|
||||
/* Remap symbols */
|
||||
switch (keysym) {
|
||||
case 186 : keysym = 59; break; // ; (IE)
|
||||
case 187 : keysym = 61; break; // = (IE)
|
||||
case 188 : keysym = 44; break; // , (Mozilla, IE)
|
||||
//case 109 : // - (Mozilla)
|
||||
case 189 : keysym = 45; break; // - (IE)
|
||||
case 190 : keysym = 46; break; // . (Mozilla, IE)
|
||||
case 191 : keysym = 47; break; // / (Mozilla, IE)
|
||||
case 192 : keysym = 96; break; // ` (Mozilla, IE)
|
||||
case 219 : keysym = 91; break; // [ (Mozilla, IE)
|
||||
case 220 : keysym = 92; break; // \ (Mozilla, IE)
|
||||
case 221 : keysym = 93; break; // ] (Mozilla, IE)
|
||||
case 222 : keysym = 39; break; // ' (Mozilla, IE)
|
||||
}
|
||||
|
||||
/* Remap shifted and unshifted keys */
|
||||
if (!!evt.shiftKey) {
|
||||
switch (keysym) {
|
||||
case 48 : keysym = 41 ; break; // ) (shifted 0)
|
||||
case 49 : keysym = 33 ; break; // ! (shifted 1)
|
||||
case 50 : keysym = 64 ; break; // @ (shifted 2)
|
||||
case 51 : keysym = 35 ; break; // # (shifted 3)
|
||||
case 52 : keysym = 36 ; break; // $ (shifted 4)
|
||||
case 53 : keysym = 37 ; break; // % (shifted 5)
|
||||
case 54 : keysym = 94 ; break; // ^ (shifted 6)
|
||||
case 55 : keysym = 38 ; break; // & (shifted 7)
|
||||
case 56 : keysym = 42 ; break; // * (shifted 8)
|
||||
case 57 : keysym = 40 ; break; // ( (shifted 9)
|
||||
|
||||
case 59 : keysym = 58 ; break; // : (shifted `)
|
||||
case 61 : keysym = 43 ; break; // + (shifted ;)
|
||||
case 44 : keysym = 60 ; break; // < (shifted ,)
|
||||
case 45 : keysym = 95 ; break; // _ (shifted -)
|
||||
case 46 : keysym = 62 ; break; // > (shifted .)
|
||||
case 47 : keysym = 63 ; break; // ? (shifted /)
|
||||
case 96 : keysym = 126; break; // ~ (shifted `)
|
||||
case 91 : keysym = 123; break; // { (shifted [)
|
||||
case 92 : keysym = 124; break; // | (shifted \)
|
||||
case 93 : keysym = 125; break; // } (shifted ])
|
||||
case 39 : keysym = 34 ; break; // " (shifted ')
|
||||
}
|
||||
} else if ((keysym >= 65) && (keysym <=90)) {
|
||||
/* Remap unshifted A-Z */
|
||||
keysym += 32;
|
||||
}
|
||||
|
||||
return keysym;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
23
vnc.js
23
vnc.js
@ -57,6 +57,7 @@ Array.prototype.shiftBytes = function (len) {
|
||||
return this.splice(0, len);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Server message handlers
|
||||
*/
|
||||
@ -322,7 +323,7 @@ setEncodings: function () {
|
||||
},
|
||||
|
||||
fbUpdateRequest: function (incremental, x, y, xw, yw) {
|
||||
debug(">> fbUpdateRequest");
|
||||
//debug(">> fbUpdateRequest");
|
||||
var arr = [3]; // msg-type
|
||||
arr.push8(incremental);
|
||||
arr.push16(x);
|
||||
@ -330,18 +331,19 @@ fbUpdateRequest: function (incremental, x, y, xw, yw) {
|
||||
arr.push16(xw);
|
||||
arr.push16(yw);
|
||||
RFB.send_array(arr);
|
||||
debug("<< fbUpdateRequest");
|
||||
//debug("<< fbUpdateRequest");
|
||||
},
|
||||
|
||||
keyEvent: function (key, code, down) {
|
||||
debug(">> keyEvent: " + key + "(" + code + ") " + down);
|
||||
keyEvent: function (keysym, down) {
|
||||
debug(">> keyEvent, keysym: " + keysym + ", down: " + down);
|
||||
var arr = [4]; // msg-type
|
||||
arr.push8(down);
|
||||
arr.push16(0);
|
||||
arr.push32(code);
|
||||
arr.push32(keysym);
|
||||
//debug("keyEvent array: " + arr);
|
||||
RFB.send_array(arr);
|
||||
RFB.fbUpdateRequest(1, 0, 0, fb_width, fb_height);
|
||||
debug("<< keyEvent");
|
||||
//debug("<< keyEvent");
|
||||
},
|
||||
|
||||
pointerEvent: function () {
|
||||
@ -356,11 +358,12 @@ clientCutText: function () {
|
||||
*/
|
||||
|
||||
send_string: function (str) {
|
||||
//debug(">> send_string: " + str);
|
||||
ws.send(Base64.encode(str));
|
||||
},
|
||||
|
||||
send_array: function (arr) {
|
||||
debug("encoded array: " + Base64.encode_array(arr));
|
||||
//debug(">> send_array: " + Base64.encode_array(arr));
|
||||
ws.send(Base64.encode_array(arr));
|
||||
},
|
||||
|
||||
@ -389,13 +392,15 @@ poller: function () {
|
||||
},
|
||||
|
||||
keyDown: function (e) {
|
||||
//debug(">> keyDown: " + e.key + "(" + e.code + ")");
|
||||
e.stop();
|
||||
RFB.keyEvent(e.key, e.code, 1);
|
||||
RFB.keyEvent(Canvas.getKeysym(e), 1);
|
||||
},
|
||||
|
||||
keyUp: function (e) {
|
||||
//debug(">> keyUp: " + e.key + "(" + e.code + ")");
|
||||
e.stop();
|
||||
RFB.keyEvent(e.key, e.code, 0);
|
||||
RFB.keyEvent(Canvas.getKeysym(e), 0);
|
||||
},
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user