diff --git a/Core/KeyMap.cpp b/Core/KeyMap.cpp index 980329ee4108..f52072bb64a1 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 de9334d32e82..6b0301c2f69f 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 c0cbcd9cf560..ae24eb9cf7cd 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 24cda3e3f7f4..15f9d8a7377d 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 4f5b3a2e6bc6..d110a527d423 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();