From ef1ee837e4473c552bf3db4e9b3edfe3ee19cec7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 8 Jan 2026 17:13:32 +1000 Subject: [PATCH] test: allow overriding any axis value Previously test devices had to set LITEST_AUTO_ASSIGN to be able to override an axis-specific value. But this prevented us from easily overriding other axis values (e.g. tablet tool ids) that usually have the same value. LITEST_AUTO_ASSIGN should indicate a value that must always be auto-assigned, that makes a lot more sense. This does mean we need to handle ABS_MT_TRACKING_ID -1 to avoid that getting overwritten by auto_assign_tablet_value() but oh well. Part-of: --- test/litest.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/litest.c b/test/litest.c index 26fc2bb0..5e8f65aa 100644 --- a/test/litest.c +++ b/test/litest.c @@ -2885,7 +2885,7 @@ auto_assign_tablet_value(struct litest_device *d, static int tracking_id; int value = ev->value; - if (value != LITEST_AUTO_ASSIGN || ev->type != EV_ABS) + if (ev->type != EV_ABS) return value; switch (ev->code) { @@ -2902,7 +2902,7 @@ auto_assign_tablet_value(struct litest_device *d, break; default: if (!axis_replacement_value(d, axes, ev->code, &value) && - d->interface->get_axis_default) { + value == LITEST_AUTO_ASSIGN && d->interface->get_axis_default) { int error = d->interface->get_axis_default(d, ev->code, &value); if (error) { litest_abort_msg( @@ -3000,6 +3000,12 @@ litest_tablet_proximity_out(struct litest_device *d) case evbit(EV_KEY, LITEST_BTN_TOOL_AUTO): litest_tool_event(d, ev->value); break; + case evbit(EV_ABS, ABS_MT_TRACKING_ID): + if (ev->value == -1) { + litest_event(d, ev->type, ev->code, ev->value); + break; + } + _fallthrough_; default: value = auto_assign_tablet_value(d, ev, 0, 0, NULL); if (!tablet_ignore_event(ev, value))