From: Tor Lillqvist Date: Sat, 19 Feb 2011 23:39:13 +0000 (+0200) Subject: Handle emulated keyboard input that arrives as VK_PACKET X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=8e6932f46ef1e1369dff48ed9cccae2c8de6aa17;p=~andy%2Fgtk Handle emulated keyboard input that arrives as VK_PACKET Fixes bug #642772. Thanks to the anonymous bug reporter for providing a test program. --- diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 7a187c662..eaacd01e8 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -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);