On Nov 21 2025, Peter Hutterer wrote: > Instead of multiple spellings of a string-provided argument, let's make > this a tad more type-safe and use an enum here. > > And while we do this fix the two wrong devices: > - elan_04f3_313a (HP ZBook Fury 15) is discrete button pad > - dell_044e_1220 (Dell Precision 7740) is a discrete button pad > > Equivalent hid-tools commit > https://gitlab.freedesktop.org/libevdev/hid-tools/-/commit/8300a55bf4213c6a252cab8cb5b34c9ddb191625 > > Signed-off-by: Peter Hutterer <[email protected]> > --- > .../testing/selftests/hid/tests/test_multitouch.py | 24 > +++++++++++++--------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/tools/testing/selftests/hid/tests/test_multitouch.py > b/tools/testing/selftests/hid/tests/test_multitouch.py > index > ece0ba8e7d34b75d42245e5936ecf804c46b0846..a06a087f00b6991f7514adf7f8c713bef1a43563 > 100644 > --- a/tools/testing/selftests/hid/tests/test_multitouch.py > +++ b/tools/testing/selftests/hid/tests/test_multitouch.py > @@ -9,6 +9,7 @@ > from . import base > from hidtools.hut import HUT > from hidtools.util import BusType > +import enum > import libevdev > import logging > import pytest > @@ -232,11 +233,17 @@ class Digitizer(base.UHIDTestDevice): > return 0 > > > +class HIDButtonType(enum.IntEnum): > + CLICKPAD = 0 > + PRESSUREPAD = 1 > + DISCRETE_BUTTONS = 2 > + > + > class PTP(Digitizer): > def __init__( > self, > name, > - type="Click Pad", > + buttontype=HIDButtonType.CLICKPAD, > rdesc_str=None, > rdesc=None, > application="Touch Pad", > @@ -244,11 +251,8 @@ class PTP(Digitizer): > max_contacts=None, > input_info=None, > ): > - self.type = type.lower().replace(" ", "") > - if self.type == "clickpad": > - self.buttontype = 0 > - else: # pressurepad > - self.buttontype = 1 > + self.buttontype = buttontype > + > self.clickpad_state = False > self.left_state = False > self.right_state = False > @@ -983,7 +987,7 @@ class BaseTest: > uhdev = self.uhdev > evdev = uhdev.get_evdev() > > - if uhdev.type == "clickpad": > + if uhdev.buttontype == HIDButtonType.CLICKPAD: > r = uhdev.event(click=True) > events = uhdev.next_sync_events() > self.debug_reports(r, uhdev, events) > @@ -1918,7 +1922,7 @@ class Testdell_044e_1220(BaseTest.TestPTP): > def create_device(self): > return PTP( > "uhid test dell_044e_1220", > - type="pressurepad", > + buttontype=HIDButtonType.DISCRETE_BUTTONS, > rdesc="05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 > 03 15 00 25 01 75 01 95 03 81 02 95 05 81 01 05 01 09 30 09 31 15 81 25 > 7f 75 08 95 02 81 06 09 38 95 01 81 06 05 0c 0a 38 02 81 06 c0 c0 05 0d > 09 05 a1 01 85 08 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 > 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 af 04 75 > 10 55 0e 65 11 09 30 35 00 46 e8 03 95 01 81 02 26 7b 02 46 12 02 09 31 > 81 02 c0 55 0c 66 01 10 47 ff ff 00 00 27 ff ff 00 00 75 10 95 01 05 0d > 09 56 81 02 09 54 25 05 95 01 75 08 81 02 05 09 19 01 29 03 25 01 75 01 > 95 03 81 02 95 05 81 03 05 0d 85 09 09 55 75 08 95 01 25 05 b1 02 06 00 > ff 85 0a 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 c0 06 01 ff 09 01 a1 > 01 85 03 09 01 15 00 26 ff 00 95 1b 81 02 85 04 09 02 95 50 81 02 85 05 > 09 03 95 07 b1 02 85 06 09 04 81 02 c0 06 02 ff 09 01 a1 01 85 07 09 02 > 95 86 75 08 b1 02 c0 05 0d 09 0e a1 01 85 0b 09 22 a1 02 09 52 15 00 25 > 0a 75 08 95 01 b1 02 c0 09 22 a1 00 85 0c 09 57 09 58 75 01 95 02 25 01 > b1 02 95 06 b1 03 c0 c0",
Damn, I wanted to apply the patches, but this one is corrupt here (line wrapped). Cheers, Benjamin > ) > > @@ -2018,7 +2022,7 @@ class Testelan_04f3_313a(BaseTest.TestPTP): > def create_device(self): > return PTP( > "uhid test elan_04f3_313a", > - type="touchpad", > + buttontype=HIDButtonType.DISCRETE_BUTTONS, > input_info=(BusType.I2C, 0x04F3, 0x313A), > rdesc="05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 > 03 15 00 25 01 75 01 95 03 81 02 95 05 81 03 05 01 09 30 09 31 15 81 25 > 7f 75 08 95 02 81 06 75 08 95 05 81 03 c0 06 00 ff 09 01 85 0e 09 c5 15 > 00 26 ff 00 75 08 95 04 b1 02 85 0a 09 c6 15 00 26 ff 00 75 08 95 04 b1 > 02 c0 06 00 ff 09 01 a1 01 85 5c 09 01 95 0b 75 08 81 06 85 0d 09 c5 15 > 00 26 ff 00 75 08 95 04 b1 02 85 0c 09 c6 96 80 03 75 08 b1 02 85 0b 09 > c7 95 82 75 08 b1 02 c0 05 0d 09 05 a1 01 85 04 09 22 a1 02 15 00 25 01 > 09 47 09 42 95 02 75 01 81 02 05 09 09 02 09 03 15 00 25 01 75 01 95 02 > 81 02 05 0d 95 01 75 04 25 0f 09 51 81 02 05 01 15 00 26 d7 0e 75 10 55 > 0d 65 11 09 30 35 00 46 44 2f 95 01 81 02 46 12 16 26 eb 06 26 eb 06 09 > 31 81 02 05 0d 15 00 25 64 95 03 c0 55 0c 66 01 10 47 ff ff 00 00 27 ff > ff 00 00 75 10 95 01 09 56 81 02 09 54 25 7f 95 01 75 08 81 02 25 01 75 > 01 95 08 81 03 09 c5 75 08 95 02 81 03 05 0d 85 02 09 55 09 59 75 04 95 > 02 25 0f b1 02 85 07 09 60 75 01 95 01 15 00 25 01 b1 02 95 0f b1 03 06 > 00 ff 06 00 ff 85 06 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 c0 05 0d > 09 0e a1 01 85 03 09 22 a1 00 09 52 15 00 25 0a 75 10 95 01 b1 02 c0 09 > 22 a1 00 85 05 09 57 09 58 75 01 95 02 25 01 b1 02 95 0e b1 03 c0 c0 05 > 01 09 02 a1 01 85 2a 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 > 03 81 02 95 05 81 03 05 01 09 30 09 31 15 81 25 7f 35 81 45 7f 55 00 65 > 13 75 08 95 02 81 06 75 08 95 05 81 03 c0 c0", > ) > @@ -2110,7 +2114,7 @@ class Testsipodev_0603_0002(BaseTest.TestPTP): > def create_device(self): > return PTP( > "uhid test sipodev_0603_0002", > - type="clickpad", > + buttontype=HIDButtonType.CLICKPAD, > rdesc="05 01 09 02 a1 01 85 03 09 01 a1 00 05 09 19 01 29 > 02 25 01 75 01 95 02 81 02 95 06 81 03 05 01 09 30 09 31 15 80 25 7f 75 > 08 95 02 81 06 c0 c0 05 0d 09 05 a1 01 85 04 09 22 a1 02 15 00 25 01 09 > 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 05 09 51 81 > 02 05 01 15 00 26 44 0a 75 0c 55 0e 65 11 09 30 35 00 46 ac 03 95 01 81 > 02 46 fe 01 26 34 05 75 0c 09 31 81 02 05 0d c0 55 0c 66 01 10 47 ff ff > 00 00 27 ff ff 00 00 75 10 95 01 09 56 81 02 09 54 25 0a 95 01 75 04 81 > 02 75 01 95 03 81 03 05 09 09 01 25 01 75 01 95 01 81 02 05 0d 85 0a 09 > 55 09 59 75 04 95 02 25 0f b1 02 85 0b 09 60 75 01 95 01 15 00 25 01 b1 > 02 95 07 b1 03 85 09 06 00 ff 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 > c0 05 0d 09 0e a1 01 85 06 09 22 a1 02 09 52 15 00 25 0a 75 08 95 01 b1 > 02 c0 09 22 a1 00 85 07 09 57 09 58 75 01 95 02 25 01 b1 02 95 06 b1 03 > c0 c0 05 01 09 0c a1 01 85 08 15 00 25 01 09 c6 75 01 95 01 81 06 75 07 > 81 03 c0 05 01 09 80 a1 01 85 01 15 00 25 01 75 01 0a 81 00 0a 82 00 0a > 83 00 95 03 81 06 95 05 81 01 c0 06 0c 00 09 01 a1 01 85 02 25 01 15 00 > 75 01 0a b5 00 0a b6 00 0a b7 00 0a cd 00 0a e2 00 0a a2 00 0a e9 00 0a > ea 00 95 08 81 02 0a 83 01 0a 6f 00 0a 70 00 0a 88 01 0a 8a 01 0a 92 01 > 0a a8 02 0a 24 02 95 08 81 02 0a 21 02 0a 23 02 0a 96 01 0a 25 02 0a 26 > 02 0a 27 02 0a 23 02 0a b1 02 95 08 81 02 c0 06 00 ff 09 01 a1 01 85 05 > 15 00 26 ff 00 19 01 29 02 75 08 95 05 b1 02 c0", > ) > > > -- > 2.51.1 >

