diff --git a/src/config/user_config.hpp b/src/config/user_config.hpp
index 05e1b2733..aa7bb8171 100644
--- a/src/config/user_config.hpp
+++ b/src/config/user_config.hpp
@@ -507,14 +507,12 @@ namespace UserConfigParams
PARAM_PREFIX FloatUserConfigParam m_multitouch_sensitivity_x
PARAM_DEFAULT( FloatUserConfigParam(0.1f, "multitouch_sensitivity_x",
&m_multitouch_group,
- "A parameter in range [0, 0.5] that determines the zone for y axis "
- "that is considered as max value in steering button."));
+ "A parameter in range [0, 1.0] that determines the sensitivity for x axis."));
PARAM_PREFIX FloatUserConfigParam m_multitouch_sensitivity_y
- PARAM_DEFAULT( FloatUserConfigParam(0.5f, "multitouch_sensitivity_y",
+ PARAM_DEFAULT( FloatUserConfigParam(0.65f, "multitouch_sensitivity_y",
&m_multitouch_group,
- "A parameter in range [0, 0.5] that determines the zone for y axis "
- "that is considered as max value in steering button."));
+ "A parameter in range [0, 1.0] that determines the sensitivity for y axis."));
PARAM_PREFIX FloatUserConfigParam m_multitouch_tilt_factor
PARAM_DEFAULT( FloatUserConfigParam(4.0f, "multitouch_tilt_factor",
diff --git a/src/input/multitouch_device.cpp b/src/input/multitouch_device.cpp
index eb5408fff..54a5c8c67 100644
--- a/src/input/multitouch_device.cpp
+++ b/src/input/multitouch_device.cpp
@@ -356,26 +356,29 @@ void MultitouchDevice::updateConfigParams()
m_deadzone = std::min(std::max(m_deadzone, 0.0f), 0.5f);
m_sensitivity_x = UserConfigParams::m_multitouch_sensitivity_x;
- m_sensitivity_x = std::min(std::max(m_sensitivity_x, 0.0f), 0.5f);
+ m_sensitivity_x = std::min(std::max(m_sensitivity_x, 0.0f), 1.0f);
m_sensitivity_y = UserConfigParams::m_multitouch_sensitivity_y;
- m_sensitivity_y = std::min(std::max(m_sensitivity_y, 0.0f), 0.5f);
+ m_sensitivity_y = std::min(std::max(m_sensitivity_y, 0.0f), 1.0f);
} // updateConfigParams
// ----------------------------------------------------------------------------
/** Helper function that returns a steering factor for steering button.
* \param value The axis value from 0 to 1.
- * \param sensitivity Value from 0 to 0.5.
+ * \param sensitivity Value from 0 to 1.0.
*/
float MultitouchDevice::getSteeringFactor(float value, float sensitivity)
{
- if (sensitivity + m_deadzone >= 1.0f)
+ if (m_deadzone >= 1.0f)
+ return 0.0f;
+
+ if (sensitivity >= 1.0f)
return 1.0f;
- assert(sensitivity + m_deadzone != 1.0f);
-
- return std::min((value - m_deadzone) / (1.0f - sensitivity -
- m_deadzone), 1.0f);
+ float factor = (value - m_deadzone) / (1.0f - m_deadzone);
+ factor *= 1.0f / (1.0f - sensitivity);
+
+ return std::min(factor, 1.0f);
}
// ----------------------------------------------------------------------------
diff --git a/src/input/multitouch_device.hpp b/src/input/multitouch_device.hpp
index e343fdd36..b92064b01 100644
--- a/src/input/multitouch_device.hpp
+++ b/src/input/multitouch_device.hpp
@@ -83,12 +83,10 @@ private:
* in a center of button */
float m_deadzone;
- /** A parameter that determines the zone for x axis that is considered as
- * max value in steering button. */
+ /** A parameter in range that determines the sensitivity for x axis. */
float m_sensitivity_x;
- /** A parameter that determines the zone for y axis that is considered as
- * max value in steering button. */
+ /** A parameter in range that determines the sensitivity for y axis. */
float m_sensitivity_y;
float m_orientation;