CLOUDSTACK-7373: Incorrect Japanese keyboard mapping with CentOS CLI guestOS on VMware.

Fixed the jp keyboard issues for VMs deployed with keyboard=jp param.
This commit is contained in:
Sanjay Tripathi 2014-09-15 16:02:17 +05:30
parent 3a3e5cbbbb
commit 4796cceb34
2 changed files with 9 additions and 66 deletions

View File

@ -275,76 +275,15 @@ var keyboardTables = [
{keycode: 244, entry : 0x7e, browser: "IE"},
//Caps Lock = 240
{keycode: 240, entry : 0xffe5},
/*
{keycode: JS_KEY_MULTIPLY, entry : [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0 },
{type: KEY_DOWN, code: X11_KEY_ASTERISK, modifiers: 0 },
{type: KEY_UP, code: X11_KEY_ASTERISK, modifiers: 0 },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0 }
]},
{keycode: JS_KEY_ADD, entry : false}
*/
//[186 / 58 = "~^"]
{keycode: 186, entry : 0x22, browser: "IE"},
{keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"},
],
keyPress: [
// 34 : " " "
{keycode: 34, entry: [{type: KEY_DOWN, code: 0x22, modifiers: 64, shift: true }]},
{keycode: 42, entry: 0xffaa },
// 39 : " ' " (shift+7)
{keycode: 39, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x22, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x22, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x22, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x22, modifiers: 0, shift: true },
]}, //58 : " : "
{keycode: 58, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x3a, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x3a, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x3a, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x3a, modifiers: 0, shift: true },
]},
// 94 : "^"
{keycode: 94, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x36, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x36, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x36, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x36, modifiers: 0, shift: true },
]},
// 64 : "@"
{keycode: 64, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x32, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x32, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x32, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x32, modifiers: 0, shift: true },
]},
// 96 : "'"
{keycode: 96, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x7e, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x7e, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x7e, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x7e, modifiers: 0, shift: true },
]},
// 61 : "="
{keycode: 61, entry: [
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x3d, modifiers: 0, shift: false },
{type: KEY_UP, code: 0x3d, modifiers: 0, shift: false },
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: KEY_DOWN, code: 0x3d, modifiers: 0, shift: true },
{type: KEY_UP, code: 0x3d, modifiers: 0, shift: true },
]},
// These mappings are for japanese guestOS. it is recommended that admin should deploy
// the VM with "keyboard=jp" paramenter or change the VM properties in hypervisor to use jp mapping.
{keycode: 42, entry: 0xffaa}, // *
{keycode: 43, entry: 0xffab}, // +
]
}
}, {tindex: 2, keyboardType: KEYBOARD_TYPE_UK, mappingTable:

View File

@ -161,7 +161,7 @@ KeyboardMapper.prototype = {
}
var X11Keysym = code;
if(this.jsX11KeysymMap[code] != undefined && (guestos == 'windows' || modifiers != AjaxViewer.SHIFT_KEY_MASK)) {
if(this.jsX11KeysymMap[code] != undefined && (guestos == 'windows' || modifiers != AjaxViewer.SHIFT_KEY_MASK || code == AjaxViewer.JS_KEY_CAPSLOCK)) {
X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") {
return;
@ -184,6 +184,10 @@ KeyboardMapper.prototype = {
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS && guestos == 'null') {
// ENTER/BACKSPACE key should already have been sent through KEY DOWN/KEY UP event
if(code == AjaxViewer.JS_KEY_ENTER || code == AjaxViewer.JS_KEY_BACKSPACE)
return;
var X11Keysym = code;
X11Keysym = this.jsKeyPressX11KeysymMap[code];
if(X11Keysym) {