Hello Peter, Thank you for your answer. My comments are below.
> -----Original Message----- > From: Peter Hutterer [mailto:peter.hutte...@who-t.net] > Sent: Freitag, 5. Februar 2016 07:16 > To: Ucan, Emre (ADITG/SW1) > Cc: wayland-devel@lists.freedesktop.org; Friedrich, Eugen (ADITG/SW1) > Subject: Re: Using Soft Keys with Weston & Libinput > > On Thu, Feb 04, 2016 at 10:38:18AM +0000, Ucan, Emre (ADITG/SW1) wrote: > > Hi, > > > > We want to use soft keys with weston. > > > > The use-case is very similar to android that the touch panel is bigger than > the display. > > The out of display touch events should be routed to the clients as key > events. > > > > As far as I understood, It is not possible to realize this use-case in > > current weston implementation, because the coordinates of touch events > are scaled to width and height of the display with > libinput_event_touch_get_x(y)_transformed API. > > > > For example, when I touch a soft key (outside of display), the grab > > interface will still get a touch event in the range of display width and > > height, > and It will wrongly route this event to a wl_surface which is on the edge of > the display. Weston cannot recognize that the event happened outside of > the display. > > > > Is there a way to realize this use-case that I do not know ? > > short answer: you'll need code in weston to handle this. > > libinput doesn't care about the display, it merely takes the touch > coordinates, > the API then tells libinput to scale the range into that coordinate set. If > you > screen has an offset, you need to detect that and handle it separately but > that is not something weston currently does. > > with the current APIs what you'll need to do is check the mm value for the > display, calculate if it is outside the boundary you want and handle it > accordingly. if it is within the display boundary, then you can pass it on > normally. I think it is not correct to solve this problem in weston. How will I get mm value for the display in input.c ? I am not sure but we can get DPI information maybe from DRM. This would not work in current architecture of weston, because only drm backend plugin has access to drm device. I am sending a picture of a head-unit for visualization of the use-case: - On the left upper corner there is the shutdown soft key - On the left side of display there is the volume slider which should send axis events. - On the right side there are other soft keys. A similar problem is solved in libinput for touchpads: - If specific parts of touchpad is pressed, a button event is sent via evdev-mt-touchpad-buttons.c - If specific parts of touchpad is pressed, an axis event is sent via evdev-mt-touchpad-edge-scroll.c My idea is to extend this implementation to support key events (i.e evdev-mt-touchpad-keys.c) and configure location of soft keys via udev-rules. The soft-keys is a very important use-case for embedded devices, and I know that libinput is a DE oriented project. But I want to share this implementation (when it is finished), if it is interesting for the community. > > Cheers, > Peter Best regards Emre Ucan Software Group I (ADITG/SW1) Tel. +49 5121 49 6937
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel