From cb07da198b78b00dd60b9c2b697778414777f85c Mon Sep 17 00:00:00 2001 From: The Dax Date: Sat, 16 Aug 2014 15:05:37 -0400 Subject: [PATCH] Make the keyboard analog limiter customisable. --- Core/Config.cpp | 4 +++- Core/Config.h | 3 +++ UI/EmuScreen.cpp | 4 ++-- UI/GameSettingsScreen.cpp | 7 +++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index 04ea53e84c..d4843aa36c 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -541,7 +541,9 @@ static ConfigSetting controlSettings[] = { ConfigSetting("AnalogStickX", &g_Config.fAnalogStickX, -1.0f), ConfigSetting("AnalogStickY", &g_Config.fAnalogStickY, -1.0f), ConfigSetting("AnalogStickScale", &g_Config.fAnalogStickScale, defaultControlScale), - +#if !defined(MOBILE_DEVICE) + ConfigSetting("AnalogLimiterDeadzone", &g_Config.fAnalogLimiterDeadzone, 0.5f), +#endif ConfigSetting(false), }; diff --git a/Core/Config.h b/Core/Config.h index f262a4710a..5966c87344 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -248,6 +248,9 @@ public: bool bHapticFeedback; +#if !defined(MOBILE_DEVICE) + float fAnalogLimiterDeadzone; +#endif // 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..45637e5378 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -350,10 +350,13 @@ 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) +#if !defined(MOBILE_DEVICE) 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())); +#endif // #if !defined(MOBILE_DEVICE) // System ViewGroup *systemSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));