]> Pileus Git - ~andy/gtk/commitdiff
Handle emulated keyboard input that arrives as VK_PACKET
authorTor Lillqvist <tml@iki.fi>
Sat, 19 Feb 2011 23:39:13 +0000 (01:39 +0200)
committerTor Lillqvist <tml@iki.fi>
Sat, 19 Feb 2011 23:39:13 +0000 (01:39 +0200)
Fixes bug #642772. Thanks to the anonymous bug reporter for providing
a test program.

gdk/win32/gdkevents-win32.c

index 7a187c66267acf293465a02a8c263c3ca37e157a..eaacd01e80b52c0f4d991aa4aa3f51c4030b1099 100644 (file)
@@ -1958,12 +1958,16 @@ gdk_event_translate (MSG  *msg,
       
       build_key_event_state (event, key_state);
 
-      gdk_keymap_translate_keyboard_state (_gdk_win32_display_get_keymap (_gdk_display),
-                                          event->key.hardware_keycode,
-                                          event->key.state,
-                                          event->key.group,
-                                          &event->key.keyval,
-                                          NULL, NULL, NULL);
+      if (msg->wParam == VK_PACKET &&
+         ToUnicode (VK_PACKET, HIWORD (msg->lParam), key_state, wbuf, 1, 0) == 1)
+       event->key.keyval = gdk_unicode_to_keyval (wbuf[0]);
+      else
+       gdk_keymap_translate_keyboard_state (_gdk_win32_display_get_keymap (_gdk_display),
+                                            event->key.hardware_keycode,
+                                            event->key.state,
+                                            event->key.group,
+                                            &event->key.keyval,
+                                            NULL, NULL, NULL);
 
       fill_key_event_string (event);