How to support wl_touch input? (when developing clients)
Peter Hutterer
peter.hutterer at who-t.net
Wed May 8 01:19:56 UTC 2024
On Tue, May 07, 2024 at 09:27:36PM +1000, Campbell Barton wrote:
> Hi, what are some ways to test "wl_touch" events?
>
> - Is it possible to make track-pads use the wl_touch interface?
generally - no. most general-purpose compositors use libinput which
converts the touch points on touchpads into pointer movement and thus
compositors forward those as wl_pointer events.
> - Is there a way to emulate touch input using a mouse?
> - If specific hardware is needed, any suggestions?
A few options:
you can emulate any device with uinput (or uhid if you want to also
test the kernel). the simplest way is to get a recording from a device
with libinput record and then replay that locally with libinput replay.
that requires that you find a touchscreen and execute the sequence
though. I have one, so here's a gist I recorded:
https://gist.github.com/whot/8000f803836db1425a7a1e920c10cf85
Alternatively, you can create a uinput device that attaches to your
touchpad, sets INPUT_PROP_DIRECT and otherwise forwards event 1:1.
https://python-libevdev.readthedocs.io/en/latest/examples.html
should help with that.
finally, you can put a quirk with
AttrInputProp=+INPUT_PROP_DIRECT;-INPUT_PROP_BUTTONPAD
that should make libinput treat your device like a touchscreen (though
you'll also need a udev rule to remove ID_INPUT_TOUCHPAD and instead set
ID_INPUT_TOUCHSCREEN, or hack that into libinput's evdev.c).
https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html
I'd personally go with the record/replay approach, it's the simplest one and
you can re-play that exact same sequence until whatever bug you're
seeing is fixed. docs on record/replay are here:
https://wayland.freedesktop.org/libinput/doc/latest/tools.html
Cheers,
Peter
> For context, recently a user reported a bug where touch events aren't
> supported (wl_touch), see: https://wayland-book.com/seat/touch.html
>
> While it seems fairly straightforward to support, I don't think I have any
> hardware that uses this interface & buying a Wacom touch-screen just to add
> support for wl_touch seems excessive (I already have a touch-pad &
> wacom-tablet, even though both support "touch" it it seems neither active
> the wl_touch API).
>
> Any suggestions for how to test that wl_touch support is working for
> application/toolkit developers?
>
>
>
More information about the wayland-devel
mailing list