diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
index 5e69f0bca0..93a6f4391a 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
@@ -31,6 +31,8 @@ Cursor::Cursor(std::string name, std::string ui_name)
controls.emplace_back(std::make_unique(Translate, _trans("Hide")));
controls.emplace_back(std::make_unique(Translate, _trans("Recenter")));
+ controls.emplace_back(std::make_unique(Translate, _trans("Relative Input Hold")));
+
// Default values are optimized for "Super Mario Galaxy 2".
// This seems to be acceptable for a good number of games.
@@ -101,7 +103,7 @@ Cursor::StateData Cursor::GetState(const bool adjusted)
const double max_step = STEP_PER_SEC / 1000.0 * ms_since_update;
// Relative input:
- if (m_relative_setting.GetValue())
+ if (m_relative_setting.GetValue() ^ (controls[6]->control_ref->State() > BUTTON_THRESHOLD))
{
// Recenter:
if (controls[5]->control_ref->State() > BUTTON_THRESHOLD)