2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Permission to use, copy, modify, distribute, and sell this software
5 * and its documentation for any purpose is hereby granted without
6 * fee, provided that the above copyright notice appear in all copies
7 * and that both that copyright notice and this permission notice
8 * appear in supporting documentation, and that the name of Red Hat
9 * not be used in advertising or publicity pertaining to distribution
10 * of the software without specific, written prior permission. Red
11 * Hat makes no representations about the suitability of this software
12 * for any purpose. It is provided "as is" without express or implied
15 * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
17 * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
19 * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
20 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
21 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 #ifndef _GESTUREPROTO_H_
26 #define _GESTUREPROTO_H_
28 #include <X11/extensions/gestureconst.h>
34 #define GESTURE_EXT_NAME "X Gesture Extension"
36 #define GESTURE_MAJOR 0 /* current version numbers */
37 #define GESTURE_MINOR 1
38 #define GESTURE_PATCH 0
41 #define X_GestureQueryVersion 0
42 #define X_GestureSelectEvents 1
43 #define X_GestureGetSelectedEvents 2
44 #define X_GestureGrabEvent 3
45 #define X_GestureUngrabEvent 4
48 typedef struct _GestureSelectEvents {
49 CARD8 reqType; /* always GestureReqCode */
50 CARD8 gestureReqType; /* always X_GestureSelectEvents */
54 } xGestureSelectEventsReq;
55 #define sz_xGestureSelectEventsReq 12
57 typedef struct _GestureGetSelectedEvents {
58 CARD8 reqType; /* always GestureReqCode */
59 CARD8 gestureReqType; /* always X_GestureGetSelectedEvents */
62 } xGestureGetSelectedEventsReq;
63 #define sz_xGestureGetSelectedEventsReq 8
65 typedef struct _GestureGrabEvent {
66 CARD8 reqType; /* always GestureReqCode */
67 CARD8 gestureReqType; /* always X_GestureGrabEvent */
70 CARD32 eventType B32; /* gesture event type such as "GestureNotifyFlick" */
71 CARD8 num_finger; /* number of fingers in a gesture event */
74 Time time B32; /* client request timestamp */
75 } xGestureGrabEventReq;
76 #define sz_xGestureGrabEventReq 20
78 typedef struct _GestureUngrabEvent {
79 CARD8 reqType; /* always GestureReqCode */
80 CARD8 gestureReqType; /* always X_GestureUngrabEvent */
83 CARD32 eventType B32; /* gesture event type such as "GestureNotifyFlick" */
84 CARD8 num_finger; /* number of fingers in a gesture event */
87 Time time B32; /* client request timestamp */
88 } xGestureUngrabEventReq;
89 #define sz_xGestureUngrabEventReq 20
91 typedef struct _GestureQueryVersion {
92 CARD8 reqType; /* always GestureReqCode */
93 CARD8 gestureReqType; /* always X_GestureQueryVersion */
95 } xGestureQueryVersionReq;
96 #define sz_xGestureQueryVersionReq 4
98 //replys for synchronous reqs
100 BYTE type; /* X_Reply */
102 CARD16 sequenceNumber B16;
110 } xGestureGetSelectedEventsReply;
111 #define sz_xGestureGetSelectedEventsReply 32
114 BYTE type; /* X_Reply */
116 CARD16 sequenceNumber B16;
124 } xGestureGrabEventReply;
125 #define sz_xGestureGrabEventReply 32
128 BYTE type; /* X_Reply */
130 CARD16 sequenceNumber B16;
138 } xGestureUngrabEventReply;
139 #define sz_xGestureUngrabEventReply 32
142 BYTE type; /* X_Reply */
144 CARD16 sequenceNumber B16;
146 CARD16 majorVersion B16; /* major version of Gesture extension protocol */
147 CARD16 minorVersion B16; /* minor version of Gesture extension protocol */
148 CARD32 patchVersion B32; /* patch version of Gesture extension protocol */
153 } xGestureQueryVersionReply;
154 #define sz_xGestureQueryVersionReply 32
157 typedef struct _GestureNotifyGroup {
158 BYTE type; /* always GestureEventBase + event type */
159 BYTE kind; /* subevent type : GestureNotifyGroup */
160 CARD16 sequenceNumber B16;
162 Time time B32; /* server timestamp when event happened */
170 } xGestureNotifyGroupEvent;
171 #define sz_xGestureNotifyGroupEvent 32
173 typedef struct _GestureNotifyFlick {
174 BYTE type; /* always GestureEventBase + event type */
175 BYTE kind; /* subevent type : GestureNotifyFlick */
176 CARD16 sequenceNumber B16;
178 Time time B32; /* server timestamp when event happened */
180 CARD8 direction; /* 8 way direction (0 ~ 7) */
181 CARD16 distance B16; /* distance between first point and last point (pixel) */
182 Time duration B32; /* time difference between press and release (ms) */
183 Fixed angle B32; /* angel difference between horizontal line and flick line (radian) */
186 } xGestureNotifyFlickEvent;
187 #define sz_xGestureNotifyFlickEvent 32
189 typedef struct _GestureNotifyPan {
190 BYTE type; /* always GestureEventBase + event type */
191 BYTE kind; /* subevent type : GestureNotifyPan */
192 CARD16 sequenceNumber B16;
194 Time time B32; /* server timestamp when event happened */
196 CARD8 direction; /* 8 way direction (0 ~ 7) */
197 CARD16 distance B16; /* distance between first point and last point (pixel)*/
198 Time duration B32; /* time difference between press and release (ms) */
199 CARD16 dx B16; /* x coordinate delta */
200 CARD16 dy B16; /* y coordinate delta */
203 } xGestureNotifyPanEvent;
204 #define sz_xGestureNotifyPanEvent 32
206 typedef struct _GestureNotifyPinchRotation {
207 BYTE type; /* always GestureEventBase + event type */
208 BYTE kind; /* subevent type : GestureNotifyPinchRotation */
209 CARD16 sequenceNumber B16;
211 Time time B32; /* server timestamp when event happened */
214 CARD16 distance B16; /* distance from center (pixel) */
215 CARD16 cx B16; /* center x coordinate */
216 CARD16 cy B16; /* center y coordinate */
217 Fixed zoom B32; /* zoom factor (base : 1.0) */
218 Fixed angle B32; /* angel difference between first line and current line (radian) */
220 } xGestureNotifyPinchRotationEvent;
221 #define sz_xGestureNotifyPinchRotationEvent 32
223 typedef struct _GestureNotifyTap {
224 BYTE type; /* always GestureEventBase + event type */
225 BYTE kind; /* subevent type : GestureNotifyTap */
226 CARD16 sequenceNumber B16;
228 Time time B32; /* server timestamp when event happened */
231 CARD16 cx B16; /* center x coordinate */
232 CARD16 cy B16; /* center y coordinate */
233 CARD8 tap_repeat; /* tap repeats such as SINGLE_TAP, DBL_TAP and so on */
235 CARD32 interval; /* time difference between tap and previous tap (ms) */
238 } xGestureNotifyTapEvent;
239 #define sz_xGestureNotifyTapEvent 32
241 typedef struct _GestureNotifyTapNHold {
242 BYTE type; /* always GestureEventBase + event type */
243 BYTE kind; /* subevent type : GestureNotifyTapNHold */
244 CARD16 sequenceNumber B16;
246 Time time B32; /* server timestamp when event happened */
249 CARD16 cx B16; /* center x coordinate */
250 CARD16 cy B16; /* center y coordinate */
252 Time interval B32; /* time difference between tap and hold (ms) */
253 Time holdtime B32; /* hold time (ms) */
255 } xGestureNotifyTapNHoldEvent;
256 #define sz_xGestureNotifyTapNHoldEvent 32
258 typedef struct _GestureNotifyHold {
259 BYTE type; /* always GestureEventBase + event type */
260 BYTE kind; /* subevent type : GestureNotifyHold */
261 CARD16 sequenceNumber B16;
263 Time time B32; /* server timestamp when event happened */
266 CARD16 cx B16; /* center x coordinate */
267 CARD16 cy B16; /* center y coordinate */
269 Time holdtime B32; /* hold time (ms) */
272 } xGestureNotifyHoldEvent;
273 #define sz_xGestureNotifyHoldEvent 32
275 union _xGestureCommonEvent {
279 CARD16 sequenceNumber B16;
283 xGestureNotifyGroupEvent gev;
284 xGestureNotifyFlickEvent fev;
285 xGestureNotifyPanEvent pev;
286 xGestureNotifyPinchRotationEvent pcrev;
287 xGestureNotifyTapEvent tev;
288 xGestureNotifyTapNHoldEvent thev;
289 xGestureNotifyHoldEvent hev;
292 typedef union _xGestureCommonEvent xGestureCommonEvent;
294 #endif//_GESTUREPROTO_H_