Package: virtualbox-ose
Version: 1.5.0-dfsg2-1
Severity: normal
Tags: patch
Hi,
(first, although I ACK it is a wishlist, I let the severity to normal
since it is a very annoying bug, having an impact on the usability of
the package)
when using e.g. an azerty layout (pc105/fr), it is impossible to get
symbols like: {, }, [, ], #, @ inside the VMs. Upstream has a patch for
that and I guess you might want to add it as a patch against the current
debian package, waiting for the upstream to release a newer version.
Attached is a patch based on changeset 3938[1], which works great for
me. (Note that the second original hunk isn't needed.)
1. http://www.virtualbox.org/changeset/3938
Cheers,
--
Cyril Brulebois
--- virtualbox-ose-1.5.0-dfsg2/src/VBox/Frontends/VirtualBox/src/linux/keyboard.c 2007-08-30 17:16:23.000000000 +0200
+++ virtualbox-ose-1.5.0-dfsg2-new/src/VBox/Frontends/VirtualBox/src/linux/keyboard.c 2007-09-21 21:46:11.000000000 +0200
@@ -1038,7 +1038,8 @@
/* function keys */
VK_F1, VK_F2,
VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, /* FFC0 */
- VK_F11, VK_F12, VK_F13, VK_F14, VK_F15, VK_F16, 0, 0, /* FFC8 */
+ VK_F11, VK_F12, VK_LWIN /* VK_F13 */, VK_RWIN /* VK_F14 */,
+ VK_F15, VK_F16, 0, 0, /* FFC8 */
0, 0, 0, 0, 0, 0, 0, 0, /* FFD0 */
0, 0, 0, 0, 0, 0, 0, 0, /* FFD8 */
/* modifier keys */
@@ -1085,7 +1086,7 @@
/* function keys */
0x3B, 0x3C,
0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, /* FFC0 */
- 0x57, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* FFC8 */
+ 0x57, 0x58, 0x15B, 0x15C, 0x00, 0x00, 0x00, 0x00, /* FFC8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* FFD0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* FFD8 */
/* modifier keys */
@@ -1841,36 +1842,43 @@
if (!vkey)
{
+ // @@@AH VBOX hack for AltGr
+ if (e2.keycode == 0x71)
+ {
+ TRACE("VBOX HACK, mapping keycode 0x71 to scancode %X\n", VK_MENU);
+ vkey = VK_MENU | 0x100;
+ } else {
/* Others keys: let's assign OEM virtual key codes in the allowed range,
* that is ([0xba,0xc0], [0xdb,0xe4], 0xe6 (given up) et [0xe9,0xf5]) */
- do
- {
- switch (++OEMvkey)
+ do
{
- case 0xc1 : OEMvkey=0xdb; break;
- case 0xe5 : OEMvkey=0xe9; break;
- case 0xf6 : OEMvkey=0xf5; WARN("No more OEM vkey available!\n");
- }
- } while (OEMvkey < 0xf5 && vkey_used[OEMvkey]);
+ switch (++OEMvkey)
+ {
+ case 0xc1 : OEMvkey=0xdb; break;
+ case 0xe5 : OEMvkey=0xe9; break;
+ case 0xf6 : OEMvkey=0xf5; WARN("No more OEM vkey available!\n");
+ }
+ } while (OEMvkey < 0xf5 && vkey_used[OEMvkey]);
- vkey = VKEY_IF_NOT_USED(OEMvkey);
+ vkey = VKEY_IF_NOT_USED(OEMvkey);
- if (TRACE_ON(keyboard))
- {
- TRACE("OEM specific virtual key %X assigned to keycode %X:\n",
- OEMvkey, e2.keycode);
- TRACE("(");
- for (i = 0; i < keysyms_per_keycode; i += 1)
+ if (TRACE_ON(keyboard))
{
- const char *ksname;
+ TRACE("OEM specific virtual key %X assigned to keycode %X:\n",
+ OEMvkey, e2.keycode);
+ TRACE("(");
+ for (i = 0; i < keysyms_per_keycode; i += 1)
+ {
+ const char *ksname;
- keysym = XLookupKeysym(&e2, i);
- ksname = XKeysymToString(keysym);
- if (!ksname)
- ksname = "NoSymbol";
- TRACE( "%lX (%s) ", keysym, ksname);
+ keysym = XLookupKeysym(&e2, i);
+ ksname = XKeysymToString(keysym);
+ if (!ksname)
+ ksname = "NoSymbol";
+ TRACE( "%lX (%s) ", keysym, ksname);
+ }
+ TRACE(")\n");
}
- TRACE(")\n");
}
}