Those are normalized to be in the [-1..1] range.
Signed-off-by: Carlos Garnacho <[email protected]>
---
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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel