[PATCH v5 wayland] protocol: add wl_pointer.frame, axis_source, axis_stop, and axis_discrete

Peter Hutterer peter.hutterer at who-t.net
Mon Nov 16 16:30:28 PST 2015


On Mon, Nov 16, 2015 at 12:02:14PM +0000, Auke Booij wrote:
> On 28 October 2015 at 05:34, Peter Hutterer <peter.hutterer at who-t.net> wrote:
> > The frame event groups separate pointer events together. The primary use-case
> > for this at the moment is diagonal scrolling - a vertical/horizontal scroll
> > event can be grouped together to calculate the correct motion vector.
> > Frame events group all wl_pointer events. An example sequence of motion events
> > followed by a diagonal scroll followed by a button event is:
> > wl_pointer.motion
> > wl_pointer.frame
> > wl_pointer.motion
> > wl_pointer.frame
> > wl_pointer.axis
> > wl_pointer.axis
> > wl_pointer.frame
> > wl_pointer.button
> > wl_pointer.frame
> >
> > In the future, other extensions may insert additional information about an
> > event into the frame. For example, an extension may add information about the
> > physical device that generated an event into the frame. For this reason,
> > enter/leave events are grouped by a frame event too.
> >
> > The axis_source event determines how an axis event was generated. That enables
> > clients to judge when to use kinetic scrolling. Only one axis_source event is
> > allowed per frame and applies to all events in this frame.
> >
> > The axis_stop event notifies a client about the termination of a scroll
> > sequence, likewise needed to calculate kinetic scrolling parameters.
> > Multiple axis_stop events within the same frame indicate that scrolling has
> > stopped in all these axis at the same time.
> >
> > The axis_discrete event provides the wheel click count. Previously the axis
> > value was some hardcoded number (10), with the discrete steps this enables a
> > client to differ between line-based scrolling on a mouse wheel and smooth
> > scrolling with a touchpad.
> >
> > We can't extend the existing wl_pointer.axis events so we introduce a new
> > concept: latching events. These events (currently only axis_discrete)
> > are prefixed before a wl_pointer.axis event. A client must build the full
> > state of the event until the respective top-level event arrives.
> > i.e. a single event frame for a diagonal scroll with discrete information may
> > be:
> >
> > wl_pointer.axis_source
> > wl_pointer.axis_discrete
> > wl_pointer.axis
> > wl_pointer.axis_discrete
> > wl_pointer.axis
> > wl_pointer.frame
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> 
> (as for your tablet protocol patch) Perhaps we can use the enum
> attribute here as well:
> 
>  <arg name="axis_source" type="uint" enum="axis_source"/>
> ...
>  <arg name="axis" type="uint" enum="axis_source" summary="the axis
> stopped with this event"/>
> ...
>  <arg name="axis" type="uint" enum="axis_source"/>

fwiw, the latter two are just enum="axis". I've merged this in locally now,
thanks.

Cheers,
   Peter



More information about the wayland-devel mailing list