Those are normalized to be in the [-1..1] range. Signed-off-by: Carlos Garnacho <carl...@gnome.org> --- src/evdev-tablet.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c index 70f3210..cc55c74 100644 --- a/src/evdev-tablet.c +++ b/src/evdev-tablet.c @@ -245,6 +245,16 @@ normalize_axis(const struct axis_info *axis_info) double range = axis_info->abs.maximum - axis_info->abs.minimum; double value = (axis_info->abs.value + axis_info->abs.minimum) / range; + switch (axis_info->axis) { + case LIBINPUT_POINTER_AXIS_VERTICAL_TILT: + case LIBINPUT_POINTER_AXIS_HORIZONTAL_TILT: + /* Map to the (-1,1) range */ + value = (value * 2) - 1; + break; + default: + break; + } + return value; } @@ -412,6 +422,19 @@ static struct evdev_dispatch_interface tablet_interface = { tablet_destroy }; +static void +tablet_init_axes(struct tablet_dispatch *tablet, + struct evdev_device *device) +{ + if (libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_X) && + libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_Y)) { + tablet_add_axis(tablet, device, ABS_TILT_X, + LIBINPUT_POINTER_AXIS_HORIZONTAL_TILT); + tablet_add_axis(tablet, device, ABS_TILT_Y, + LIBINPUT_POINTER_AXIS_VERTICAL_TILT); + } +} + static int tablet_init(struct tablet_dispatch *tablet, struct evdev_device *device) @@ -421,6 +444,8 @@ tablet_init(struct tablet_dispatch *tablet, tablet->status = TABLET_NONE; tablet->state.tool = LIBINPUT_TOOL_NONE; + tablet_init_axes(tablet, device); + return 0; } -- 1.9.0 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel