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

View File

@@ -55,8 +55,10 @@ public class EvdevAbsolute {
return reverse?Short.MIN_VALUE:Short.MAX_VALUE;
else if (value<avg-range)
return reverse?Short.MAX_VALUE:Short.MIN_VALUE;
else
return (short) ((value-avg) * Short.MAX_VALUE / (reverse?-range:range));
else {
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;
else if (value<avg-range)
return reverse?Byte.MAX_VALUE:Byte.MIN_VALUE;
else
return (byte) ((value-avg) * Byte.MAX_VALUE / (reverse?-range:range));
else {
value += value<avg?flat:-flat;
return (byte) ((value-avg) * Byte.MAX_VALUE / (reverse?flat-range:range-flat));
}
}
/**

View File

@@ -38,6 +38,9 @@ public class EvdevHandler extends EvdevReader {
this.conn = conn;
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);
absLY = new EvdevAbsolute(device, mapping.abs_y, !mapping.reverse_y);
absRX = new EvdevAbsolute(device, mapping.abs_rx, mapping.reverse_rx);