[mutter/wip/garnacho/touchpad-gestures: 13/16] wayland: Add gestures protocol XML



commit f1d3bd6e7b92ebb28b9bb2479d89f45430f179ec
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Jul 17 13:57:43 2015 +0200

    wayland: Add gestures protocol XML

 src/Makefile.am                           |    3 +
 src/wayland/protocol/pointer-gestures.xml |  172 +++++++++++++++++++++++++++++
 2 files changed, 175 insertions(+), 0 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 0718c6b..353b598 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -45,6 +45,8 @@ mutter_built_sources = \
 
 if HAVE_WAYLAND
 mutter_built_sources += \
+       pointer-gestures-protocol.c             \
+       pointer-gestures-server-protocol.h      \
        gtk-shell-protocol.c                    \
        gtk-shell-server-protocol.h             \
        xdg-shell-protocol.c                    \
@@ -53,6 +55,7 @@ mutter_built_sources += \
 endif
 
 wayland_protocols =                            \
+       wayland/protocol/pointer-gestures.xml   \
        wayland/protocol/gtk-shell.xml          \
        wayland/protocol/xdg-shell.xml          \
        $(NULL)
diff --git a/src/wayland/protocol/pointer-gestures.xml b/src/wayland/protocol/pointer-gestures.xml
new file mode 100644
index 0000000..1bca8f7
--- /dev/null
+++ b/src/wayland/protocol/pointer-gestures.xml
@@ -0,0 +1,172 @@
+<protocol name="pointer_gestures">
+  <interface name="_wl_pointer_gestures" version="1">
+    <description summary="touchpad gestures">
+      A global interface to provide semantic touchpad gestures for a given
+      pointer.
+
+      Two gestures are currently supported: swipe and zoom/rotate.
+      All gestures follow a three-stage cycle: begin, update, end and
+      are identified by a unique id.
+
+      Warning! The protocol described in this file is experimental. Each
+      version of this protocol should be considered incompatible with any
+      other version, and a client binding to a version different to the one
+      advertised will be terminated. Once the protocol is declared stable,
+      compatibility is guaranteed, the '_' prefix will be removed from the
+      name and the version will be reset to 1.
+    </description>
+
+    <request name="get_swipe_gesture">
+      <description summary="get swipe gesture">
+       Create a swipe gesture object. See the
+       wl_pointer_gesture_swipe interface for details.
+      </description>
+      <arg name="id" type="new_id" interface="_wl_pointer_gesture_swipe"/>
+      <arg name="pointer" type="object" interface="wl_pointer"/>
+    </request>
+
+    <request name="get_pinch_gesture">
+      <description summary="get pinch gesture">
+       Create a pinch gesture object. See the
+       wl_pointer_gesture_pinch interface for details.
+      </description>
+      <arg name="id" type="new_id" interface="_wl_pointer_gesture_pinch"/>
+      <arg name="pointer" type="object" interface="wl_pointer"/>
+    </request>
+  </interface>
+
+  <interface name="_wl_pointer_gesture_swipe" version="1">
+    <description summary="a swipe gesture object">
+      A swipe gesture object notifies a client about a multi-finger swipe
+      gesture detected on an indirect input device such as a touchpad.
+      The gesture is usually initiated by multiple fingers moving in the
+      same direction but once initiated the direction may change.
+      The precise conditions of when 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
+      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">
+      <description summary="destroy the pointer swipe gesture object"/>
+    </request>
+
+    <event name="begin">
+      <description summary="multi-finger swipe begin">
+       This event is sent when a multi-finger swipe 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="update">
+      <description summary="multi-finger swipe motion">
+       This event is sent when a multi-finger swipe gesture changes the
+       position of the logical center.
+
+       The dx and dy coordinates are relative coordinates of the logical
+       center of the gesture compared to the previous event.
+      </description>
+      <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
+      <arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
+      <arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
+    </event>
+
+    <event name="end">
+      <description summary="multi-finger swipe end">
+       This event is sent when a multi-finger swipe gesture ceases to
+       be valid. This may happen when one or more finger is lifted or
+       the gesture is cancelled.
+
+       When a gesture is cancelled, the client should 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>
+
+  <interface name="_wl_pointer_gesture_pinch" version="1">
+    <description summary="a pinch gesture object">
+      A pinch gesture object notifies a client about a multi-finger pinch
+      gesture detected on an indirect input device such as a touchpad.
+      The gesture is usually initiated by multiple fingers moving towards
+      each other or away from each other, or by two or more fingers rotating
+      around a logical center of gravity.  The precise conditions of when
+      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
+      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">
+      <description summary="destroy the pinch gesture object"/>
+    </request>
+
+    <event name="begin">
+      <description summary="multi-finger pinch begin">
+       This event is sent when a multi-finger pinch 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="update">
+      <description summary="multi-finger pinch motion">
+       This event is sent when a multi-finger pinch gesture changes the
+       position of the logical center, the rotation or the relative scale.
+
+       The dx and dy coordinates are relative coordinates in the
+       surface coordinate space of the logical center of the gesture.
+
+       The scale factor is an absolute scale compared to the
+       pointer_gesture_pinch.begin event, e.g. a scale of 2 means the fingers
+       are now twice as far apart as on pointer_gesture_pinch.begin.
+
+       The rotation is the relative angle in degrees clockwise compared to the previous
+       pointer_gesture_pinch.begin or pointer_gesture_pinch.update event.
+      </description>
+      <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
+      <arg name="dx" type="fixed" summary="delta x coordinate in surface coordinate space"/>
+      <arg name="dy" type="fixed" summary="delta y coordinate in surface coordinate space"/>
+      <arg name="scale" type="fixed" summary="scale relative to the initial finger position"/>
+      <arg name="rotation" type="fixed" summary="angle in degrees cw relative to the previous event"/>
+    </event>
+
+    <event name="end">
+      <description summary="multi-finger pinch end">
+       This event is sent when a multi-finger pinch gesture ceases to
+       be valid. This may happen when one or more finger is lifted or
+       the gesture is cancelled.
+
+       When a gesture is cancelled, the client should 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>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]