diff --git a/Common/KeyMap.cpp b/Common/KeyMap.cpp index 8a31095de9..6b3bfc5bad 100644 --- a/Common/KeyMap.cpp +++ b/Common/KeyMap.cpp @@ -630,9 +630,7 @@ const KeyMap_IntStrPair psp_button_names[] = { {VIRTKEY_AXIS_Y_MIN, "An.Down"}, {VIRTKEY_AXIS_X_MIN, "An.Left"}, {VIRTKEY_AXIS_X_MAX, "An.Right"}, -#ifndef MOBILE_DEVICE - { VIRTKEY_ANALOG_LIGHTLY, "Analog limiter" }, -#endif + {VIRTKEY_ANALOG_LIGHTLY, "Analog limiter"}, {VIRTKEY_RAPID_FIRE, "RapidFire"}, {VIRTKEY_UNTHROTTLE, "Unthrottle"}, diff --git a/Core/Config.cpp b/Core/Config.cpp index 04ea53e84c..d740dbae8d 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -541,6 +541,7 @@ static ConfigSetting controlSettings[] = { ConfigSetting("AnalogStickX", &g_Config.fAnalogStickX, -1.0f), ConfigSetting("AnalogStickY", &g_Config.fAnalogStickY, -1.0f), ConfigSetting("AnalogStickScale", &g_Config.fAnalogStickScale, defaultControlScale), + ConfigSetting("AnalogLimiterDeadzone", &g_Config.fAnalogLimiterDeadzone, 0.6f), ConfigSetting(false), }; diff --git a/Core/Config.h b/Core/Config.h index f262a4710a..a21be55426 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -248,6 +248,7 @@ public: bool bHapticFeedback; + float fAnalogLimiterDeadzone; // GLES backend-specific hacks. Not saved to the ini file, do not add checkboxes. Will be made into // proper options when good enough. // PrescaleUV: diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 22780f858c..d01cae3a31 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -372,7 +372,7 @@ void EmuScreen::onVKeyUp(int virtualKeyCode) { } inline void EmuScreen::setVKeyAnalogX(int stick, int virtualKeyMin, int virtualKeyMax) { - const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? 0.5f : 1.0f; + const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? g_Config.fAnalogLimiterDeadzone : 1.0f; float axis = 0.0f; // The down events can repeat, so just trust the virtKeys array. if (virtKeys[virtualKeyMin - VIRTKEY_FIRST]) @@ -383,7 +383,7 @@ inline void EmuScreen::setVKeyAnalogX(int stick, int virtualKeyMin, int virtualK } inline void EmuScreen::setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax) { - const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? 0.5f : 1.0f; + const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? g_Config.fAnalogLimiterDeadzone : 1.0f; float axis = 0.0f; if (virtKeys[virtualKeyMin - VIRTKEY_FIRST]) axis -= value; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index c32287bb7a..073bed439f 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -350,10 +350,11 @@ void GameSettingsScreen::CreateViews() { View *style = controlsSettings->Add(new PopupMultiChoice(&g_Config.iTouchButtonStyle, c->T("Button style"), touchControlStyles, 0, ARRAY_SIZE(touchControlStyles), c, screenManager())); style->SetEnabledPtr(&g_Config.bShowTouchControls); -#if defined(USING_WIN_UI) controlsSettings->Add(new ItemHeader(c->T("Keyboard", "Keyboard Control Settings"))); +#if defined(USING_WIN_UI) controlsSettings->Add(new CheckBox(&g_Config.bIgnoreWindowsKey, c->T("Ignore Windows Key"))); -#endif +#endif // #if defined(USING_WIN_UI) + controlsSettings->Add(new PopupSliderChoiceFloat(&g_Config.fAnalogLimiterDeadzone, 0.0f, 1.0f, "Analog Limiter", 0.10f, screenManager())); // System ViewGroup *systemSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT)); diff --git a/native b/native index 9b038d40be..2ba8e36b2b 160000 --- a/native +++ b/native @@ -1 +1 @@ -Subproject commit 9b038d40be391d0971e6d39ab1ae1afd1115e338 +Subproject commit 2ba8e36b2bde65021c9a5c0f937a0e3892c2ad62