From bdf7d6530593db33636b2fecf18bb2cf4c61d21f Mon Sep 17 00:00:00 2001 From: Sanjay Tripathi Date: Thu, 25 Sep 2014 16:01:37 +0530 Subject: [PATCH] CLOUDSTACK-7373: Incorrect Japanese keyboard mapping with CentOS CLI and windows guestOS on VMware. --- systemvm/js/ajaxkeys.js | 28 +++++++++++++++------------- systemvm/js/ajaxviewer.js | 6 +++--- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/systemvm/js/ajaxkeys.js b/systemvm/js/ajaxkeys.js index f992c62ed5f..26c29967c61 100644 --- a/systemvm/js/ajaxkeys.js +++ b/systemvm/js/ajaxkeys.js @@ -229,32 +229,32 @@ var keyboardTables = [ {keycode: JS_KEY_ALT, entry : X11_KEY_ALT}, //{keycode: JS_KEY_GRAVE_ACCENT, entry : X11_KEY_GRAVE_ACCENT}, //[192 / 64 = "' @"] - {keycode: 192, entry : 0x5b, browser: "IE"}, - {keycode: 64, entry : 0x5b, guestos: "windows", browser: "Firefox"}, + {keycode: 192, entry : 0x40, guestos: "windows", browser: "IE"}, + {keycode: 64, entry : 0x40, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_ADD, entry : X11_KEY_ADD}, //[187 / 59 = "; +"] - {keycode: 187, entry : 0x3a, browser: "IE"}, + {keycode: 187, entry : 0x3b, guestos: "windows", browser: "IE"}, {keycode: 59, entry : 0x3b, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_OPEN_BRACKET, entry : X11_KEY_OPEN_BRACKET}, //[219 = "[{"] - {keycode: 219, entry : 0x5d, guestos: "windows", browser: "IE"}, - {keycode: 219, entry : 0x5d, guestos: "windows", browser: "Firefox"}, + {keycode: 219, entry : 0x5b, guestos: "windows", browser: "IE"}, + {keycode: 219, entry : 0x5b, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_CLOSE_BRACKET, entry : X11_KEY_CLOSE_BRACKET}, //[221 = "]}"] - {keycode: 221, entry : 0x5c, guestos: "windows", browser: "IE"}, - {keycode: 221, entry : 0x5c, guestos: "windows", browser: "Firefox"}, + {keycode: 221, entry : 0x5d, guestos: "windows", browser: "IE"}, + {keycode: 221, entry : 0x5d, guestos: "windows", browser: "Firefox"}, {keycode: JS_KEY_BACK_SLASH, entry : X11_KEY_BACK_SLASH, guestos: "windows"}, //{keycode: JS_KEY_SINGLE_QUOTE, entry : X11_KEY_SINGLE_QUOTE}, //[222 / 160 = "~^"] - {keycode: 222, entry : 0x3d, browser: "IE"}, - {keycode: 160, entry : 0x3d, guestos: "windows", browser: "Firefox"}, + {keycode: 222, entry : 0x5e, guestos: "windows", browser: "IE"}, + {keycode: 160, entry : 0x5e, guestos: "windows", browser: "Firefox"}, //[173 = "-=" ] specific to Firefox browser {keycode: 173, entry : 0x2d, guestos: "windows", browser: "Firefox"}, {keycode: JS_KEY_COMMA, entry : X11_KEY_COMMA, guestos: "windows"}, {keycode: JS_KEY_PERIOD, entry : X11_KEY_PERIOD, guestos: "windows"}, {keycode: JS_KEY_FORWARD_SLASH, entry : X11_KEY_FORWARD_SLASH, guestos: "windows"}, - {keycode: JS_KEY_DASH, entry : X11_KEY_DASH}, - {keycode: JS_KEY_SEMI_COLON, entry : X11_KEY_SEMI_COLON}, + {keycode: JS_KEY_DASH, entry : X11_KEY_DASH, guestos: "windows"}, + {keycode: JS_KEY_SEMI_COLON, entry : 0x3a, guestos: "windows"}, {keycode: JS_KEY_NUMPAD0, entry : X11_KEY_NUMPAD0, guestos: "windows"}, {keycode: JS_KEY_NUMPAD1, entry : X11_KEY_NUMPAD1, guestos: "windows"}, {keycode: JS_KEY_NUMPAD2, entry : X11_KEY_NUMPAD2, guestos: "windows"}, @@ -276,8 +276,10 @@ var keyboardTables = [ //Caps Lock = 240 {keycode: 240, entry : 0xffe5}, //[186 / 58 = "~^"] - {keycode: 186, entry : 0x22, browser: "IE"}, - {keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"}, + {keycode: 186, entry : 0x3a, guestos: "windows", browser: "IE"}, + {keycode: 58, entry : 0x3a, guestos: "windows", browser: "Firefox"}, + //[226 = "_"] + {keycode: 226, entry : 0x5f, guestos: "windows"}, ], keyPress: [ // These mappings are for japanese guestOS. it is recommended that admin should deploy diff --git a/systemvm/js/ajaxviewer.js b/systemvm/js/ajaxviewer.js index 5b5e805ad0b..9e46f7962c1 100644 --- a/systemvm/js/ajaxviewer.js +++ b/systemvm/js/ajaxviewer.js @@ -200,7 +200,7 @@ KeyboardMapper.prototype = { this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: X11Keysym, modifiers: modifiers}); this.mappedInput.push({type : AjaxViewer.KEY_UP, code: X11Keysym, modifiers: modifiers}); } - } else { + } else if(!(code == 48 && modifiers == AjaxViewer.SHIFT_KEY_MASK) && !(code == 95 && modifiers == 0)){ this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: code, modifiers: modifiers}); this.mappedInput.push({type : AjaxViewer.KEY_UP, code: code, modifiers: modifiers}); } @@ -239,9 +239,9 @@ KeyboardMapper.prototype = { } // special handling for ALT/CTRL key - if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL)) + if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL)) { this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers}); - + } } else if(eventType == AjaxViewer.KEY_PRESS) { // special handling for * and + key on number pad if(code == AjaxViewer.JS_NUMPAD_MULTIPLY) {