diff --git a/src/keyboard.c b/src/keyboard.c index e1583d1..7bc5369 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -43,46 +43,44 @@ LRESULT CALLBACK keyboard_hook_proc(int code, WPARAM wParam, LPARAM lParam) return CallNextHookEx(g_keyboard_hook, code, wParam, lParam); BOOL alt_down = !!(lParam & (1 << 29)); - BOOL key_down = !(lParam & (1 << 30)); - BOOL key_up = !!(lParam & (1 << 31)); + BOOL key_down = !(lParam & (1 << 31)); + BOOL key_released = !!(lParam & (1 << 31)); + BOOL key_triggered = !(lParam & (1 << 30)); - //TRACE("kbhook wParam=%u, key_down=%u, key_up=%u, alt_down=%u\n", wParam, key_down, key_up, alt_down); + TRACE("kbhook wParam=%u, triggered=%u, released=%u, alt_down=%u\n", wParam, key_triggered, key_released, alt_down); - if (wParam == VK_MENU && (key_up || key_down)) /* Fix for alt key being stuck on alt+tab in some games */ + if (wParam == VK_MENU && (key_released || key_triggered)) /* Fix for alt key being stuck on alt+tab in some games */ { g_ddraw.alt_key_down = alt_down; } - if (wParam == g_config.hotkeys.toggle_fullscreen && alt_down) + if (wParam == g_config.hotkeys.toggle_fullscreen && alt_down && key_down) { - if (key_down) - util_toggle_fullscreen(); - - if (!key_up) - return 1; - } - - if (wParam == g_config.hotkeys.toggle_maximize && alt_down) - { - if (key_down) - util_toggle_maximize(); - - if (!key_up) - return 1; - } - - if (wParam == VK_F4 && g_config.homm_hack) /* Heroes of Might and Magic 3 and 4 */ - { - if (key_down) + if (key_triggered) util_toggle_fullscreen(); return 1; } - if (wParam == g_config.hotkeys.screenshot) + if (wParam == g_config.hotkeys.toggle_maximize && alt_down && key_down) { - if (key_up) - ss_take_screenshot(g_ddraw.primary); + if (key_triggered) + util_toggle_maximize(); + + return 1; + } + + if (wParam == VK_F4 && g_config.homm_hack) /* Heroes of Might and Magic 3 and 4 */ + { + if (key_triggered) + util_toggle_fullscreen(); + + return 1; + } + + if (wParam == g_config.hotkeys.screenshot && key_released) + { + ss_take_screenshot(g_ddraw.primary); } if (wParam == g_config.hotkeys.unlock_cursor1 || wParam == VK_CONTROL) @@ -92,7 +90,7 @@ LRESULT CALLBACK keyboard_hook_proc(int code, WPARAM wParam, LPARAM lParam) { mouse_unlock(); - if (!key_up) + if (key_down) return 1; } } @@ -104,7 +102,7 @@ LRESULT CALLBACK keyboard_hook_proc(int code, WPARAM wParam, LPARAM lParam) { mouse_unlock(); - if (!key_up) + if (key_down) return 1; } }