From 7624efb8a9d71b7d72a5a7dbe5b5fcdf9517356f Mon Sep 17 00:00:00 2001 From: Martin Piatka Date: Tue, 6 Jan 2026 13:52:13 +0100 Subject: [PATCH] disp/vulkan_sdl3: Alt-m to cycle cursor hide mode --- src/video_display/vulkan/vulkan_sdl3.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/video_display/vulkan/vulkan_sdl3.cpp b/src/video_display/vulkan/vulkan_sdl3.cpp index 982854a81..44630ff3c 100644 --- a/src/video_display/vulkan/vulkan_sdl3.cpp +++ b/src/video_display/vulkan/vulkan_sdl3.cpp @@ -186,7 +186,7 @@ struct state_vulkan_sdl3 { bool keep_aspect = false; bool cursor_is_shown = true; - enum show_cursor_t { SC_TRUE, SC_FALSE, SC_AUTOHIDE } show_cursor = SC_AUTOHIDE; + enum show_cursor_t { SC_TRUE, SC_FALSE, SC_AUTOHIDE, SC_MODE_COUNT } show_cursor = SC_AUTOHIDE; chrono::steady_clock::time_point last_cursor_movement{}; int width = 0; @@ -230,7 +230,8 @@ static_assert(std::is_standard_layout_v); constexpr std::pair display_vulkan_keybindings[] = { {'d', "toggle deinterlace"}, {'f', "toggle fullscreen"}, - {'q', "quit"} + {'q', "quit"}, + {K_ALT('m'), "change cursor hide mode"}, }; constexpr void update_description(const video_desc& video_desc, video_frame& frame) { @@ -316,6 +317,18 @@ constexpr bool display_vulkan_process_key(state_vulkan_sdl3& s, int64_t key) { case 'q': exit_uv(0); return true; + case K_ALT('m'): + s.show_cursor = (state_vulkan_sdl3::show_cursor_t)(((int) s.show_cursor + 1) % state_vulkan_sdl3::SC_MODE_COUNT); + LOG(LOG_LEVEL_NOTICE) << MOD_NAME << "Show cursor (0 - on, 1 - off, 2 - autohide): " + << s.show_cursor << "\n"; + if(s.show_cursor == state_vulkan_sdl3::SC_FALSE){ + SDL_CHECK(SDL_HideCursor()); + s.cursor_is_shown = false; + } else if(s.show_cursor == state_vulkan_sdl3::SC_TRUE){ + SDL_CHECK(SDL_ShowCursor()); + s.cursor_is_shown = true; + } + return true; default: return false; }