Handle deadzone better

This commit is contained in:
Iwan Timmer
2014-10-24 16:47:22 +02:00
parent 8ce9d8e8d8
commit 597b4a48db
2 changed files with 11 additions and 4 deletions
+8 -4
View File
@@ -55,8 +55,10 @@ public class EvdevAbsolute {
return reverse?Short.MIN_VALUE:Short.MAX_VALUE; return reverse?Short.MIN_VALUE:Short.MAX_VALUE;
else if (value<avg-range) else if (value<avg-range)
return reverse?Short.MAX_VALUE:Short.MIN_VALUE; return reverse?Short.MAX_VALUE:Short.MIN_VALUE;
else else {
return (short) ((value-avg) * Short.MAX_VALUE / (reverse?-range:range)); value += value<avg?flat:-flat;
return (short) ((value-avg) * Short.MAX_VALUE / (reverse?flat-range:range-flat));
}
} }
/** /**
@@ -71,8 +73,10 @@ public class EvdevAbsolute {
return reverse?Byte.MIN_VALUE:Byte.MAX_VALUE; return reverse?Byte.MIN_VALUE:Byte.MAX_VALUE;
else if (value<avg-range) else if (value<avg-range)
return reverse?Byte.MAX_VALUE:Byte.MIN_VALUE; return reverse?Byte.MAX_VALUE:Byte.MIN_VALUE;
else else {
return (byte) ((value-avg) * Byte.MAX_VALUE / (reverse?-range:range)); value += value<avg?flat:-flat;
return (byte) ((value-avg) * Byte.MAX_VALUE / (reverse?flat-range:range-flat));
}
} }
/** /**
@@ -38,6 +38,9 @@ public class EvdevHandler extends EvdevReader {
this.conn = conn; this.conn = conn;
this.mapping = mapping; this.mapping = mapping;
// We want limelight-common to scale the axis values to match Xinput values
ControllerPacket.enableAxisScaling = true;
absLX = new EvdevAbsolute(device, mapping.abs_x, mapping.reverse_x); absLX = new EvdevAbsolute(device, mapping.abs_x, mapping.reverse_x);
absLY = new EvdevAbsolute(device, mapping.abs_y, !mapping.reverse_y); absLY = new EvdevAbsolute(device, mapping.abs_y, !mapping.reverse_y);
absRX = new EvdevAbsolute(device, mapping.abs_rx, mapping.reverse_rx); absRX = new EvdevAbsolute(device, mapping.abs_rx, mapping.reverse_rx);