[PATCH inputproto 2/2] Document smooth-scrolling support

Peter Hutterer peter.hutterer at who-t.net
Wed Jun 22 17:44:44 PDT 2011


On Thu, Jun 09, 2011 at 06:26:01PM +0100, Daniel Stone wrote:
> Two new axes are added to support smooth scrolling: Rel Vert Scroll and
> Rel Horiz Scroll.  Cumulative values of 1.0 with either magnitude on
> these axes are considered to be equivalent to one legacy ButtonPress
> event on the scroll buttons.
> 
> Signed-off-by: Daniel Stone <daniel at fooishbar.org>

one more question:
What do we do for backwards compatibility? 2.0 clients get both events?
2.0 clients won't see the flag after all and would be lead to think that
there's movement _and_ scrolling.

Cheers,
  Peter

> ---
>  specs/XI2proto.txt |   31 +++++++++++++++++++++++++++++--
>  1 files changed, 29 insertions(+), 2 deletions(-)
> 
> diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt
> index 63277ca..b37c914 100644
> --- a/specs/XI2proto.txt
> +++ b/specs/XI2proto.txt
> @@ -116,7 +116,31 @@ XI 1.x was not designed with support for multiple master devices (see Section
>  to XI 1.x clients, all other master devices are invisible and cannot be
>  accessed from XI 1.x calls.
>  
> -//                            ❧❧❧❧❧❧❧❧❧❧❧
> +3.4 Smooth scrolling
> +~~~~~~~~~~~~~~~~~~~~
> +
> +Historically, X implemented scrolling events by using button press events:
> +button 4 was one “click” of the scroll wheel upwards, button 5 was downwards,
> +button 6 was one unit of scrolling left, and button 7 was one unit of scrolling
> +right.  This was sufficient for scroll wheel mice, but not for touchpads which
> +are able to provide scrolling events through multi-finger drag gestures, or
> +simply dragging your finger along a designated strip along the side of the
> +touchpad.
> +
> +Newer X servers may provide 'Rel Vert Scroll' and 'Rel Horiz Scroll' valuators
> +to provide scroll events with more precision than the button events.  If these
> +valuators are provided, the server must provide two-way emulation between these
> +valuators and the legacy button events.  A cumulative value of 1.0 in either
> +magnitude is considered to be equivalent to one button event for the legacy
> +events, e.g., -2.0 on Rel Horiz Vert would send two button press/release events
> +for button 4.  Likewise, a button press event for button 7 should also generate
> +a Rel Horiz Scroll valuator event with a value of +1.0.
> +
> +Any server providing this behaviour should mark all button 4/5/6/7 events with
> +the XIPointerEmulated flag for DeviceEvents, and the XIRawEmulated flag for
> +raw events, to hint that applications should be using the new valuators in
> +preference to the buttons.
> +
>  
>  4. The Master/Slave device hierarchy
>  ------------------------------------
> @@ -1593,7 +1617,10 @@ KeyRelease, ButtonPress, ButtonRelease, Motion.
>          valid for KeyPress events.
>          PointerEmulated means that the event has been emulated from another
>          XI 2.x event for legacy client support, and that this event should
> -        be ignored if the client listens for these events.
> +        be ignored if the client listens for these events.  This flag will
> +        be set on scroll ButtonPress and RawButtonPress events (buttons 4,
> +        5, 6 and 7) if a smooth-scrolling event on the Rel Vert Scroll or
> +        Rel Horiz Scroll axes was also generated.
>  
>  Modifier state in mods is detailed as follows:
>  
> -- 
> 1.7.5.3
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list