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");
             }
         }
 

Reply via email to