2 #ifndef _GESTUREPROTO_H_
3 #define _GESTUREPROTO_H_
5 #include <X11/extensions/gestureconst.h>
11 #define GESTURE_EXT_NAME "X Gesture Extension"
13 #define GESTURE_MAJOR 0 /* current version numbers */
14 #define GESTURE_MINOR 1
15 #define GESTURE_PATCH 0
18 #define X_GestureQueryVersion 0
19 #define X_GestureSelectEvents 1
20 #define X_GestureGetSelectedEvents 2
21 #define X_GestureGrabEvent 3
22 #define X_GestureUngrabEvent 4
25 typedef struct _GestureSelectEvents {
26 CARD8 reqType; /* always GestureReqCode */
27 CARD8 gestureReqType; /* always X_GestureSelectEvents */
31 } xGestureSelectEventsReq;
32 #define sz_xGestureSelectEventsReq 12
34 typedef struct _GestureGetSelectedEvents {
35 CARD8 reqType; /* always GestureReqCode */
36 CARD8 gestureReqType; /* always X_GestureGetSelectedEvents */
39 } xGestureGetSelectedEventsReq;
40 #define sz_xGestureGetSelectedEventsReq 8
42 typedef struct _GestureGrabEvent {
43 CARD8 reqType; /* always GestureReqCode */
44 CARD8 gestureReqType; /* always X_GestureGrabEvent */
47 CARD32 eventType B32; /* gesture event type such as "GestureNotifyFlick" */
48 CARD8 num_finger; /* number of fingers in a gesture event */
51 Time time B32; /* client request timestamp */
52 } xGestureGrabEventReq;
53 #define sz_xGestureGrabEventReq 20
55 typedef struct _GestureUngrabEvent {
56 CARD8 reqType; /* always GestureReqCode */
57 CARD8 gestureReqType; /* always X_GestureUngrabEvent */
60 CARD32 eventType B32; /* gesture event type such as "GestureNotifyFlick" */
61 CARD8 num_finger; /* number of fingers in a gesture event */
64 Time time B32; /* client request timestamp */
65 } xGestureUngrabEventReq;
66 #define sz_xGestureUngrabEventReq 20
68 typedef struct _GestureQueryVersion {
69 CARD8 reqType; /* always GestureReqCode */
70 CARD8 gestureReqType; /* always X_GestureQueryVersion */
72 } xGestureQueryVersionReq;
73 #define sz_xGestureQueryVersionReq 4
75 //replys for synchronous reqs
77 BYTE type; /* X_Reply */
79 CARD16 sequenceNumber B16;
87 } xGestureGetSelectedEventsReply;
88 #define sz_xGestureGetSelectedEventsReply 32
91 BYTE type; /* X_Reply */
93 CARD16 sequenceNumber B16;
101 } xGestureGrabEventReply;
102 #define sz_xGestureGrabEventReply 32
105 BYTE type; /* X_Reply */
107 CARD16 sequenceNumber B16;
115 } xGestureUngrabEventReply;
116 #define sz_xGestureUngrabEventReply 32
119 BYTE type; /* X_Reply */
121 CARD16 sequenceNumber B16;
123 CARD16 majorVersion B16; /* major version of Gesture extension protocol */
124 CARD16 minorVersion B16; /* minor version of Gesture extension protocol */
125 CARD32 patchVersion B32; /* patch version of Gesture extension protocol */
130 } xGestureQueryVersionReply;
131 #define sz_xGestureQueryVersionReply 32
134 typedef struct _GestureNotifyGroup {
135 BYTE type; /* always GestureEventBase + event type */
136 BYTE kind; /* subevent type : GestureNotifyGroup */
137 CARD16 sequenceNumber B16;
139 Time time B32; /* server timestamp when event happened */
147 } xGestureNotifyGroupEvent;
148 #define sz_xGestureNotifyGroupEvent 32
150 typedef struct _GestureNotifyFlick {
151 BYTE type; /* always GestureEventBase + event type */
152 BYTE kind; /* subevent type : GestureNotifyFlick */
153 CARD16 sequenceNumber B16;
155 Time time B32; /* server timestamp when event happened */
157 CARD8 direction; /* 8 way direction (0 ~ 7) */
158 CARD16 distance B16; /* distance between first point and last point (pixel) */
159 Time duration B32; /* time difference between press and release (ms) */
160 Fixed angle B32; /* angel difference between horizontal line and flick line (radian) */
163 } xGestureNotifyFlickEvent;
164 #define sz_xGestureNotifyFlickEvent 32
166 typedef struct _GestureNotifyPan {
167 BYTE type; /* always GestureEventBase + event type */
168 BYTE kind; /* subevent type : GestureNotifyPan */
169 CARD16 sequenceNumber B16;
171 Time time B32; /* server timestamp when event happened */
173 CARD8 direction; /* 8 way direction (0 ~ 7) */
174 CARD16 distance B16; /* distance between first point and last point (pixel)*/
175 Time duration B32; /* time difference between press and release (ms) */
176 CARD16 dx B16; /* x coordinate delta */
177 CARD16 dy B16; /* y coordinate delta */
180 } xGestureNotifyPanEvent;
181 #define sz_xGestureNotifyPanEvent 32
183 typedef struct _GestureNotifyPinchRotation {
184 BYTE type; /* always GestureEventBase + event type */
185 BYTE kind; /* subevent type : GestureNotifyPinchRotation */
186 CARD16 sequenceNumber B16;
188 Time time B32; /* server timestamp when event happened */
191 CARD16 distance B16; /* distance from center (pixel) */
192 CARD16 cx B16; /* center x coordinate */
193 CARD16 cy B16; /* center y coordinate */
194 Fixed zoom B32; /* zoom factor (base : 1.0) */
195 Fixed angle B32; /* angel difference between first line and current line (radian) */
197 } xGestureNotifyPinchRotationEvent;
198 #define sz_xGestureNotifyPinchRotationEvent 32
200 typedef struct _GestureNotifyTap {
201 BYTE type; /* always GestureEventBase + event type */
202 BYTE kind; /* subevent type : GestureNotifyTap */
203 CARD16 sequenceNumber B16;
205 Time time B32; /* server timestamp when event happened */
208 CARD16 cx B16; /* center x coordinate */
209 CARD16 cy B16; /* center y coordinate */
210 CARD8 tap_repeat; /* tap repeats such as SINGLE_TAP, DBL_TAP and so on */
212 CARD32 interval; /* time difference between tap and previous tap (ms) */
215 } xGestureNotifyTapEvent;
216 #define sz_xGestureNotifyTapEvent 32
218 typedef struct _GestureNotifyTapNHold {
219 BYTE type; /* always GestureEventBase + event type */
220 BYTE kind; /* subevent type : GestureNotifyTapNHold */
221 CARD16 sequenceNumber B16;
223 Time time B32; /* server timestamp when event happened */
226 CARD16 cx B16; /* center x coordinate */
227 CARD16 cy B16; /* center y coordinate */
229 Time interval B32; /* time difference between tap and hold (ms) */
230 Time holdtime B32; /* hold time (ms) */
232 } xGestureNotifyTapNHoldEvent;
233 #define sz_xGestureNotifyTapNHoldEvent 32
235 typedef struct _GestureNotifyHold {
236 BYTE type; /* always GestureEventBase + event type */
237 BYTE kind; /* subevent type : GestureNotifyHold */
238 CARD16 sequenceNumber B16;
240 Time time B32; /* server timestamp when event happened */
243 CARD16 cx B16; /* center x coordinate */
244 CARD16 cy B16; /* center y coordinate */
246 Time holdtime B32; /* hold time (ms) */
249 } xGestureNotifyHoldEvent;
250 #define sz_xGestureNotifyHoldEvent 32
252 union _xGestureCommonEvent {
256 CARD16 sequenceNumber B16;
260 xGestureNotifyGroupEvent gev;
261 xGestureNotifyFlickEvent fev;
262 xGestureNotifyPanEvent pev;
263 xGestureNotifyPinchRotationEvent pcrev;
264 xGestureNotifyTapEvent tev;
265 xGestureNotifyTapNHoldEvent thev;
266 xGestureNotifyHoldEvent hev;
269 typedef union _xGestureCommonEvent xGestureCommonEvent;
271 #endif//_GESTUREPROTO_H_