Skip to content

Commit 8e0cc92

Browse files
Mikeoctalmage
Mike
authored andcommitted
Added KEYEVENTF_EXTENDEDKEY flag when extended keys are triggered on win32
1 parent c41f382 commit 8e0cc92

File tree

1 file changed

+44
-3
lines changed

1 file changed

+44
-3
lines changed

src/keypress.c

+44-3
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,52 @@
2929
#if defined(IS_WINDOWS)
3030
void win32KeyEvent(int key, MMKeyFlags flags)
3131
{
32-
int scan = MapVirtualKey(key & 0xff, 0);
32+
int scan = MapVirtualKey(key & 0xff, MAPVK_VK_TO_VSC);
33+
34+
/* Set the scan code for extended keys */
35+
switch (key)
36+
{
37+
case VK_RCONTROL:
38+
case VK_SNAPSHOT: /* Print Screen */
39+
case VK_RMENU: /* Right Alt / Alt Gr */
40+
case VK_PAUSE: /* Pause / Break */
41+
case VK_HOME:
42+
case VK_UP:
43+
case VK_PRIOR: /* Page up */
44+
case VK_LEFT:
45+
case VK_RIGHT:
46+
case VK_END:
47+
case VK_DOWN:
48+
case VK_NEXT: /* 'Page Down' */
49+
case VK_INSERT:
50+
case VK_DELETE:
51+
case VK_LWIN:
52+
case VK_RWIN:
53+
case VK_APPS: /* Application */
54+
case VK_VOLUME_MUTE:
55+
case VK_VOLUME_DOWN:
56+
case VK_VOLUME_UP:
57+
case VK_MEDIA_NEXT_TRACK:
58+
case VK_MEDIA_PREV_TRACK:
59+
case VK_MEDIA_STOP:
60+
case VK_MEDIA_PLAY_PAUSE:
61+
case VK_BROWSER_BACK:
62+
case VK_BROWSER_FORWARD:
63+
case VK_BROWSER_REFRESH:
64+
case VK_BROWSER_STOP:
65+
case VK_BROWSER_SEARCH:
66+
case VK_BROWSER_FAVORITES:
67+
case VK_BROWSER_HOME:
68+
case VK_LAUNCH_MAIL:
69+
{
70+
flags |= KEYEVENTF_EXTENDEDKEY;
71+
break;
72+
}
73+
}
3374

34-
/* Set the scancode for keyup */
75+
/* Set the scan code for keyup */
3576
if ( flags & KEYEVENTF_KEYUP ) {
36-
scan = scan | 0x80;
77+
scan |= 0x80;
3778
}
3879

3980
keybd_event(key, scan, flags, 0);

0 commit comments

Comments
 (0)