diff --git a/src/evdev.c b/src/evdev.c index a5543023..dd3e2c9f 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -230,16 +230,21 @@ is_motion_event(struct input_event *e) static void transform_absolute(struct evdev_device *device) { + int32_t x, y; + if (!device->abs.apply_calibration) return; - device->abs.x = device->abs.x * device->abs.calibration[0] + - device->abs.y * device->abs.calibration[1] + - device->abs.calibration[2]; + x = device->abs.x * device->abs.calibration[0] + + device->abs.y * device->abs.calibration[1] + + device->abs.calibration[2]; + + y = device->abs.x * device->abs.calibration[3] + + device->abs.y * device->abs.calibration[4] + + device->abs.calibration[5]; - device->abs.y = device->abs.x * device->abs.calibration[3] + - device->abs.y * device->abs.calibration[4] + - device->abs.calibration[5]; + device->abs.x = x; + device->abs.y = y; } static void