mirror of
https://gitlab.freedesktop.org/wayland/wayland-protocols.git
synced 2025-12-20 04:40:06 +01:00
pointer-gestures: add hold gestures
Hold gestures merely denote "there are fingers on the touchpad but they are not moving". As touchpad touches are generally fully abstracted, a client cannot currently know when a user is interacting with the touchpad without moving - no motion events will be sent in this case. The two use-cases here are: - hold-to-interact: where a hold gesture is active for some time a menu could pop up, or some object is selected, etc. - hold-to-cancel: where e.g. kinetic scrolling is currently active, the start of a hold gesture can be used to stop the scroll Since hold gestures by definition do not have movement, there is no need for an "update" stage in the gesture. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
37c6035167
commit
824cea61e6
1 changed files with 75 additions and 8 deletions
|
|
@ -1,14 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="pointer_gestures_unstable_v1">
|
||||
|
||||
<interface name="zwp_pointer_gestures_v1" version="2">
|
||||
<interface name="zwp_pointer_gestures_v1" version="3">
|
||||
<description summary="touchpad gestures">
|
||||
A global interface to provide semantic touchpad gestures for a given
|
||||
pointer.
|
||||
|
||||
Two gestures are currently supported: swipe and pinch.
|
||||
All gestures follow a three-stage cycle: begin, update, end and
|
||||
are identified by a unique id.
|
||||
Three gestures are currently supported: swipe, pinch, and hold.
|
||||
Pinch and swipe gestures follow a three-stage cycle: begin, update,
|
||||
end, hold gestures follow a two-stage cycle: begin and end. All
|
||||
gestures are identified by a unique id.
|
||||
|
||||
Warning! The protocol described in this file is experimental and
|
||||
backward incompatible changes may be made. Backward compatible changes
|
||||
|
|
@ -42,10 +43,22 @@
|
|||
|
||||
<request name="release" type="destructor" since="2">
|
||||
<description summary="destroy the pointer gesture object">
|
||||
Destroy the pointer gesture object. Swipe and pinch objects created via this
|
||||
gesture object remain valid.
|
||||
Destroy the pointer gesture object. Swipe, pinch and hold objects
|
||||
created via this gesture object remain valid.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<!-- Version 3 additions -->
|
||||
|
||||
<request name="get_hold_gesture" since="3">
|
||||
<description summary="get hold gesture">
|
||||
Create a hold gesture object. See the
|
||||
wl_pointer_gesture_hold interface for details.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="zwp_pointer_gesture_hold_v1"/>
|
||||
<arg name="pointer" type="object" interface="wl_pointer"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
|
||||
<interface name="zwp_pointer_gesture_swipe_v1" version="2">
|
||||
|
|
@ -58,7 +71,7 @@
|
|||
implementation-dependent.
|
||||
|
||||
A gesture consists of three stages: begin, update (optional) and end.
|
||||
There cannot be multiple simultaneous pinch or swipe gestures on a
|
||||
There cannot be multiple simultaneous hold, pinch or swipe gestures on a
|
||||
same pointer/seat, how compositors prevent these situations is
|
||||
implementation-dependent.
|
||||
|
||||
|
|
@ -121,7 +134,7 @@
|
|||
such a gesture is detected are implementation-dependent.
|
||||
|
||||
A gesture consists of three stages: begin, update (optional) and end.
|
||||
There cannot be multiple simultaneous pinch or swipe gestures on a
|
||||
There cannot be multiple simultaneous hold, pinch or swipe gestures on a
|
||||
same pointer/seat, how compositors prevent these situations is
|
||||
implementation-dependent.
|
||||
|
||||
|
|
@ -181,6 +194,60 @@
|
|||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
|
||||
</event>
|
||||
|
||||
</interface>
|
||||
|
||||
<interface name="zwp_pointer_gesture_hold_v1" version="3">
|
||||
<description summary="a hold gesture object">
|
||||
A hold gesture object notifies a client about a single- or
|
||||
multi-finger hold gesture detected on an indirect input device such as
|
||||
a touchpad. The gesture is usually initiated by one or more fingers
|
||||
being held down without significant movement. The precise conditions
|
||||
of when such a gesture is detected are implementation-dependent.
|
||||
|
||||
In particular, this gesture may be used to cancel kinetic scrolling.
|
||||
|
||||
A hold gesture consists of two stages: begin and end. Unlike pinch and
|
||||
swipe there is no update stage.
|
||||
There cannot be multiple simultaneous hold, pinch or swipe gestures on a
|
||||
same pointer/seat, how compositors prevent these situations is
|
||||
implementation-dependent.
|
||||
|
||||
A gesture may be cancelled by the compositor or the hardware.
|
||||
Clients should not consider performing permanent or irreversible
|
||||
actions until the end of a gesture has been received.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor" since="3">
|
||||
<description summary="destroy the hold gesture object"/>
|
||||
</request>
|
||||
|
||||
<event name="begin" since="3">
|
||||
<description summary="multi-finger hold begin">
|
||||
This event is sent when a hold gesture is detected on the device.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
<arg name="fingers" type="uint" summary="number of fingers"/>
|
||||
</event>
|
||||
|
||||
<event name="end" since="3">
|
||||
<description summary="multi-finger hold end">
|
||||
This event is sent when a hold gesture ceases to
|
||||
be valid. This may happen when the holding fingers are lifted or
|
||||
the gesture is cancelled, for example if the fingers move past an
|
||||
implementation-defined threshold, the finger count changes or the hold
|
||||
gesture changes into a different type of gesture.
|
||||
|
||||
When a gesture is cancelled, the client may need to undo state changes
|
||||
caused by this gesture. What causes a gesture to be cancelled is
|
||||
implementation-dependent.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
<arg name="cancelled" type="int" summary="1 if the gesture was cancelled, 0 otherwise"/>
|
||||
</event>
|
||||
|
||||
</interface>
|
||||
</protocol>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue