summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPovilas Kanapickas <povilas@radix.lt>2020-09-21 04:03:43 +0300
committerPovilas Kanapickas <povilas@radix.lt>2021-05-11 01:45:27 +0300
commitd74ffaed9183a94d47bc7397b14a2fd21d67e230 (patch)
tree0aabc580e6c001f61492237f7b6991fa75b1bbe8
parenteec0adee25847de29ab1a41bba530612451361a5 (diff)
include: Add support for XI 2.4 gesture input events
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
-rw-r--r--include/X11/extensions/XI2.h18
-rw-r--r--include/X11/extensions/XI2proto.h77
2 files changed, 93 insertions, 2 deletions
diff --git a/include/X11/extensions/XI2.h b/include/X11/extensions/XI2.h
index 5a1c66a..cc47085 100644
--- a/include/X11/extensions/XI2.h
+++ b/include/X11/extensions/XI2.h
@@ -30,7 +30,7 @@
See commit libXi-1.4.2-21-ge8531dd */
#define XI_2_Major 2
-#define XI_2_Minor 3
+#define XI_2_Minor 4
/* Property event flags */
#define XIPropertyDeleted 0
@@ -85,6 +85,8 @@
#define XIGrabtypeEnter 2
#define XIGrabtypeFocusIn 3
#define XIGrabtypeTouchBegin 4
+#define XIGrabtypeGesturePinchBegin 5
+#define XIGrabtypeGestureSwipeBegin 6
/* Passive grab modifier */
#define XIAnyModifier (1U << 31)
@@ -142,6 +144,7 @@
#define XIValuatorClass 2
#define XIScrollClass 3
#define XITouchClass 8
+#define XIGestureClass 9
/* Scroll class types */
#define XIScrollTypeVertical 1
@@ -164,6 +167,11 @@
#define XIBarrierPointerReleased (1 << 0)
#define XIBarrierDeviceIsGrabbed (1 << 1)
+/* Gesture pinch event flags */
+#define XIGesturePinchEventCancelled (1 << 0)
+
+/* Gesture swipe event flags */
+#define XIGestureSwipeEventCancelled (1 << 0)
/* Touch modes */
#define XIDirectTouch 1
@@ -206,7 +214,13 @@
#define XI_RawTouchEnd 24
#define XI_BarrierHit 25 /* XI 2.3 */
#define XI_BarrierLeave 26
-#define XI_LASTEVENT XI_BarrierLeave
+#define XI_GesturePinchBegin 27 /* XI 2.4 */
+#define XI_GesturePinchUpdate 28
+#define XI_GesturePinchEnd 29
+#define XI_GestureSwipeBegin 30
+#define XI_GestureSwipeUpdate 31
+#define XI_GestureSwipeEnd 32
+#define XI_LASTEVENT XI_GestureSwipeEnd
/* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value
* as XI_LASTEVENT if the server is supposed to handle masks etc. for this
* type of event. */
diff --git a/include/X11/extensions/XI2proto.h b/include/X11/extensions/XI2proto.h
index a1133b5..aaeac7b 100644
--- a/include/X11/extensions/XI2proto.h
+++ b/include/X11/extensions/XI2proto.h
@@ -219,6 +219,17 @@ typedef struct {
} xXITouchInfo;
/**
+ * Denotes touchpad gesture capability on a device.
+ */
+typedef struct {
+ uint16_t type; /**< Always GestureClass */
+ uint16_t length; /**< Length in 4 byte units */
+ uint16_t sourceid; /**< source device for this class */
+ uint8_t num_touches; /**< Maximum number of touches gesture supports (0==unlimited) */
+ uint8_t pad0;
+} xXIGestureInfo;
+
+/**
* Used to select for events on a given window.
* Struct is followed by (mask_len * CARD8), with each bit set representing
* the event mask for the given type. A mask bit represents an event type if
@@ -1083,6 +1094,72 @@ typedef xXIBarrierEvent xXIBarrierHitEvent;
typedef xXIBarrierEvent xXIBarrierPointerReleasedEvent;
typedef xXIBarrierEvent xXIBarrierLeaveEvent;
+/**
+ * Event for touchpad gesture pinch input events
+ */
+typedef struct
+{
+ uint8_t type; /**< Always GenericEvent */
+ uint8_t extension; /**< XI extension offset */
+ uint16_t sequenceNumber;
+ uint32_t length; /**< Length in 4 byte uints */
+ uint16_t evtype;
+ uint16_t deviceid;
+ Time time;
+ uint32_t detail; /**< The number of touches in the gesture */
+ Window root;
+ Window event;
+ Window child;
+/* └──────── 32 byte boundary ────────┘ */
+ FP1616 root_x; /**< Always screen coords, 16.16 fixed point */
+ FP1616 root_y;
+ FP1616 event_x; /**< Always screen coords, 16.16 fixed point */
+ FP1616 event_y;
+ FP1616 delta_x;
+ FP1616 delta_y;
+ FP1616 delta_unaccel_x;
+ FP1616 delta_unaccel_y;
+ FP1616 scale;
+ FP1616 delta_angle;
+ uint16_t sourceid; /**< The source device */
+ uint16_t pad0;
+ xXIModifierInfo mods;
+ xXIGroupInfo group;
+ uint32_t flags; /**< ::XIGesturePinchEventCancelled */
+} xXIGesturePinchEvent;
+
+/**
+ * Event for touchpad gesture swipe input events
+ */
+typedef struct
+{
+ uint8_t type; /**< Always GenericEvent */
+ uint8_t extension; /**< XI extension offset */
+ uint16_t sequenceNumber;
+ uint32_t length; /**< Length in 4 byte uints */
+ uint16_t evtype;
+ uint16_t deviceid;
+ Time time;
+ uint32_t detail; /**< The number of touches in the gesture */
+ Window root;
+ Window event;
+ Window child;
+/* └──────── 32 byte boundary ────────┘ */
+ FP1616 root_x; /**< Always screen coords, 16.16 fixed point */
+ FP1616 root_y;
+ FP1616 event_x; /**< Always screen coords, 16.16 fixed point */
+ FP1616 event_y;
+ FP1616 delta_x;
+ FP1616 delta_y;
+ FP1616 delta_unaccel_x;
+ FP1616 delta_unaccel_y;
+ uint16_t sourceid; /**< The source device */
+ uint16_t pad0;
+ xXIModifierInfo mods;
+ xXIGroupInfo group;
+ uint32_t flags; /**< ::XIGestureSwipeEventCancelled */
+} xXIGestureSwipeEvent;
+
#undef Window
#undef Time
#undef Atom