[PATCH] protocol: Extend wl_touch with touch point shape

Dennis Kempin denniskempin at google.com
Fri Mar 25 16:36:57 UTC 2016


Hi everyone!

I am working with David Reveman on his implementation of a wayland
compositor in Chrome (see
https://code.google.com/p/chromium/codesearch#chromium/src/components/exo/
).
As part of that I have been looking into reporting information about
the shape of a touch, which is supported by most modern touch screen
devices. This information can be used by the client
for more complex touch interactions and improve gesture recognition
algorithms or provide a better experience in drawing apps.

So I would like to propose this change to add a shape event, which can
be used to report that information as an optional event. Since
wl_touch has recently gotten a frame event, the shape
event can be used in conjunction with that to report both location and
shape in a single frame.

Please let me know what you think about this patch. The reported
values closely follow the linux multitouch protocol (see:
https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt
).
Also please let me know if you would like me to look into implementing
this in weston before allowing this change into the protocol or any
other requirements.

Thanks!
- Dennis

On Fri, Mar 25, 2016 at 9:29 AM, Dennis Kempin <denniskempin at google.com> wrote:
> This CL updates the wl_touch interface with a shape event.
> The shape of a touch point is not relevant for most UI
> applications, but allows a better experience in some cases
> such as drawing app.
>
> The shape event is used by the compositor to inform the client
> about changes in the shape of a touchpoint. That shape is
> described by an ellipsis, which directly relates to the Linux
> Multitouch Protocol ABS_TOUCH_MAJOR / MINOR /
> ORIENTATION axes.
>
> The event is optional and only sent when the compositor and
> the touch device support this type of information. The client is
> responsible for making a reasonable assumption about the
> touch shape if no shape is reported.
> ---
>  protocol/wayland.xml | 28 ++++++++++++++++++++++++----
>  1 file changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> index 8739cd3..85256ea 100644
> --- a/protocol/wayland.xml
> +++ b/protocol/wayland.xml
> @@ -1656,7 +1656,7 @@
>      </request>
>     </interface>
>
> -  <interface name="wl_seat" version="5">
> +  <interface name="wl_seat" version="6">
>      <description summary="group of input devices">
>        A seat is a group of keyboards, pointer and touch devices. This
>        object is published as a global during start up, or when such a
> @@ -1765,7 +1765,7 @@
>
>    </interface>
>
> -  <interface name="wl_pointer" version="5">
> +  <interface name="wl_pointer" version="6">
>      <description summary="pointer input device">
>        The wl_pointer interface represents one or more input devices,
>        such as mice, which control the pointer location and pointer_focus
> @@ -2078,7 +2078,7 @@
>      </event>
>    </interface>
>
> -  <interface name="wl_keyboard" version="5">
> +  <interface name="wl_keyboard" version="6">
>      <description summary="keyboard input device">
>        The wl_keyboard interface represents one or more keyboards
>        associated with a seat.
> @@ -2192,7 +2192,7 @@
>      </event>
>    </interface>
>
> -  <interface name="wl_touch" version="5">
> +  <interface name="wl_touch" version="6">
>      <description summary="touchscreen input device">
>        The wl_touch interface represents a touchscreen
>        associated with a seat.
> @@ -2262,6 +2262,26 @@
>      <request name="release" type="destructor" since="3">
>        <description summary="release the touch object"/>
>      </request>
> +
> +    <!-- Version 6 additions -->
> +
> +    <event name="shape" since="6">
> +      <description summary="update shape of touch point">
> +  Sent when a touchpoint has changed its shape, this event can be included
> +  in the same frame as the contact point list to update position and shape
> +  simultaneously.
> +  A touchpoint shape is described by an ellipsis through a major and minor axis
> +  length and orientation.
> +  This event is only sent by the compositor if the touch device supports shape
> +  reports. The client has to make reasonable assumptions about the shape if
> +  it did not receive this message.
> +      </description>
> +      <arg name="id" type="int" summary="the unique ID of this touch point"/>
> +      <arg name="major" type="fixed" summary="length of the major
> axis in surface space"/>
> +      <arg name="minor" type="fixed" summary="length of the minor
> axis in surface space"/>
> +      <arg name="orientation" type="fixed" summary="orientation of
> ellipsis in radians."/>
> +    </event>
> +
>    </interface>
>
>    <interface name="wl_output" version="2">
> --
> 2.8.0.rc3.226.g39d4020


More information about the wayland-devel mailing list