Minor tweak to touchpad jitter compensation code

This commit is contained in:
Travis Nickles 2017-08-18 20:52:11 -05:00
parent 560777710d
commit f0d967cd63

View File

@ -231,32 +231,30 @@ namespace DS4Windows
int signX = System.Math.Sign(deltaX); int signX = System.Math.Sign(deltaX);
int signY = System.Math.Sign(deltaY); int signY = System.Math.Sign(deltaY);
double coefficient = Global.getTouchSensitivity(deviceNumber) * 0.01; double coefficient = Global.getTouchSensitivity(deviceNumber) * 0.01;
bool touchpadCompenstation = Global.getTouchpadJitterCompensation(deviceNumber); bool jitterCompenstation = Global.getTouchpadJitterCompensation(deviceNumber);
// Collect rounding errors instead of losing motion.
double xMotion = deltaX != 0 ? double xMotion = deltaX != 0 ?
coefficient * deltaX + (normX * (TOUCHPAD_MOUSE_OFFSET * signX)) : 0.0; coefficient * deltaX + (normX * (TOUCHPAD_MOUSE_OFFSET * signX)) : 0.0;
double yMotion = deltaY != 0 ? double yMotion = deltaY != 0 ?
coefficient * deltaY + (normY * (TOUCHPAD_MOUSE_OFFSET * signY)) : 0.0; coefficient * deltaY + (normY * (TOUCHPAD_MOUSE_OFFSET * signY)) : 0.0;
if (touchpadCompenstation) if (jitterCompenstation)
{ {
double absX = System.Math.Abs(xMotion); double absX = System.Math.Abs(xMotion);
if (absX <= normX * 1.0) if (absX <= normX * 1.0)
{ {
int signx = System.Math.Sign(xMotion); xMotion = signX * System.Math.Pow(absX, 1.0725);
xMotion = signx * System.Math.Pow(absX, 1.0725);
} }
double absY = System.Math.Abs(yMotion); double absY = System.Math.Abs(yMotion);
if (absY <= normY * 1.0) if (absY <= normY * 1.0)
{ {
int signy = System.Math.Sign(yMotion); yMotion = signY * System.Math.Pow(absY, 1.0725);
yMotion = signy * System.Math.Pow(absY, 1.0725);
} }
} }
// Collect rounding errors instead of losing motion.
if (xMotion > 0.0 && horizontalRemainder > 0.0) if (xMotion > 0.0 && horizontalRemainder > 0.0)
{ {
xMotion += horizontalRemainder; xMotion += horizontalRemainder;