Skip to content

Commit 4796cce

Browse files
CLOUDSTACK-7373: Incorrect Japanese keyboard mapping with CentOS CLI guestOS on VMware.
Fixed the jp keyboard issues for VMs deployed with keyboard=jp param.
1 parent 3a3e5cb commit 4796cce

2 files changed

Lines changed: 9 additions & 66 deletions

File tree

systemvm/js/ajaxkeys.js

Lines changed: 4 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -275,76 +275,15 @@ var keyboardTables = [
275275
{keycode: 244, entry : 0x7e, browser: "IE"},
276276
//Caps Lock = 240
277277
{keycode: 240, entry : 0xffe5},
278-
/*
279-
{keycode: JS_KEY_MULTIPLY, entry : [
280-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0 },
281-
{type: KEY_DOWN, code: X11_KEY_ASTERISK, modifiers: 0 },
282-
{type: KEY_UP, code: X11_KEY_ASTERISK, modifiers: 0 },
283-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0 }
284-
]},
285-
{keycode: JS_KEY_ADD, entry : false}
286-
*/
287278
//[186 / 58 = "~^"]
288279
{keycode: 186, entry : 0x22, browser: "IE"},
289280
{keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"},
290281
],
291282
keyPress: [
292-
// 34 : " " "
293-
{keycode: 34, entry: [{type: KEY_DOWN, code: 0x22, modifiers: 64, shift: true }]},
294-
{keycode: 42, entry: 0xffaa },
295-
// 39 : " ' " (shift+7)
296-
{keycode: 39, entry: [
297-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
298-
{type: KEY_DOWN, code: 0x22, modifiers: 0, shift: false },
299-
{type: KEY_UP, code: 0x22, modifiers: 0, shift: false },
300-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
301-
{type: KEY_DOWN, code: 0x22, modifiers: 0, shift: true },
302-
{type: KEY_UP, code: 0x22, modifiers: 0, shift: true },
303-
]}, //58 : " : "
304-
{keycode: 58, entry: [
305-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
306-
{type: KEY_DOWN, code: 0x3a, modifiers: 0, shift: false },
307-
{type: KEY_UP, code: 0x3a, modifiers: 0, shift: false },
308-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
309-
{type: KEY_DOWN, code: 0x3a, modifiers: 0, shift: true },
310-
{type: KEY_UP, code: 0x3a, modifiers: 0, shift: true },
311-
]},
312-
// 94 : "^"
313-
{keycode: 94, entry: [
314-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
315-
{type: KEY_DOWN, code: 0x36, modifiers: 0, shift: false },
316-
{type: KEY_UP, code: 0x36, modifiers: 0, shift: false },
317-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
318-
{type: KEY_DOWN, code: 0x36, modifiers: 0, shift: true },
319-
{type: KEY_UP, code: 0x36, modifiers: 0, shift: true },
320-
]},
321-
// 64 : "@"
322-
{keycode: 64, entry: [
323-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
324-
{type: KEY_DOWN, code: 0x32, modifiers: 0, shift: false },
325-
{type: KEY_UP, code: 0x32, modifiers: 0, shift: false },
326-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
327-
{type: KEY_DOWN, code: 0x32, modifiers: 0, shift: true },
328-
{type: KEY_UP, code: 0x32, modifiers: 0, shift: true },
329-
]},
330-
// 96 : "'"
331-
{keycode: 96, entry: [
332-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
333-
{type: KEY_DOWN, code: 0x7e, modifiers: 0, shift: false },
334-
{type: KEY_UP, code: 0x7e, modifiers: 0, shift: false },
335-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
336-
{type: KEY_DOWN, code: 0x7e, modifiers: 0, shift: true },
337-
{type: KEY_UP, code: 0x7e, modifiers: 0, shift: true },
338-
]},
339-
// 61 : "="
340-
{keycode: 61, entry: [
341-
{type: KEY_DOWN, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
342-
{type: KEY_DOWN, code: 0x3d, modifiers: 0, shift: false },
343-
{type: KEY_UP, code: 0x3d, modifiers: 0, shift: false },
344-
{type: KEY_UP, code: X11_KEY_SHIFT, modifiers: 0, shift: false },
345-
{type: KEY_DOWN, code: 0x3d, modifiers: 0, shift: true },
346-
{type: KEY_UP, code: 0x3d, modifiers: 0, shift: true },
347-
]},
283+
// These mappings are for japanese guestOS. it is recommended that admin should deploy
284+
// the VM with "keyboard=jp" paramenter or change the VM properties in hypervisor to use jp mapping.
285+
{keycode: 42, entry: 0xffaa}, // *
286+
{keycode: 43, entry: 0xffab}, // +
348287
]
349288
}
350289
}, {tindex: 2, keyboardType: KEYBOARD_TYPE_UK, mappingTable:

systemvm/js/ajaxviewer.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ KeyboardMapper.prototype = {
161161
}
162162

163163
var X11Keysym = code;
164-
if(this.jsX11KeysymMap[code] != undefined && (guestos == 'windows' || modifiers != AjaxViewer.SHIFT_KEY_MASK)) {
164+
if(this.jsX11KeysymMap[code] != undefined && (guestos == 'windows' || modifiers != AjaxViewer.SHIFT_KEY_MASK || code == AjaxViewer.JS_KEY_CAPSLOCK)) {
165165
X11Keysym = this.jsX11KeysymMap[code];
166166
if(typeof this.jsX11KeysymMap[code] == "boolean") {
167167
return;
@@ -184,6 +184,10 @@ KeyboardMapper.prototype = {
184184
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
185185

186186
} else if(eventType == AjaxViewer.KEY_PRESS && guestos == 'null') {
187+
// ENTER/BACKSPACE key should already have been sent through KEY DOWN/KEY UP event
188+
if(code == AjaxViewer.JS_KEY_ENTER || code == AjaxViewer.JS_KEY_BACKSPACE)
189+
return;
190+
187191
var X11Keysym = code;
188192
X11Keysym = this.jsKeyPressX11KeysymMap[code];
189193
if(X11Keysym) {

0 commit comments

Comments
 (0)