diff options
Diffstat (limited to 'video/out/w32_common.c')
-rw-r--r-- | video/out/w32_common.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/video/out/w32_common.c b/video/out/w32_common.c index 221f0b37dc..26edde17eb 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -354,6 +354,17 @@ static int decode_key(struct vo_w32_state *w32, UINT vkey, UINT scancode) return c; } +static bool handle_appcommand(struct vo_w32_state *w32, UINT cmd) +{ + if (!mp_input_use_media_keys(w32->input_ctx)) + return false; + int mpkey = mp_w32_appcmd_to_mpkey(cmd); + if (!mpkey) + return false; + mp_input_put_key(w32->input_ctx, mpkey | mod_state(w32)); + return true; +} + static void handle_key_down(struct vo_w32_state *w32, UINT vkey, UINT scancode) { // Ignore key repeat @@ -1020,6 +1031,10 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, GET_Y_LPARAM(lParam)); } break; + case WM_APPCOMMAND: + if (handle_appcommand(w32, GET_APPCOMMAND_LPARAM(lParam))) + return TRUE; + break; case WM_SYSKEYDOWN: // Open the window menu on Alt+Space. Normally DefWindowProc opens the // window menu in response to WM_SYSCHAR, but since mpv translates its |