From 679b8330ff38a057a25d8d413e5c273b65971193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Fri, 29 Dec 2023 17:37:34 +0100 Subject: [PATCH] Add bindings for toggling mouse control and touch screen controls. Not bound by default. I think I'll find myself using both of these for testing, feel worthwhile. Suggested in #18464 --- Core/KeyMap.cpp | 3 +++ Core/KeyMap.h | 2 ++ UI/EmuScreen.cpp | 24 +++++++++++++++++++++++- UI/GamepadEmu.cpp | 4 ++-- UI/GamepadEmu.h | 2 +- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Core/KeyMap.cpp b/Core/KeyMap.cpp index 980329ee41..f52072bb64 100644 --- a/Core/KeyMap.cpp +++ b/Core/KeyMap.cpp @@ -465,6 +465,9 @@ const KeyMap_IntStrPair psp_button_names[] = { {VIRTKEY_TOGGLE_WLAN, "Toggle WLAN"}, {VIRTKEY_EXIT_APP, "Exit App"}, + {VIRTKEY_TOGGLE_MOUSE, "Toggle mouse input"}, + {VIRTKEY_TOGGLE_TOUCH_CONTROLS, "Toggle touch controls"}, + {VIRTKEY_AXIS_RIGHT_Y_MAX, "RightAn.Up"}, {VIRTKEY_AXIS_RIGHT_Y_MIN, "RightAn.Down"}, {VIRTKEY_AXIS_RIGHT_X_MIN, "RightAn.Left"}, diff --git a/Core/KeyMap.h b/Core/KeyMap.h index de9334d32e..6b0301c2f6 100644 --- a/Core/KeyMap.h +++ b/Core/KeyMap.h @@ -74,6 +74,8 @@ enum { VIRTKEY_PREVIOUS_SLOT = 0x40000027, VIRTKEY_TOGGLE_WLAN = 0x40000028, VIRTKEY_EXIT_APP = 0x40000029, + VIRTKEY_TOGGLE_MOUSE = 0x40000030, + VIRTKEY_TOGGLE_TOUCH_CONTROLS = 0x40000031, VIRTKEY_LAST, VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST }; diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index c0cbcd9cf5..ae24eb9cf7 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -788,7 +788,29 @@ void EmuScreen::onVKey(int virtualKeyCode, bool down) { if (down) System_ToggleFullscreenState(""); break; - + case VIRTKEY_TOGGLE_TOUCH_CONTROLS: + if (down) { + if (g_Config.bShowTouchControls) { + // This just messes with opacity if enabled, so you can touch the screen again to bring them back. + if (GamepadGetOpacity() < 0.01f) { + GamepadTouch(); + } else { + // Reset. + GamepadTouch(true); + } + } else { + // If touch controls are disabled though, they'll get enabled. + g_Config.bShowTouchControls = true; + RecreateViews(); + GamepadTouch(); + } + } + break; + case VIRTKEY_TOGGLE_MOUSE: + if (down) { + g_Config.bMouseControl = !g_Config.bMouseControl; + } + break; case VIRTKEY_SCREENSHOT: if (down) g_TakeScreenshot = true; diff --git a/UI/GamepadEmu.cpp b/UI/GamepadEmu.cpp index 24cda3e3f7..15f9d8a737 100644 --- a/UI/GamepadEmu.cpp +++ b/UI/GamepadEmu.cpp @@ -70,8 +70,8 @@ void GamepadUpdateOpacity(float force) { g_gamepadOpacity = opacity * multiplier; } -void GamepadTouch() { - g_lastTouch = time_now_d(); +void GamepadTouch(bool reset) { + g_lastTouch = reset ? 0.0f : time_now_d(); } float GamepadGetOpacity() { diff --git a/UI/GamepadEmu.h b/UI/GamepadEmu.h index 4f5b3a2e6b..d110a527d4 100644 --- a/UI/GamepadEmu.h +++ b/UI/GamepadEmu.h @@ -369,6 +369,6 @@ namespace GestureKey { }; } -void GamepadTouch(); +void GamepadTouch(bool reset = false); void GamepadUpdateOpacity(float force = -1.0f); float GamepadGetOpacity();