From 58a86abfc85f3117c63cbf9d8eef49dd68b0442e Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Thu, 16 Sep 2021 01:57:44 +0200 Subject: [PATCH] add new .ini setting to force release alt key on alt+tab --- inc/dd.h | 1 + src/config.c | 7 ++++++- src/wndproc.c | 27 +++++++++++++-------------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/inc/dd.h b/inc/dd.h index ae096f9..b119a79 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -135,6 +135,7 @@ typedef struct CNCDDRAW BOOL cnchack; int maxgameticks; BOOL alt_key_down; + BOOL releasealt; BOOL bnet_active; BOOL bnet_was_fullscreen; BOOL bnet_was_upscaled; diff --git a/src/config.c b/src/config.c index 58ecc15..5bdeb79 100644 --- a/src/config.c +++ b/src/config.c @@ -64,6 +64,7 @@ void cfg_load() g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE); g_ddraw->fixmousehook = cfg_get_bool("fixmousehook", FALSE); g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE); + g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE); g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE); g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE); g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL); @@ -725,16 +726,19 @@ static void cfg_create_ini() "[ja2]\n" "fixmousehook=true\n" "noactivateapp=true\n" + "releasealt=true\n" "\n" "; Jagged Alliance 2: Wildfire\n" "[WF6]\n" "fixmousehook=true\n" "noactivateapp=true\n" + "releasealt=true\n" "\n" "; Jagged Alliance 2 - UC mod\n" "[JA2_UC]\n" "fixmousehook=true\n" "noactivateapp=true\n" + "releasealt=true\n" "\n" "; Kings Quest 8\n" "[Mask]\n" @@ -920,7 +924,8 @@ static void cfg_create_ini() "[Wiz8]\n" "fixmousehook=true\n" "noactivateapp=true\n" - "\n" + "releasealt=true\n" + "\n" "; Worms Armageddon\n" "[WA]\n" "adjmouse=true\n" diff --git a/src/wndproc.c b/src/wndproc.c index 37c0246..0bd273e 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -528,6 +528,17 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam } } + if (wParam && g_ddraw->releasealt) + { + INPUT ip; + memset(&ip, 0, sizeof(ip)); + + ip.type = INPUT_KEYBOARD; + ip.ki.wVk = VK_MENU; + ip.ki.dwFlags = KEYEVENTF_KEYUP; + SendInput(1, &ip, sizeof(ip)); + } + if (g_ddraw->windowed || g_ddraw->noactivateapp) { /* let it pass through once (tiberian sun) */ @@ -538,21 +549,9 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam one_time = TRUE; break; } - - /* jagged alliance 2 */ - if (wParam) - { - INPUT ip; - memset(&ip, 0, sizeof(ip)); - - ip.type = INPUT_KEYBOARD; - ip.ki.wVk = VK_MENU; - ip.ki.dwFlags = KEYEVENTF_KEYUP; - SendInput(1, &ip, sizeof(ip)); - } - //if (wParam && g_ddraw->alt_key_down) - // PostMessageA(g_ddraw->hwnd, WM_SYSKEYUP, VK_MENU, 0); + if (wParam && g_ddraw->alt_key_down && !g_ddraw->releasealt) + PostMessageA(g_ddraw->hwnd, WM_SYSKEYUP, VK_MENU, 0); return 0; }