• Michal Malý's avatar
    HID: hid-lg4ff: Adjust X axis input value accordingly to selected range. · 2b24a960
    Michal Malý authored
    Range limiting command for the Driving Force Pro wheel is only a FF_SPRING
    effect so that the wheel creates resistance when the user tries to turn it past
    the limit. It is however possible to overpower the FFB motors quite easily which
    leads to the X axis value exceeding the expected limit. This confuses
    games which dynamically adjust calibration using the highest/lowest min and max
    values reported by the wheel. Joydev device driver also doesn't take in account
    any changes in an axis range after the joystick device is created.
    
    This patch recalculates received ABS_X axis value so it is always in
    <0; 16383> range where 0 is the left limit and 16383 the right limit.
    Logitech driver for Windows does the same thing.  As for any concerns about
    possible loss of precision, I compared a large set of raw/adjusted values
    generated by "mult_frac" to values returned by the Windows driver and I got
    a 100% match.
    
    Other Logitech wheels will probably need a similar fix, but I currently lack
    the information needed to write one.
    Signed-off-by: default avatarMichal Malý <madcatxster@gmail.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    2b24a960
hid-lg4ff.c 19 KB