diff options
author | Tor Lillqvist <tml@novell.com> | 2005-05-18 14:53:00 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2005-05-18 14:53:00 +0000 |
commit | ba7ee2270a87a0b5f16b047a2135c067a958c226 (patch) | |
tree | 10da937e3d06c69115d2bd33c54d22a975f3b9a1 /gdk/win32/gdkevents-win32.c | |
parent | f6906b8272635a0f2f4620675813ff538cde0c73 (diff) | |
download | gdk-pixbuf-ba7ee2270a87a0b5f16b047a2135c067a958c226.tar.gz |
gdk/win32/gdkevents-win32.c gdk/win32/gdkkeys-win32.c Check the
2005-05-18 Tor Lillqvist <tml@novell.com>
* gdk/win32/gdkevents-win32.c
* gdk/win32/gdkkeys-win32.c
* gdk/win32/gdkprivate-win32.h: Check the KF_EXTENDED bit in
lParam of WM_KEY* messages to distinguish between left and right
Control and Alt keys. Unfortunately, the right Shift key doesnt
set KF_EXTENDED, so to distinguish between left and right Shift
keys, check the scan code. (#304584)
Diffstat (limited to 'gdk/win32/gdkevents-win32.c')
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 222b457c8..47a7eb482 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2438,6 +2438,26 @@ gdk_event_translate (GdkDisplay *display, event->key.string = NULL; event->key.length = 0; event->key.hardware_keycode = msg->wParam; + if (HIWORD (msg->lParam) & KF_EXTENDED) + { + switch (msg->wParam) + { + case VK_CONTROL: + event->key.hardware_keycode = VK_RCONTROL; + break; + case VK_SHIFT: /* Actually, KF_EXTENDED is not set + * for the right shift key. + */ + event->key.hardware_keycode = VK_RSHIFT; + break; + case VK_MENU: + event->key.hardware_keycode = VK_RMENU; + break; + } + } + else if (msg->wParam == VK_SHIFT && + LOBYTE (HIWORD (msg->lParam)) == _scancode_rshift) + event->key.hardware_keycode = VK_RSHIFT; API_CALL (GetKeyboardState, (key_state)); |