From 3767a9eac3482882d915c7b91db5d46348d8e609 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Thu, 12 Feb 2026 01:15:12 -0700 Subject: [PATCH] Add keyboard and gamepad shortcuts for control panel --- app/streaming/input/gamepad.cpp | 13 +++++++++++++ app/streaming/input/input.cpp | 5 +++++ app/streaming/input/input.h | 1 + app/streaming/input/keyboard.cpp | 8 ++++++++ 4 files changed, 27 insertions(+) diff --git a/app/streaming/input/gamepad.cpp b/app/streaming/input/gamepad.cpp index d5171f22..94625f6c 100644 --- a/app/streaming/input/gamepad.cpp +++ b/app/streaming/input/gamepad.cpp @@ -443,6 +443,19 @@ void SdlInputHandler::handleControllerButtonEvent(SDL_ControllerButtonEvent* eve return; } + if (state->buttons == (BACK_FLAG | LB_FLAG | RB_FLAG | B_FLAG)) { + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, + "Detected control panel toggle gamepad combo"); + + Session::get()->toggleControlPanelVisibility(); + + if (isGamepadInputAllowed()) { + LiSendMultiControllerEvent(state->index, m_GamepadMask, + 0, 0, 0, 0, 0, 0, 0); + } + return; + } + if (state->buttons == (BACK_FLAG | LB_FLAG | RB_FLAG | Y_FLAG)) { SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Detected keyboard/mouse input toggle gamepad combo"); diff --git a/app/streaming/input/input.cpp b/app/streaming/input/input.cpp index a2a109e7..819519a0 100644 --- a/app/streaming/input/input.cpp +++ b/app/streaming/input/input.cpp @@ -86,6 +86,11 @@ SdlInputHandler::SdlInputHandler(StreamingPreferences& prefs, int streamWidth, i m_SpecialKeyCombos[KeyComboToggleStatsOverlay].scanCode = SDL_SCANCODE_S; m_SpecialKeyCombos[KeyComboToggleStatsOverlay].enabled = true; + m_SpecialKeyCombos[KeyComboToggleControlPanel].keyCombo = KeyComboToggleControlPanel; + m_SpecialKeyCombos[KeyComboToggleControlPanel].keyCode = SDLK_p; + m_SpecialKeyCombos[KeyComboToggleControlPanel].scanCode = SDL_SCANCODE_P; + m_SpecialKeyCombos[KeyComboToggleControlPanel].enabled = true; + m_SpecialKeyCombos[KeyComboToggleMouseMode].keyCombo = KeyComboToggleMouseMode; m_SpecialKeyCombos[KeyComboToggleMouseMode].keyCode = SDLK_m; m_SpecialKeyCombos[KeyComboToggleMouseMode].scanCode = SDL_SCANCODE_M; diff --git a/app/streaming/input/input.h b/app/streaming/input/input.h index 753ff275..780e0383 100644 --- a/app/streaming/input/input.h +++ b/app/streaming/input/input.h @@ -163,6 +163,7 @@ private: KeyComboUngrabInput, KeyComboToggleFullScreen, KeyComboToggleStatsOverlay, + KeyComboToggleControlPanel, KeyComboToggleMouseMode, KeyComboToggleCursorHide, KeyComboToggleMinimize, diff --git a/app/streaming/input/keyboard.cpp b/app/streaming/input/keyboard.cpp index 1f8a8214..7d5a03c4 100644 --- a/app/streaming/input/keyboard.cpp +++ b/app/streaming/input/keyboard.cpp @@ -64,6 +64,14 @@ void SdlInputHandler::performSpecialKeyCombo(KeyCombo combo) !Session::get()->getOverlayManager().isOverlayEnabled(Overlay::OverlayDebug)); break; + case KeyComboToggleControlPanel: + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, + "Detected control panel toggle combo"); + if (auto session = Session::get(); session != nullptr) { + session->toggleControlPanelVisibility(); + } + break; + case KeyComboToggleMouseMode: SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Detected mouse mode toggle combo");