Possible fix for Missing Characters @ (Alt-GR Q) and | (Alt-GR <) on german locale

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Running virt-viewer-x64-0.5.6.msi, on Windows 7, connecting to QEMU using spice, AltGR key combinations fails (using Swedish keyboard layout both at server and client).

I suspect that this is a variant of https://bugzilla.redhat.com/show_bug.cgi?id=904092.

After some debugging, I realized that there is an extra VK_LCONTROL keypress sent by Windows. This extra VK_LCONTROL will then make the key e.g. AltGr-< actually be Control-AltGr-<, which is not interpreted as a | sign.

So in spice-widget.c : keyboard_hook_cb(), I added SPICE_DEBUG lines which printed out the hooked->scanCode, and realized that this extra VK_LCONTROL has a very suspect scanCode with bit 9 set. If I instead press the left Ctrl key, it will also emit VK_LCONTROL, but with bit 9 cleared.

So I just made sure that keyboard_hook_cb(), silently dropped these strange VK_LCONTROL events, which seems to work for me.


         case VK_NUMLOCK:
         case VK_LSHIFT:
         case VK_RSHIFT:
-        case VK_LCONTROL:
         case VK_RCONTROL:
         case VK_LMENU:
         case VK_RMENU:
             break;
+        case VK_LCONTROL:
+            // When pressing AltGr, an extra VK_LCONTROL with a special scancode with bit 9 set is sent.
+            // Lets ignore the extra VK_LCONTROL, as that will make AltGr missbehave.
+            if (hooked->scanCode & 0x200)
+                return 1;
+            break;
         default:
             SendMessage(win32_window, wparam, hooked->vkCode, dwmsg);
             return 1;
         }


/Mattias
_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list

[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux