From 78d2bd9dad714c7d4d47f24fd320e33681c2e190 Mon Sep 17 00:00:00 2001 From: Louis Goyard Date: Tue, 12 Mar 2024 00:08:31 +0900 Subject: [PATCH] tablet: add tablet tool scrolling to debug tools --- tools/libinput-debug-events.c | 35 +++++++++++++++++++++++++++++++++-- tools/libinput-debug-gui.c | 20 +++++++++++++++++++- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/tools/libinput-debug-events.c b/tools/libinput-debug-events.c index 287d792e..301df11b 100644 --- a/tools/libinput-debug-events.c +++ b/tools/libinput-debug-events.c @@ -496,8 +496,39 @@ print_tablet_button_event(struct libinput_event *ev) static void print_tablet_tool_scroll_event(struct libinput_event *ev) { - // FIXME: done in a later commit - printq("FIXME"); + struct libinput_event_tablet_tool *t = libinput_event_get_tablet_tool_event(ev); + double v = 0, h = 0; + const char *have_vert = "", + *have_horiz = ""; + const char *source = NULL; + enum libinput_pointer_axis axis; + enum libinput_event_type type; + + type = libinput_event_get_type(ev); + + switch (type) { + case LIBINPUT_EVENT_TABLET_TOOL_SCROLL_CONTINUOUS: + source = "continuous"; + break; + default: + abort(); + break; + } + + axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL; + if (libinput_event_tablet_tool_has_axis(t, axis)) { + v = libinput_event_tablet_tool_get_scroll_value(t, axis); + have_vert = "*"; + } + axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL; + if (libinput_event_tablet_tool_has_axis(t, axis)) { + h = libinput_event_tablet_tool_get_scroll_value(t, axis); + have_horiz = "*"; + } + + printq("vert %.2f%s horiz %.2f%s (%s)\n", + v, have_vert, + h, have_horiz, source); } static void diff --git a/tools/libinput-debug-gui.c b/tools/libinput-debug-gui.c index 503b7a7d..2c232b8c 100644 --- a/tools/libinput-debug-gui.c +++ b/tools/libinput-debug-gui.c @@ -1513,7 +1513,25 @@ handle_event_pointer_axis(struct libinput_event *ev, struct window *w) static void handle_event_tablet_tool_axis(struct libinput_event *ev, struct window *w) { - // FIXME: done in a later commit + struct libinput_event_tablet_tool *p = libinput_event_get_tablet_tool_event(ev); + double value; + enum libinput_pointer_axis axis; + + assert(p != NULL); + + axis = LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL; + if (libinput_event_tablet_tool_has_axis(p, axis)) { + value = libinput_event_tablet_tool_get_scroll_value(p, axis); + w->scroll.vy += value; + w->scroll.vy = clip(w->scroll.vy, 0, w->height); + } + + axis = LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL; + if (libinput_event_tablet_tool_has_axis(p, axis)) { + value = libinput_event_tablet_tool_get_scroll_value(p, axis); + w->scroll.hx += value; + w->scroll.hx = clip(w->scroll.hx, 0, w->width); + } } static void