summaryrefslogtreecommitdiffstats
path: root/src/gui_w32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui_w32.c')
-rw-r--r--src/gui_w32.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 5e8fbe2a80..2dc54bf5f8 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -852,6 +852,13 @@ get_active_modifiers(void)
modifiers |= MOD_MASK_ALT;
if ((modifiers & MOD_MASK_CTRL) && (GetKeyState(VK_RMENU) & 0x8000))
modifiers &= ~MOD_MASK_CTRL;
+ // Add RightALT only if it is hold alone (without Ctrl), because if AltGr
+ // is pressed, Windows claims that Ctrl is hold as well. That way we can
+ // recognize Right-ALT alone and be sure that not AltGr is hold.
+ if (!(GetKeyState(VK_CONTROL) & 0x8000)
+ && (GetKeyState(VK_RMENU) & 0x8000)
+ && !(GetKeyState(VK_LMENU) & 0x8000)) // seems AltGr has both set
+ modifiers |= MOD_MASK_ALT;
return modifiers;
}