- if (libevdev_has_event_code(device->evdev, EV_ABS, ABS_MT_POSITION_X) &&
- libevdev_has_event_code(device->evdev, EV_ABS, ABS_MT_POSITION_Y)) {
- absinfo = libevdev_get_abs_info(device->evdev, ABS_MT_POSITION_X);
- device->abs.min_x = absinfo->minimum;
- device->abs.max_x = absinfo->maximum;
- absinfo = libevdev_get_abs_info(device->evdev, ABS_MT_POSITION_Y);
- device->abs.min_y = absinfo->minimum;
- device->abs.max_y = absinfo->maximum;
+ if (libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_X) &&
+ libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_Y)) {
+ absinfo = libevdev_get_abs_info(evdev, ABS_MT_POSITION_X);
+ if (absinfo->resolution == 0) {
+ fixed = *absinfo;
+ fixed.resolution = 1;
+ libevdev_set_abs_info(evdev,
+ ABS_MT_POSITION_X,
+ &fixed);
+ }
+ device->abs.absinfo_x = absinfo;
+ absinfo = libevdev_get_abs_info(evdev, ABS_MT_POSITION_Y);
+ if (absinfo->resolution == 0) {
+ fixed = *absinfo;
+ fixed.resolution = 1;
+ libevdev_set_abs_info(evdev,
+ ABS_MT_POSITION_Y,
+ &fixed);
+ }
+ device->abs.absinfo_y = absinfo;