Winpointer: Fix keyboard state

The dwKeyStates field of the POINTER_INFO structure is
always set to 0 no matter what.

Use GetKeyState instead.

Fixes https://gitlab.com/inkscape/inbox/-/issues/5946
This commit is contained in:
Luca Bacci 2022-01-03 15:03:55 +01:00
parent 728f0e13a8
commit 46c12b2c92
No known key found for this signature in database
GPG Key ID: 8E3C8D989C98883D

View File

@ -1762,10 +1762,12 @@ winpointer_make_event (GdkDisplay *display,
x /= impl->window_scale;
y /= impl->window_scale;
/* info->dwKeyStates is not reliable. We shall use
* GetKeyState here even for Ctrl and Shift. */
state = 0;
if (info->dwKeyStates & POINTER_MOD_CTRL)
if (GetKeyState (VK_CONTROL) < 0)
state |= GDK_CONTROL_MASK;
if (info->dwKeyStates & POINTER_MOD_SHIFT)
if (GetKeyState (VK_SHIFT) < 0)
state |= GDK_SHIFT_MASK;
if (GetKeyState (VK_MENU) < 0)
state |= GDK_MOD1_MASK;