From d859549424174179768fcd0310c75823a5ff7cb1 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 8 Nov 2014 11:51:11 +0100 Subject: w32_common: don't override alt+space Apparently, stealing this from the WM is bad form, just like with F10. Fixes #1254. --- video/out/w32_common.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/video/out/w32_common.c b/video/out/w32_common.c index 600aa26716..f6a220b9bf 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -459,23 +459,32 @@ static int decode_key(struct vo_w32_state *w32, UINT vkey, UINT scancode) return c; } -static void handle_key_down(struct vo_w32_state *w32, UINT vkey, UINT scancode) +static bool is_wm_key(UINT vkey) { + return vkey == VK_F10 || (vkey == ' ' && key_state(VK_LMENU)); +} + +static bool handle_key_down(struct vo_w32_state *w32, UINT vkey, UINT scancode) +{ + if (is_wm_key(vkey)) + return 0; + // Ignore key repeat if (scancode & KF_REPEAT) - return; + return 1; int mpkey = mp_w32_vkey_to_mpkey(vkey, scancode & KF_EXTENDED); if (!mpkey) { mpkey = decode_key(w32, vkey, scancode & (0xff | KF_EXTENDED)); if (!mpkey) - return; + return 1; } mp_input_put_key(w32->input_ctx, mpkey | mod_state(w32) | MP_KEY_STATE_DOWN); + return 1; } -static void handle_key_up(struct vo_w32_state *w32, UINT vkey, UINT scancode) +static bool handle_key_up(struct vo_w32_state *w32, UINT vkey, UINT scancode) { switch (vkey) { case VK_MENU: @@ -487,6 +496,7 @@ static void handle_key_up(struct vo_w32_state *w32, UINT vkey, UINT scancode) // get "stuck." This matches the behaviour of other VOs. mp_input_put_key(w32->input_ctx, MP_INPUT_RELEASE_ALL); } + return !is_wm_key(vkey); } static bool handle_char(struct vo_w32_state *w32, wchar_t wc) @@ -596,14 +606,12 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, break; case WM_SYSKEYDOWN: case WM_KEYDOWN: - handle_key_down(w32, wParam, HIWORD(lParam)); - if (wParam == VK_F10) + if (!handle_key_down(w32, wParam, HIWORD(lParam))) return 0; break; case WM_SYSKEYUP: case WM_KEYUP: - handle_key_up(w32, wParam, HIWORD(lParam)); - if (wParam == VK_F10) + if (!handle_key_up(w32, wParam, HIWORD(lParam))) return 0; break; case WM_CHAR: -- cgit v1.2.3