回复: Re: get input device in wayland

WeiWei WeiNan97 at 163.com
Wed Nov 22 10:52:47 UTC 2023


Thank you very much, I will discuss this idea with the designer.

I'd like to ask, why the underlying device is not exposed in
current wayland-protocols, what are the benefits of doing this.

With keyboard and pointer, we don't usually care about 
physical device, but for touch devices, each touch device
will work independently and need input mapping and calibration,
is it possible to consider adding some device information
in wl_touch in the future.


从 Windows 版邮件发送

发件人: Peter Hutterer
发送时间: 2023年11月22日 14:45
收件人: weinan wang
抄送: wayland-devel at lists.freedesktop.org
主题: Re: Re: get input device in wayland

On Wed, Nov 22, 2023 at 09:22:56AM +0800, weinan wang wrote:
> Thanks for reply,
> We want to achieve an application for touch input map,
> it will map touch input to a output device when we have multi-screen.
> 
> The input map need provide a input device and a output device,
> in our design, we will traversal all screen to ask user "is this screen you
> want to map", and user choice a touch device by tap on a touch device,
> just like "touch config" feature in Windows11.
> 
> All in all, we want to achieve an application for touch input map, if have a batter
> design, i will discuss it with the designer.

There is no absolutely surefire way to do this as a pure Wayland
application but one possible UI flow would be:

- getting the list of touchscreens from udev [1]
- printing something like "Mapping screen 'Foo Vendor Touchscreen'" 
- display on output A with icons "this one", "nah, next one please"
- rotate through outputs until "this one" is clicked

You don't need to care whether the confirmation even comes from the
touchscreen.

Alternatively you can display on all screens simultaneously and assume
the button + screen that receives the "Yes" click are the one that want
the touchscreen.

Cheers,
  Peter

[1] slightly unreliable since there's no guarantee they're all handled
but most likely good enough

> At 2023-11-22 06:31:07, "Peter Hutterer" <peter.hutterer at who-t.net> wrote:
> >On Tue, Nov 21, 2023 at 04:20:10PM +0800, weinan wang wrote:
> >> Hey Guys,
> >> We have an application that needs to get the touch device
> >> corresponding to the touch event, and on X11, we can get the device ID
> >> that sends this event according to the XI_Touch events, and then find
> >> the device we want according to this ID.  But on Wayland, it seems
> >> that neither wl_seat nor wl_touch can get device-related information,
> >> this application is a user permission, so we can't use libinput to get
> >> more low-level events.
> >> Please ask if there is any other way to get the device that sends the
> >> event?
> >
> >This is not possible in wayland, physical devices are abstracted into
> >wl_pointer/wl_keyboard/wl_touch and the underlying device is not exposed
> >anywhere through wayland or even current wayland-protocols.
> >
> >The sole exception is the wl_tablet protocol which is per physical
> >device but that's due to how tablets are being used.
> >
> >You don't usually have access to the libinput context inside the
> >compositor either (because Wayland itself doesn't require libinput, it's
> >an implementation detail).
> >
> >The question here is: what are you trying to achieve? maybe there's a
> >different way to do it than having access to the specific physical
> >device.
> >
> >Cheers,
> >  Peter

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20231122/41e034ca/attachment-0001.htm>


More information about the wayland-devel mailing list