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"}, {keycode: 244, entry : 0x7e, browser: "IE"},
//Caps Lock = 240 //Caps Lock = 240
{keycode: 240, entry : 0xffe5}, {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 = "~^"] //[186 / 58 = "~^"]
{keycode: 186, entry : 0x22, browser: "IE"}, {keycode: 186, entry : 0x22, browser: "IE"},
{keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"}, {keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"},
], ],
keyPress: [ keyPress: [
// 34 : " " " // These mappings are for japanese guestOS. it is recommended that admin should deploy
{keycode: 34, entry: [{type: KEY_DOWN, code: 0x22, modifiers: 64, shift: true }]}, // the VM with "keyboard=jp" paramenter or change the VM properties in hypervisor to use jp mapping.
{keycode: 42, entry: 0xffaa }, {keycode: 42, entry: 0xffaa}, // *
// 39 : " ' " (shift+7) {keycode: 43, entry: 0xffab}, // +
{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 },
]},
] ]
} }
}, {tindex: 2, keyboardType: KEYBOARD_TYPE_UK, mappingTable: }, {tindex: 2, keyboardType: KEYBOARD_TYPE_UK, mappingTable:

View File

@ -161,7 +161,7 @@ KeyboardMapper.prototype = {
} }
var X11Keysym = code; 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]; X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") { if(typeof this.jsX11KeysymMap[code] == "boolean") {
return; return;
@ -184,6 +184,10 @@ KeyboardMapper.prototype = {
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers}); this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS && guestos == 'null') { } 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; var X11Keysym = code;
X11Keysym = this.jsKeyPressX11KeysymMap[code]; X11Keysym = this.jsKeyPressX11KeysymMap[code];
if(X11Keysym) { if(X11Keysym) {