1 #ifndef _ECORE_X_H
2 #define _ECORE_X_H
3 
4 #include <Eina.h>
5 #include <Efl_Config.h>
6 
7 #ifdef EAPI
8 # undef EAPI
9 #endif // ifdef EAPI
10 
11 #ifdef __GNUC__
12 # if __GNUC__ >= 4
13 #  define EAPI __attribute__ ((visibility("default")))
14 # else // if __GNUC__ >= 4
15 #  define EAPI
16 # endif // if __GNUC__ >= 4
17 #else // ifdef __GNUC__
18 # define EAPI
19 #endif // ifdef __GNUC__
20 
21 EAPI double _ecore_x_vsync_wakeup_time_get(void);
22 
23 #define ECORE_X_VERSION_MAJOR EFL_VERSION_MAJOR
24 #define ECORE_X_VERSION_MINOR EFL_VERSION_MINOR
25 /**
26  * @typedef Ecore_X_Version
27  * Represents the current version of Ecore_X
28  */
29 typedef struct _Ecore_X_Version
30 {
31       int major; /** < major (binary or source incompatible changes) */
32       int minor; /** < minor (new features, bugfixes, major improvements version) */
33       int micro; /** < micro (bugfix, internal improvements, no new features version) */
34       int revision; /** < git revision (0 if a proper release or the git revision number Ecore_X is built from) */
35 } Ecore_X_Version;
36 
37 EAPI extern Ecore_X_Version *ecore_x_version;
38 
39 //legacy this was earlier there to indicate if we are running under xlib or xcb
40 #define HAVE_ECORE_X_XLIB 1
41 
42 #include <sys/types.h>
43 
44 /**
45  * @file
46  * @brief Ecore functions for dealing with the X Windows System
47  *
48  * @defgroup Ecore_X_Group Ecore_X - X11 Integration
49  * @ingroup Ecore
50  *
51  * Ecore_X provides a wrapper and convenience functions for using the
52  * X Windows System.  Function groups for this part of the library
53  * include the following:
54  * @li @ref Ecore_X_Init_Group
55  * @li @ref Ecore_X_Display_Attr_Group
56  * @li @ref Ecore_X_Flush_Group
57  * @li @ref Ecore_X_DPMS_Group
58  * @li @ref Ecore_X_Drawable_Group
59  * @li @ref Ecore_X_Pixmap_Group
60  * @li @ref Ecore_X_Window_Create_Group
61  * @li @ref Ecore_X_Window_Properties_Group
62  * @li @ref Ecore_X_Window_Destroy_Group
63  * @li @ref Ecore_X_Window_Visibility_Group
64  * @li @ref Ecore_X_Window_Geometry_Group
65  * @li @ref Ecore_X_Window_Focus_Functions
66  * @li @ref Ecore_X_Window_Z_Order_Group
67  * @li @ref Ecore_X_Window_Parent_Group
68  * @li @ref Ecore_X_Window_Shape
69  *
70  * The ECORE_X_SYNC environment variable will cause X calls to be run
71  * synchronously for easier debugging.
72  */
73 
74 typedef unsigned int   Ecore_X_ID;
75 #ifndef _ECORE_X_WINDOW_PREDEF
76 typedef Ecore_X_ID     Ecore_X_Window;
77 typedef Ecore_X_ID     Ecore_X_Pixmap;
78 typedef Ecore_X_ID     Ecore_X_Atom;
79 typedef struct _Ecore_X_Icon
80 {
81    unsigned int  width, height;
82    unsigned int *data;
83 } Ecore_X_Icon;
84 #endif // ifndef _ECORE_X_WINDOW_PREDEF
85 typedef void          *Ecore_X_Visual;
86 typedef Ecore_X_ID     Ecore_X_Drawable;
87 typedef void          *Ecore_X_GC;
88 typedef Ecore_X_ID     Ecore_X_Colormap;
89 typedef Ecore_X_ID     Ecore_X_Time;
90 typedef Ecore_X_ID     Ecore_X_Cursor;
91 typedef void           Ecore_X_Display;
92 typedef void           Ecore_X_Connection;
93 typedef void           Ecore_X_Screen;
94 typedef Ecore_X_ID     Ecore_X_Sync_Counter;
95 typedef Ecore_X_ID     Ecore_X_Sync_Alarm;
96 typedef Ecore_X_ID     Ecore_X_Sync_Fence; /**< @since 1.9 */
97 typedef void           Ecore_X_XRegion;
98 
99 typedef Ecore_X_ID     Ecore_X_Randr_Output;
100 typedef Ecore_X_ID     Ecore_X_Randr_Crtc;
101 typedef Ecore_X_ID     Ecore_X_Randr_Mode;
102 typedef unsigned short Ecore_X_Randr_Size_ID;
103 typedef int            Ecore_X_Randr_Screen;
104 
105 typedef Ecore_X_ID     Ecore_X_Device;
106 
107 #ifdef __cplusplus
108 extern "C" {
109 #endif // ifdef __cplusplus
110 
111 typedef struct _Ecore_X_Rectangle
112 {
113    int          x, y;
114    unsigned int width, height;
115 } Ecore_X_Rectangle;
116 
117 typedef enum _Ecore_X_GC_Value_Mask
118 {
119    ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0),
120    ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1),
121    ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2),
122    ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3),
123    ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4),
124    ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5),
125    ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6),
126    ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7),
127    ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8),
128    ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9),
129    ECORE_X_GC_VALUE_MASK_TILE = (1L << 10),
130    ECORE_X_GC_VALUE_MASK_STIPPLE = (1L << 11),
131    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X = (1L << 12),
132    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y = (1L << 13),
133    ECORE_X_GC_VALUE_MASK_FONT = (1L << 14),
134    ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15),
135    ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16),
136    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17),
137    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18),
138    ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19),
139    ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20),
140    ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21),
141    ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22)
142 } Ecore_X_GC_Value_Mask;
143 
144 typedef enum _Ecore_X_Composite_Update_Type
145 {
146    ECORE_X_COMPOSITE_UPDATE_AUTOMATIC,
147    ECORE_X_COMPOSITE_UPDATE_MANUAL
148 } Ecore_X_Composite_Update_Type;
149 
150 /**
151  * @typedef _Ecore_X_Window_State
152  * Defines the different states of the window of Ecore_X.
153  */
154 typedef enum _Ecore_X_Window_State
155 {
156    ECORE_X_WINDOW_STATE_UNKNOWN = 0,
157    ECORE_X_WINDOW_STATE_ICONIFIED,  /** The window is iconified. */
158    ECORE_X_WINDOW_STATE_MODAL,  /** The window is a modal dialog box. */
159    ECORE_X_WINDOW_STATE_STICKY, /** The window manager should keep the window's position fixed
160                                  * even if the virtual desktop scrolls. */
161    ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,  /** The window has the maximum vertical size. */
162    ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,  /** The window has the maximum horizontal size. */
163    ECORE_X_WINDOW_STATE_SHADED,  /** The window is shaded. */
164    ECORE_X_WINDOW_STATE_SKIP_TASKBAR,  /** The window should not be included in the taskbar. */
165    ECORE_X_WINDOW_STATE_SKIP_PAGER,  /** The window should not be included in the pager. */
166    ECORE_X_WINDOW_STATE_HIDDEN,  /** The window is invisible (i.e. minimized/iconified) */
167    ECORE_X_WINDOW_STATE_FULLSCREEN,  /** The window should fill the entire screen and have no
168                                       * window border/decorations */
169    ECORE_X_WINDOW_STATE_ABOVE,
170    ECORE_X_WINDOW_STATE_BELOW,
171    ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION
172 } Ecore_X_Window_State;
173 
174 typedef enum _Ecore_X_Window_State_Action
175 {
176    ECORE_X_WINDOW_STATE_ACTION_REMOVE,
177    ECORE_X_WINDOW_STATE_ACTION_ADD,
178    ECORE_X_WINDOW_STATE_ACTION_TOGGLE
179 } Ecore_X_Window_State_Action;
180 
181 typedef enum _Ecore_X_Window_Stack_Mode
182 {
183    ECORE_X_WINDOW_STACK_ABOVE = 0,
184    ECORE_X_WINDOW_STACK_BELOW = 1,
185    ECORE_X_WINDOW_STACK_TOP_IF = 2,
186    ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
187    ECORE_X_WINDOW_STACK_OPPOSITE = 4
188 } Ecore_X_Window_Stack_Mode;
189 
190 typedef enum _Ecore_X_Randr_Orientation
191 {
192    ECORE_X_RANDR_ORIENTATION_ROT_0 = (1 << 0),
193    ECORE_X_RANDR_ORIENTATION_ROT_90 = (1 << 1),
194    ECORE_X_RANDR_ORIENTATION_ROT_180 = (1 << 2),
195    ECORE_X_RANDR_ORIENTATION_ROT_270 = (1 << 3),
196    ECORE_X_RANDR_ORIENTATION_FLIP_X = (1 << 4),
197    ECORE_X_RANDR_ORIENTATION_FLIP_Y = (1 << 5)
198 } Ecore_X_Randr_Orientation;
199 
200 typedef enum _Ecore_X_Randr_Connection_Status
201 {
202    ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED = 0,
203    ECORE_X_RANDR_CONNECTION_STATUS_DISCONNECTED = 1,
204    ECORE_X_RANDR_CONNECTION_STATUS_UNKNOWN = 2
205 } Ecore_X_Randr_Connection_Status;
206 
207 typedef enum _Ecore_X_Randr_Output_Policy
208 {
209    ECORE_X_RANDR_OUTPUT_POLICY_ABOVE = 1,
210    ECORE_X_RANDR_OUTPUT_POLICY_RIGHT = 2,
211    ECORE_X_RANDR_OUTPUT_POLICY_BELOW = 3,
212    ECORE_X_RANDR_OUTPUT_POLICY_LEFT = 4,
213    ECORE_X_RANDR_OUTPUT_POLICY_CLONE = 5,
214    ECORE_X_RANDR_OUTPUT_POLICY_NONE = 6,
215    ECORE_X_RANDR_OUTPUT_POLICY_ASK = 7
216 } Ecore_X_Randr_Output_Policy;
217 
218 typedef enum _Ecore_X_Randr_Relative_Alignment
219 {
220    ECORE_X_RANDR_RELATIVE_ALIGNMENT_NONE = 0,
221    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_REL = 1,
222    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_SCR = 2
223 } Ecore_X_Randr_Relative_Alignment;
224 
225 typedef enum _Ecore_X_Render_Subpixel_Order
226 {
227    ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0,
228    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1,
229    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2,
230    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3,
231    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4,
232    ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5
233 } Ecore_X_Render_Subpixel_Order;
234 
235 typedef enum _Ecore_X_Randr_Edid_Display_Interface_Type
236 {
237    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_UNDEFINED,
238    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DVI,
239    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_A,
240    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_B,
241    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_MDDI,
242    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DISPLAY_PORT
243 } Ecore_X_Randr_Edid_Display_Interface_Type;
244 
245 typedef enum _Ecore_X_Randr_Edid_Display_Colorscheme
246 {
247    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_MONOCHROME_GRAYSCALE = 0x00,
248    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB = 0x08,
249    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_NON_RGB = 0x10,
250    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_UNDEFINED = 0x18,
251    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_4_4_4 = 0x444000,
252    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_4_4 = 0x444,
253    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_2_2 = 0x422
254 } Ecore_X_Randr_Edid_Display_Colorscheme;
255 
256 typedef enum _Ecore_X_Randr_Edid_Aspect_Ratio
257 {
258    ECORE_X_RANDR_EDID_ASPECT_RATIO_4_3 = 0x0,
259    ECORE_X_RANDR_EDID_ASPECT_RATIO_16_9 = 0x1,
260    ECORE_X_RANDR_EDID_ASPECT_RATIO_16_10 = 0x2,
261    ECORE_X_RANDR_EDID_ASPECT_RATIO_5_4 = 0x4,
262    ECORE_X_RANDR_EDID_ASPECT_RATIO_15_9 = 0x8
263 } Ecore_X_Randr_Edid_Aspect_Ratio;
264 
265 #define ECORE_X_RANDR_EDID_UNKNOWN_VALUE       -1
266 
267 #define ECORE_X_SELECTION_TARGET_TARGETS       "TARGETS"
268 #define ECORE_X_SELECTION_TARGET_TEXT          "TEXT"
269 #define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
270 #define ECORE_X_SELECTION_TARGET_STRING        "STRING"
271 #define ECORE_X_SELECTION_TARGET_UTF8_STRING   "UTF8_STRING"
272 #define ECORE_X_SELECTION_TARGET_FILENAME      "FILENAME"
273 #define ECORE_X_SELECTION_TARGET_X_MOZ_URL     "X_MOZ_URL"
274 
275 #define ECORE_X_DND_VERSION                    5
276 
277 typedef enum _Ecore_X_Selection
278 {
279    ECORE_X_SELECTION_PRIMARY,
280    ECORE_X_SELECTION_SECONDARY,
281    ECORE_X_SELECTION_XDND,
282    ECORE_X_SELECTION_CLIPBOARD,
283    ECORE_X_SELECTION_OTHER
284 } Ecore_X_Selection;
285 
286 typedef enum _Ecore_X_Event_Mode
287 {
288    ECORE_X_EVENT_MODE_NORMAL,
289    ECORE_X_EVENT_MODE_WHILE_GRABBED,
290    ECORE_X_EVENT_MODE_GRAB,
291    ECORE_X_EVENT_MODE_UNGRAB
292 } Ecore_X_Event_Mode;
293 
294 typedef enum _Ecore_X_Event_Detail
295 {
296    ECORE_X_EVENT_DETAIL_ANCESTOR,
297    ECORE_X_EVENT_DETAIL_VIRTUAL,
298    ECORE_X_EVENT_DETAIL_INFERIOR,
299    ECORE_X_EVENT_DETAIL_NON_LINEAR,
300    ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL,
301    ECORE_X_EVENT_DETAIL_POINTER,
302    ECORE_X_EVENT_DETAIL_POINTER_ROOT,
303    ECORE_X_EVENT_DETAIL_DETAIL_NONE
304 } Ecore_X_Event_Detail;
305 
306 typedef enum _Ecore_X_Event_Mask
307 {
308    ECORE_X_EVENT_MASK_NONE = 0L,
309    ECORE_X_EVENT_MASK_KEY_DOWN = (1L << 0),
310    ECORE_X_EVENT_MASK_KEY_UP = (1L << 1),
311    ECORE_X_EVENT_MASK_MOUSE_DOWN = (1L << 2),
312    ECORE_X_EVENT_MASK_MOUSE_UP = (1L << 3),
313    ECORE_X_EVENT_MASK_MOUSE_IN = (1L << 4),
314    ECORE_X_EVENT_MASK_MOUSE_OUT = (1L << 5),
315    ECORE_X_EVENT_MASK_MOUSE_MOVE = (1L << 6),
316    ECORE_X_EVENT_MASK_WINDOW_DAMAGE = (1L << 15),
317    ECORE_X_EVENT_MASK_WINDOW_VISIBILITY = (1L << 16),
318    ECORE_X_EVENT_MASK_WINDOW_CONFIGURE = (1L << 17),
319    ECORE_X_EVENT_MASK_WINDOW_RESIZE_MANAGE = (1L << 18),
320    ECORE_X_EVENT_MASK_WINDOW_MANAGE = (1L << 19),
321    ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE = (1L << 20),
322    ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE = (1L << 21),
323    ECORE_X_EVENT_MASK_WINDOW_PROPERTY = (1L << 22),
324    ECORE_X_EVENT_MASK_WINDOW_COLORMAP = (1L << 23),
325    ECORE_X_EVENT_MASK_WINDOW_GRAB = (1L << 24),
326    ECORE_X_EVENT_MASK_MOUSE_WHEEL = (1L << 29),
327    ECORE_X_EVENT_MASK_WINDOW_FOCUS_IN = (1L << 30),
328    ECORE_X_EVENT_MASK_WINDOW_FOCUS_OUT = (1L << 31)
329 } Ecore_X_Event_Mask;
330 
331 typedef enum _Ecore_X_Gravity
332 {
333    ECORE_X_GRAVITY_FORGET = 0,
334    ECORE_X_GRAVITY_UNMAP = 0,
335    ECORE_X_GRAVITY_NW = 1,
336    ECORE_X_GRAVITY_N = 2,
337    ECORE_X_GRAVITY_NE = 3,
338    ECORE_X_GRAVITY_W = 4,
339    ECORE_X_GRAVITY_CENTER = 5,
340    ECORE_X_GRAVITY_E = 6,
341    ECORE_X_GRAVITY_SW = 7,
342    ECORE_X_GRAVITY_S = 8,
343    ECORE_X_GRAVITY_SE = 9,
344    ECORE_X_GRAVITY_STATIC = 10
345 } Ecore_X_Gravity;
346 
347 /* Needed for ecore_x_region_window_shape_set */
348 typedef enum _Ecore_X_Shape_Type
349 {
350    ECORE_X_SHAPE_BOUNDING,
351    ECORE_X_SHAPE_CLIP,
352    ECORE_X_SHAPE_INPUT
353 } Ecore_X_Shape_Type;
354 
355 typedef enum _Ecore_X_Mapping_Type
356 {
357    ECORE_X_MAPPING_MODIFIER,
358    ECORE_X_MAPPING_KEYBOARD,
359    ECORE_X_MAPPING_MOUSE
360 } Ecore_X_Mapping_Type;
361 
362 typedef enum _Ecore_X_Randr_Property_Change
363 {
364    ECORE_X_RANDR_PROPERTY_CHANGE_ADD,
365    ECORE_X_RANDR_PROPERTY_CHANGE_DEL
366 } Ecore_X_Randr_Property_Change;
367 
368 typedef enum _Ecore_X_Netwm_Direction
369 {
370    ECORE_X_NETWM_DIRECTION_SIZE_TL = 0,
371    ECORE_X_NETWM_DIRECTION_SIZE_T = 1,
372    ECORE_X_NETWM_DIRECTION_SIZE_TR = 2,
373    ECORE_X_NETWM_DIRECTION_SIZE_R = 3,
374    ECORE_X_NETWM_DIRECTION_SIZE_BR = 4,
375    ECORE_X_NETWM_DIRECTION_SIZE_B = 5,
376    ECORE_X_NETWM_DIRECTION_SIZE_BL = 6,
377    ECORE_X_NETWM_DIRECTION_SIZE_L = 7,
378    ECORE_X_NETWM_DIRECTION_MOVE = 8,
379    ECORE_X_NETWM_DIRECTION_CANCEL = 11,
380 } Ecore_X_Netwm_Direction;
381 
382 /**
383  * @typedef _Ecore_X_Error_Code
384  * Defines the error codes of Ecore_X which wraps the X Window Systems
385  * protocol's errors.
386  *
387  * @since 1.7.0
388  */
389 typedef enum _Ecore_X_Error_Code
390 {
391    /** Everything is okay. */
392    ECORE_X_ERROR_CODE_SUCCESS = 0, /** Bad request code */
393    ECORE_X_ERROR_CODE_BAD_REQUEST = 1, /** Int parameter out of range */
394    ECORE_X_ERROR_CODE_BAD_VALUE = 2, /** Parameter not a Window */
395    ECORE_X_ERROR_CODE_BAD_WINDOW = 3, /** Parameter not a Pixmap */
396    ECORE_X_ERROR_CODE_BAD_PIXMAP = 4, /** Parameter not an Atom */
397    ECORE_X_ERROR_CODE_BAD_ATOM = 5, /** Parameter not a Cursor */
398    ECORE_X_ERROR_CODE_BAD_CURSOR = 6, /** Parameter not a Font */
399    ECORE_X_ERROR_CODE_BAD_FONT = 7, /** Parameter mismatch */
400    ECORE_X_ERROR_CODE_BAD_MATCH = 8, /** Parameter not a Pixmap or Window */
401    ECORE_X_ERROR_CODE_BAD_DRAWABLE = 9, /** Bad access */
402    ECORE_X_ERROR_CODE_BAD_ACCESS = 10, /** Insufficient resources */
403    ECORE_X_ERROR_CODE_BAD_ALLOC = 11, /** No such colormap */
404    ECORE_X_ERROR_CODE_BAD_COLOR = 12, /** Parameter not a GC */
405    ECORE_X_ERROR_CODE_BAD_GC = 13, /** Choice not in range or already used */
406    ECORE_X_ERROR_CODE_BAD_ID_CHOICE = 14, /** Font or color name doesn't exist */
407    ECORE_X_ERROR_CODE_BAD_NAME = 15, /** Request length incorrect */
408    ECORE_X_ERROR_CODE_BAD_LENGTH = 16, /** Server is defective */
409    ECORE_X_ERROR_CODE_BAD_IMPLEMENTATION = 17,
410 } Ecore_X_Error_Code;
411 
412 typedef enum _Ecore_X_Dpms_Mode
413 {
414    ECORE_X_DPMS_MODE_ON = 0,
415    ECORE_X_DPMS_MODE_STANDBY = 1,
416    ECORE_X_DPMS_MODE_SUSPEND = 2,
417    ECORE_X_DPMS_MODE_OFF = 3
418 } Ecore_X_Dpms_Mode;
419 
420 typedef struct _Ecore_X_Event_Mouse_In                     Ecore_X_Event_Mouse_In;
421 typedef struct _Ecore_X_Event_Mouse_Out                    Ecore_X_Event_Mouse_Out;
422 typedef struct _Ecore_X_Event_Window_Focus_In              Ecore_X_Event_Window_Focus_In;
423 typedef struct _Ecore_X_Event_Window_Focus_Out             Ecore_X_Event_Window_Focus_Out;
424 typedef struct _Ecore_X_Event_Window_Keymap                Ecore_X_Event_Window_Keymap;
425 typedef struct _Ecore_X_Event_Window_Damage                Ecore_X_Event_Window_Damage;
426 typedef struct _Ecore_X_Event_Window_Visibility_Change     Ecore_X_Event_Window_Visibility_Change;
427 typedef struct _Ecore_X_Event_Window_Create                Ecore_X_Event_Window_Create;
428 typedef struct _Ecore_X_Event_Window_Destroy               Ecore_X_Event_Window_Destroy;
429 typedef struct _Ecore_X_Event_Window_Hide                  Ecore_X_Event_Window_Hide;
430 typedef struct _Ecore_X_Event_Window_Show                  Ecore_X_Event_Window_Show;
431 typedef struct _Ecore_X_Event_Window_Show_Request          Ecore_X_Event_Window_Show_Request;
432 typedef struct _Ecore_X_Event_Window_Reparent              Ecore_X_Event_Window_Reparent;
433 typedef struct _Ecore_X_Event_Window_Configure             Ecore_X_Event_Window_Configure;
434 typedef struct _Ecore_X_Event_Window_Configure_Request     Ecore_X_Event_Window_Configure_Request;
435 typedef struct _Ecore_X_Event_Window_Gravity               Ecore_X_Event_Window_Gravity;
436 typedef struct _Ecore_X_Event_Window_Resize_Request        Ecore_X_Event_Window_Resize_Request;
437 typedef struct _Ecore_X_Event_Window_Stack                 Ecore_X_Event_Window_Stack;
438 typedef struct _Ecore_X_Event_Window_Stack_Request         Ecore_X_Event_Window_Stack_Request;
439 typedef struct _Ecore_X_Event_Window_Property              Ecore_X_Event_Window_Property;
440 typedef struct _Ecore_X_Event_Window_Colormap              Ecore_X_Event_Window_Colormap;
441 typedef struct _Ecore_X_Event_Mapping_Change               Ecore_X_Event_Mapping_Change;
442 typedef struct _Ecore_X_Event_Window_Mapping               Ecore_X_Event_Window_Mapping;
443 typedef struct _Ecore_X_Event_Selection_Clear              Ecore_X_Event_Selection_Clear;
444 typedef struct _Ecore_X_Event_Selection_Request            Ecore_X_Event_Selection_Request;
445 typedef struct _Ecore_X_Event_Selection_Notify             Ecore_X_Event_Selection_Notify;
446 typedef struct _Ecore_X_Event_Fixes_Selection_Notify       Ecore_X_Event_Fixes_Selection_Notify;
447 typedef struct _Ecore_X_Selection_Data                     Ecore_X_Selection_Data;
448 typedef struct _Ecore_X_Selection_Data_Files               Ecore_X_Selection_Data_Files;
449 typedef struct _Ecore_X_Selection_Data_Text                Ecore_X_Selection_Data_Text;
450 typedef struct _Ecore_X_Selection_Data_X_Moz_Url           Ecore_X_Selection_Data_X_Moz_Url;
451 typedef struct _Ecore_X_Selection_Data_Targets             Ecore_X_Selection_Data_Targets;
452 typedef struct _Ecore_X_Event_Xdnd_Enter                   Ecore_X_Event_Xdnd_Enter;
453 typedef struct _Ecore_X_Event_Xdnd_Position                Ecore_X_Event_Xdnd_Position;
454 typedef struct _Ecore_X_Event_Xdnd_Status                  Ecore_X_Event_Xdnd_Status;
455 typedef struct _Ecore_X_Event_Xdnd_Leave                   Ecore_X_Event_Xdnd_Leave;
456 typedef struct _Ecore_X_Event_Xdnd_Drop                    Ecore_X_Event_Xdnd_Drop;
457 typedef struct _Ecore_X_Event_Xdnd_Finished                Ecore_X_Event_Xdnd_Finished;
458 typedef struct _Ecore_X_Event_Client_Message               Ecore_X_Event_Client_Message;
459 typedef struct _Ecore_X_Event_Window_Shape                 Ecore_X_Event_Window_Shape;
460 typedef struct _Ecore_X_Event_Screensaver_Notify           Ecore_X_Event_Screensaver_Notify;
461 typedef struct _Ecore_X_Event_Gesture_Notify_Flick         Ecore_X_Event_Gesture_Notify_Flick;
462 typedef struct _Ecore_X_Event_Gesture_Notify_Pan           Ecore_X_Event_Gesture_Notify_Pan;
463 typedef struct _Ecore_X_Event_Gesture_Notify_PinchRotation Ecore_X_Event_Gesture_Notify_PinchRotation;
464 typedef struct _Ecore_X_Event_Gesture_Notify_Tap           Ecore_X_Event_Gesture_Notify_Tap;
465 typedef struct _Ecore_X_Event_Gesture_Notify_TapNHold      Ecore_X_Event_Gesture_Notify_TapNHold;
466 typedef struct _Ecore_X_Event_Gesture_Notify_Hold          Ecore_X_Event_Gesture_Notify_Hold;
467 typedef struct _Ecore_X_Event_Gesture_Notify_Group         Ecore_X_Event_Gesture_Notify_Group;
468 typedef struct _Ecore_X_Event_Sync_Counter                 Ecore_X_Event_Sync_Counter;
469 typedef struct _Ecore_X_Event_Sync_Alarm                   Ecore_X_Event_Sync_Alarm;
470 typedef struct _Ecore_X_Event_Screen_Change                Ecore_X_Event_Screen_Change;
471 typedef struct _Ecore_X_Event_Randr_Crtc_Change            Ecore_X_Event_Randr_Crtc_Change;
472 typedef struct _Ecore_X_Event_Randr_Output_Change          Ecore_X_Event_Randr_Output_Change;
473 typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Randr_Output_Property_Notify;
474 
475 typedef struct _Ecore_X_Event_Window_Delete_Request        Ecore_X_Event_Window_Delete_Request;
476 typedef struct _Ecore_X_Event_Window_Move_Resize_Request   Ecore_X_Event_Window_Move_Resize_Request;
477 typedef struct _Ecore_X_Event_Window_State_Request         Ecore_X_Event_Window_State_Request;
478 typedef struct _Ecore_X_Event_Frame_Extents_Request        Ecore_X_Event_Frame_Extents_Request;
479 typedef struct _Ecore_X_Event_Ping                         Ecore_X_Event_Ping;
480 typedef struct _Ecore_X_Event_Desktop_Change               Ecore_X_Event_Desktop_Change;
481 
482 typedef struct _Ecore_X_Event_Startup_Sequence             Ecore_X_Event_Startup_Sequence;
483 
484 typedef struct _Ecore_X_Event_Generic                      Ecore_X_Event_Generic;
485 
486 
487 typedef struct Ecore_X_Event_Present_Configure             Ecore_X_Event_Present_Configure; /**< @since 1.9 */
488 typedef struct Ecore_X_Event_Present_Complete              Ecore_X_Event_Present_Complete; /**< @since 1.9 */
489 typedef struct Ecore_X_Event_Present_Idle                  Ecore_X_Event_Present_Idle; /**< @since 1.9 */
490 
491 typedef struct _Ecore_X_Randr_Screen_Size                  Ecore_X_Randr_Screen_Size;
492 typedef struct _Ecore_X_Randr_Screen_Size_MM               Ecore_X_Randr_Screen_Size_MM;
493 typedef struct _Ecore_X_Randr_Crtc_Info                    Ecore_X_Randr_Crtc_Info; /**< @since 1.8 */
494 
495 typedef struct _Ecore_X_Xdnd_Position                      Ecore_X_Xdnd_Position;
496 
497 
498 struct _Ecore_X_Event_Mouse_In
499 {
500    int                  modifiers;
501    int                  x, y;
502    Eina_Bool            same_screen : 1;
503    struct
504    {
505       int x, y;
506    } root;
507    Ecore_X_Window       win;
508    Ecore_X_Window       event_win;
509    Ecore_X_Window       root_win;
510    Ecore_X_Event_Mode   mode;
511    Ecore_X_Event_Detail detail;
512    Ecore_X_Time         time;
513 };
514 
515 struct _Ecore_X_Event_Mouse_Out
516 {
517    int                  modifiers;
518    int                  x, y;
519    int                  same_screen;
520    struct
521    {
522       int x, y;
523    } root;
524    Ecore_X_Window       win;
525    Ecore_X_Window       event_win;
526    Ecore_X_Window       root_win;
527    Ecore_X_Event_Mode   mode;
528    Ecore_X_Event_Detail detail;
529    Ecore_X_Time         time;
530 };
531 
532 struct _Ecore_X_Event_Window_Focus_In
533 {
534    Ecore_X_Window       win;
535    Ecore_X_Event_Mode   mode;
536    Ecore_X_Event_Detail detail;
537    Ecore_X_Time         time;
538 };
539 
540 struct _Ecore_X_Event_Window_Focus_Out
541 {
542    Ecore_X_Window       win;
543    Ecore_X_Event_Mode   mode;
544    Ecore_X_Event_Detail detail;
545    Ecore_X_Time         time;
546 };
547 
548 struct _Ecore_X_Event_Window_Keymap
549 {
550    Ecore_X_Window win;
551 };
552 
553 struct _Ecore_X_Event_Window_Damage
554 {
555    Ecore_X_Window win;
556    int            x, y, w, h;
557    int            count;
558    Ecore_X_Time   time;
559 };
560 
561 struct _Ecore_X_Event_Window_Visibility_Change
562 {
563    Ecore_X_Window win;
564    int            fully_obscured;
565    Ecore_X_Time   time;
566 };
567 
568 struct _Ecore_X_Event_Window_Create
569 {
570    Ecore_X_Window win;
571    Ecore_X_Window parent;
572    int            override;
573    int            x, y, w, h;
574    int            border;
575    Ecore_X_Time   time;
576 };
577 
578 struct _Ecore_X_Event_Window_Destroy
579 {
580    Ecore_X_Window win;
581    Ecore_X_Window event_win;
582    Ecore_X_Time   time;
583 };
584 
585 struct _Ecore_X_Event_Window_Hide
586 {
587    Ecore_X_Window win;
588    Ecore_X_Window event_win;
589    Ecore_X_Time   time;
590    Eina_Bool      send_event : 1; /**< @since 1.8 */
591 };
592 
593 struct _Ecore_X_Event_Window_Show
594 {
595    Ecore_X_Window win;
596    Ecore_X_Window event_win;
597    Ecore_X_Time   time;
598 };
599 
600 struct _Ecore_X_Event_Window_Show_Request
601 {
602    Ecore_X_Window win;
603    Ecore_X_Window parent;
604    Ecore_X_Time   time;
605 };
606 
607 struct _Ecore_X_Event_Window_Reparent
608 {
609    Ecore_X_Window win;
610    Ecore_X_Window event_win;
611    Ecore_X_Window parent;
612    Ecore_X_Time   time;
613 };
614 
615 struct _Ecore_X_Event_Window_Configure
616 {
617    Ecore_X_Window win;
618    Ecore_X_Window event_win;
619    Ecore_X_Window abovewin;
620    int            x, y, w, h;
621    int            border;
622    Eina_Bool      override : 1;
623    Eina_Bool      from_wm : 1;
624    Ecore_X_Time   time;
625 };
626 
627 struct _Ecore_X_Event_Window_Configure_Request
628 {
629    Ecore_X_Window            win;
630    Ecore_X_Window            parent_win;
631    Ecore_X_Window            abovewin;
632    int                       x, y, w, h;
633    int                       border;
634    Ecore_X_Window_Stack_Mode detail;
635    unsigned long             value_mask;
636    Ecore_X_Time              time;
637 };
638 
639 struct _Ecore_X_Event_Window_Gravity
640 {
641    Ecore_X_Window win;
642    Ecore_X_Window event_win;
643    Ecore_X_Time   time;
644 };
645 
646 struct _Ecore_X_Event_Window_Resize_Request
647 {
648    Ecore_X_Window win;
649    int            w, h;
650    Ecore_X_Time   time;
651 };
652 
653 struct _Ecore_X_Event_Window_Stack
654 {
655    Ecore_X_Window            win;
656    Ecore_X_Window            event_win;
657    Ecore_X_Window_Stack_Mode detail;
658    Ecore_X_Time              time;
659 };
660 
661 struct _Ecore_X_Event_Window_Stack_Request
662 {
663    Ecore_X_Window            win;
664    Ecore_X_Window            parent;
665    Ecore_X_Window_Stack_Mode detail;
666    Ecore_X_Time              time;
667 };
668 
669 struct _Ecore_X_Event_Window_Property
670 {
671    Ecore_X_Window win;
672    Ecore_X_Atom   atom;
673    Ecore_X_Time   time;
674    Eina_Bool      state; /**< @since 1.16 If @c EINA_TRUE, property was deleted */
675 };
676 
677 struct _Ecore_X_Event_Window_Colormap
678 {
679    Ecore_X_Window   win;
680    Ecore_X_Colormap cmap;
681    Eina_Bool        installed : 1;
682    Ecore_X_Time     time;
683 };
684 
685 struct _Ecore_X_Event_Mapping_Change
686 {
687    Ecore_X_Mapping_Type type;
688    int                  keycode;
689    int                  num;
690 };
691 
692 struct _Ecore_X_Event_Selection_Clear
693 {
694    Ecore_X_Window    win;
695    Ecore_X_Selection selection;
696    Ecore_X_Atom      atom;
697    Ecore_X_Time      time;
698 };
699 
700 struct _Ecore_X_Event_Selection_Request
701 {
702    Ecore_X_Window owner;
703    Ecore_X_Window requestor;
704    Ecore_X_Time   time;
705    Ecore_X_Atom   selection;
706    Ecore_X_Atom   target;
707    Ecore_X_Atom   property;
708 };
709 
710 typedef enum
711 {
712    ECORE_X_OWNER_CHANGE_REASON_NEW_OWNER,
713    ECORE_X_OWNER_CHANGE_REASON_DESTROY,
714    ECORE_X_OWNER_CHANGE_REASON_CLOSE
715 } Ecore_X_Owner_Change_Reason;
716 
717 struct _Ecore_X_Event_Fixes_Selection_Notify
718 {
719    Ecore_X_Window              win;
720    Ecore_X_Window              owner;
721    Ecore_X_Time                time;
722    Ecore_X_Time                selection_time;
723    Ecore_X_Selection           selection;
724    Ecore_X_Atom                atom;
725    Ecore_X_Owner_Change_Reason reason;
726 };
727 
728 struct _Ecore_X_Event_Selection_Notify
729 {
730    Ecore_X_Window    win;
731    Ecore_X_Time      time;
732    Ecore_X_Selection selection;
733    Ecore_X_Atom      atom;
734    char             *target;
735    void             *data;
736    Ecore_X_Atom      property; /**< @since 1.16 */
737 };
738 
739 struct _Ecore_X_Selection_Data
740 {
741    enum
742    {
743       ECORE_X_SELECTION_CONTENT_NONE,
744       ECORE_X_SELECTION_CONTENT_TEXT,
745       ECORE_X_SELECTION_CONTENT_FILES,
746       ECORE_X_SELECTION_CONTENT_X_MOZ_URL,
747       ECORE_X_SELECTION_CONTENT_TARGETS,
748       ECORE_X_SELECTION_CONTENT_CUSTOM
749    } content;
750    unsigned char *data;
751    int            length;
752    int            format;
753    int            (*free)(void *data);
754 };
755 
756 struct _Ecore_X_Selection_Data_Files
757 {
758    Ecore_X_Selection_Data data;
759    char                 **files;
760    int                    num_files;
761 };
762 
763 struct _Ecore_X_Selection_Data_Text
764 {
765    Ecore_X_Selection_Data data;
766    char                  *text;
767 };
768 
769 struct _Ecore_X_Selection_Data_X_Moz_Url
770 {
771    Ecore_X_Selection_Data data;
772    Eina_Inarray         *links;
773    Eina_Inarray         *link_names;
774 };
775 
776 struct _Ecore_X_Selection_Data_Targets
777 {
778    Ecore_X_Selection_Data data;
779    char                 **targets;
780    int                    num_targets;
781 };
782 
783 struct _Ecore_X_Event_Xdnd_Enter
784 {
785    Ecore_X_Window win, source;
786 
787    char         **types;
788    int            num_types;
789 };
790 
791 struct _Ecore_X_Event_Xdnd_Position
792 {
793    Ecore_X_Window win, source;
794    struct
795    {
796       int x, y;
797    } position;
798    Ecore_X_Atom   action;
799 };
800 
801 struct _Ecore_X_Xdnd_Position
802 {
803    Ecore_X_Window win, prev;
804    struct
805    {
806       int x, y;
807    } position;
808 };
809 
810 struct _Ecore_X_Event_Xdnd_Status
811 {
812    Ecore_X_Window    win, target;
813    Eina_Bool         will_accept : 1;
814    Ecore_X_Rectangle rectangle;
815    Ecore_X_Atom      action;
816 };
817 
818 struct _Ecore_X_Event_Xdnd_Leave
819 {
820    Ecore_X_Window win, source;
821 };
822 
823 struct _Ecore_X_Event_Xdnd_Drop
824 {
825    Ecore_X_Window win, source;
826    Ecore_X_Atom   action;
827    struct
828    {
829       int x, y;
830    } position;
831 };
832 
833 struct _Ecore_X_Event_Xdnd_Finished
834 {
835    Ecore_X_Window win, target;
836    Eina_Bool      completed : 1;
837    Ecore_X_Atom   action;
838 };
839 
840 struct _Ecore_X_Event_Client_Message
841 {
842    Ecore_X_Window win;
843    Ecore_X_Atom   message_type;
844    int            format;
845    union
846    {
847       char  b[20];
848       short s[10];
849       long  l[5];
850    } data;
851    Ecore_X_Time   time;
852 };
853 
854 struct _Ecore_X_Event_Window_Shape
855 {
856    Ecore_X_Window     win;
857    Ecore_X_Time       time;
858    Ecore_X_Shape_Type type;
859    int                x, y, w, h;
860    Eina_Bool          shaped : 1;
861 };
862 
863 struct _Ecore_X_Event_Screensaver_Notify
864 {
865    Ecore_X_Window win;
866    Eina_Bool      on : 1;
867    Ecore_X_Time   time;
868 };
869 
870 struct _Ecore_X_Event_Sync_Counter
871 {
872    Ecore_X_Time time;
873 };
874 
875 struct _Ecore_X_Event_Sync_Alarm
876 {
877    Ecore_X_Time       time;
878    Ecore_X_Sync_Alarm alarm;
879 };
880 
881 struct _Ecore_X_Randr_Screen_Size
882 {
883    int width, height;
884 };
885 
886 struct _Ecore_X_Randr_Screen_Size_MM
887 {
888    int width, height, width_mm, height_mm;
889 };
890 
891 struct _Ecore_X_Randr_Crtc_Info
892 {
893    Ecore_X_Time timestamp;
894    int x, y;
895    unsigned int width, height;
896    Ecore_X_Randr_Mode mode;
897    Ecore_X_Randr_Orientation rotation;
898    int noutput;
899    Ecore_X_Randr_Output *outputs;
900    Ecore_X_Randr_Orientation rotations;
901    int npossible;
902    Ecore_X_Randr_Output *possible;
903 }; /**< @since 1.8 */
904 
905 struct _Ecore_X_Event_Screen_Change
906 {
907    Ecore_X_Window                win;
908    Ecore_X_Window                root;
909    Ecore_X_Randr_Screen_Size_MM  size;  /* in pixel and millimeters */
910    Ecore_X_Time                  time;
911    Ecore_X_Time                  config_time;
912    Ecore_X_Randr_Orientation     orientation;
913    Ecore_X_Render_Subpixel_Order subpixel_order;
914    Ecore_X_Randr_Size_ID         size_id;
915 };
916 
917 struct _Ecore_X_Event_Randr_Crtc_Change
918 {
919    Ecore_X_Window            win;
920    Ecore_X_Randr_Crtc        crtc;
921    Ecore_X_Randr_Mode        mode;
922    Ecore_X_Randr_Orientation orientation;
923    Eina_Rectangle            geo;
924 };
925 
926 struct _Ecore_X_Event_Randr_Output_Change
927 {
928    Ecore_X_Window                  win;
929    Ecore_X_Randr_Output            output;
930    Ecore_X_Randr_Crtc              crtc;
931    Ecore_X_Randr_Mode              mode;
932    Ecore_X_Randr_Orientation       orientation;
933    Ecore_X_Randr_Connection_Status connection;
934    Ecore_X_Render_Subpixel_Order   subpixel_order;
935 };
936 
937 struct _Ecore_X_Event_Randr_Output_Property_Notify
938 {
939    Ecore_X_Window                win;
940    Ecore_X_Randr_Output          output;
941    Ecore_X_Atom                  property;
942    Ecore_X_Time                  time;
943    Ecore_X_Randr_Property_Change state;
944 };
945 
946 struct _Ecore_X_Event_Window_Delete_Request
947 {
948    Ecore_X_Window win;
949    Ecore_X_Time   time;
950 };
951 
952 struct _Ecore_X_Event_Window_Prop_Title_Change
953 {
954    Ecore_X_Window win;
955    char          *title;
956    Ecore_X_Time   time;
957 };
958 
959 struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
960 {
961    Ecore_X_Window win;
962    char          *title;
963    Ecore_X_Time   time;
964 };
965 
966 struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
967 {
968    Ecore_X_Window win;
969    char          *name;
970    Ecore_X_Time   time;
971 };
972 
973 struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
974 {
975    Ecore_X_Window win;
976    char          *name;
977    Ecore_X_Time   time;
978 };
979 
980 struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
981 {
982    Ecore_X_Window win;
983    char          *name;
984    Ecore_X_Time   time;
985 };
986 
987 struct _Ecore_X_Event_Window_Prop_Name_Class_Change
988 {
989    Ecore_X_Window win;
990    char          *name;
991    char          *clas;
992    Ecore_X_Time   time;
993 };
994 
995 struct _Ecore_X_Event_Window_Prop_Pid_Change
996 {
997    Ecore_X_Window win;
998    pid_t          pid;
999    Ecore_X_Time   time;
1000 };
1001 
1002 struct _Ecore_X_Event_Window_Prop_Desktop_Change
1003 {
1004    Ecore_X_Window win;
1005    long           desktop;
1006    Ecore_X_Time   time;
1007 };
1008 
1009 struct _Ecore_X_Event_Startup_Sequence
1010 {
1011    Ecore_X_Window win;
1012 };
1013 
1014 struct _Ecore_X_Event_Window_Move_Resize_Request
1015 {
1016    Ecore_X_Window win;
1017    int            x, y;
1018    int            direction;
1019    int            button;
1020    int            source;
1021 };
1022 
1023 struct _Ecore_X_Event_Window_State_Request
1024 {
1025    Ecore_X_Window              win;
1026    Ecore_X_Window_State_Action action;
1027    Ecore_X_Window_State        state[2];
1028    int                         source;
1029 };
1030 
1031 struct _Ecore_X_Event_Frame_Extents_Request
1032 {
1033    Ecore_X_Window win;
1034 };
1035 
1036 struct _Ecore_X_Event_Ping
1037 {
1038    Ecore_X_Window win;
1039    Ecore_X_Window event_win;
1040    Ecore_X_Time   time;
1041 };
1042 
1043 struct _Ecore_X_Event_Desktop_Change
1044 {
1045    Ecore_X_Window win;
1046    unsigned int   desk;
1047    int            source;
1048 };
1049 
1050 struct _Ecore_X_Event_Generic
1051 {
1052    int          extension;
1053    int          evtype;
1054    unsigned int cookie;
1055    void        *data;
1056 };
1057 
1058 typedef enum Ecore_X_Present_Event_Mask
1059 {
1060     ECORE_X_PRESENT_EVENT_MASK_NO_EVENT = 0,
1061     ECORE_X_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1,
1062     ECORE_X_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2,
1063     ECORE_X_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4,
1064 } Ecore_X_Present_Event_Mask; /**< @since 1.9 */
1065 
1066 typedef struct Ecore_X_Present
1067 {
1068    Ecore_X_Window win;
1069    unsigned int serial;
1070 } Ecore_X_Present; /**< @since 1.9 */
1071 
1072 struct Ecore_X_Event_Present_Configure
1073 {
1074    Ecore_X_Window win;
1075 
1076    int x, y;
1077    unsigned int width, height;
1078    int off_x, off_y;
1079    int pixmap_width, pixmap_height;
1080    long pixmap_flags;
1081 }; /**< @since 1.9 */
1082 
1083 typedef enum
1084 {
1085    ECORE_X_PRESENT_COMPLETE_MODE_COPY,
1086    ECORE_X_PRESENT_COMPLETE_MODE_FLIP,
1087    ECORE_X_PRESENT_COMPLETE_MODE_SKIP,
1088 } Ecore_X_Present_Complete_Mode;
1089 
1090 struct Ecore_X_Event_Present_Complete
1091 {
1092    Ecore_X_Window win;
1093 
1094    unsigned int serial; // value provided when generating request
1095    unsigned long long ust; // system time of presentation
1096    unsigned long long msc; // frame count at time of presentation
1097    Eina_Bool kind : 1; /* 0 for PresentCompleteKindPixmap (PresentPixmap completion),
1098                           1 for PresentCompleteKindNotifyMsc (PresentNotifyMSC completion) */
1099    Ecore_X_Present_Complete_Mode mode;
1100 }; /**< @since 1.9 */
1101 
1102 struct Ecore_X_Event_Present_Idle
1103 {
1104    Ecore_X_Window win;
1105 
1106    unsigned int serial;
1107    Ecore_X_Pixmap pixmap;
1108    Ecore_X_Sync_Fence idle_fence;
1109 }; /**< @since 1.9 */
1110 
1111 EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
1112                                         backend in use, will be XEvent.
1113                                         @warning avoid using it.
1114                                     */
1115 EAPI extern int ECORE_X_EVENT_MOUSE_IN;
1116 EAPI extern int ECORE_X_EVENT_MOUSE_OUT;
1117 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_IN;
1118 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_OUT;
1119 EAPI extern int ECORE_X_EVENT_WINDOW_KEYMAP;
1120 EAPI extern int ECORE_X_EVENT_WINDOW_DAMAGE;
1121 EAPI extern int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE;
1122 EAPI extern int ECORE_X_EVENT_WINDOW_CREATE;
1123 EAPI extern int ECORE_X_EVENT_WINDOW_DESTROY;
1124 EAPI extern int ECORE_X_EVENT_WINDOW_HIDE;
1125 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW;
1126 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW_REQUEST;
1127 EAPI extern int ECORE_X_EVENT_WINDOW_REPARENT;
1128 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE;
1129 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST;
1130 EAPI extern int ECORE_X_EVENT_WINDOW_GRAVITY;
1131 EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
1132 EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
1133 EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
1134 EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
1135 EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
1136 EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
1137 EAPI extern int ECORE_X_EVENT_MAPPING_CHANGE;
1138 EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
1139 EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
1140 EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
1141 EAPI extern int ECORE_X_EVENT_FIXES_SELECTION_NOTIFY;
1142 EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
1143 EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
1144 EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
1145 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_FLICK;
1146 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PAN;
1147 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION;
1148 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAP;
1149 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD;
1150 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_HOLD;
1151 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_GROUP;
1152 EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
1153 EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
1154 EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
1155 EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE;
1156 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE;
1157 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY;
1158 EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
1159 
1160 EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
1161 
1162 EAPI extern int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST;
1163 EAPI extern int ECORE_X_EVENT_WINDOW_STATE_REQUEST;
1164 EAPI extern int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST;
1165 EAPI extern int ECORE_X_EVENT_PING;
1166 EAPI extern int ECORE_X_EVENT_DESKTOP_CHANGE;
1167 
1168 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
1169 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
1170 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
1171 EAPI extern int ECORE_X_EVENT_XKB_STATE_NOTIFY; /** @since 1.7 */
1172 EAPI extern int ECORE_X_EVENT_XKB_NEWKBD_NOTIFY; /** @since 1.7 */
1173 
1174 EAPI extern int ECORE_X_EVENT_GENERIC;
1175 
1176 EAPI extern int ECORE_X_EVENT_PRESENT_CONFIGURE; /**< @since 1.9 */
1177 EAPI extern int ECORE_X_EVENT_PRESENT_COMPLETE; /**< @since 1.9 */
1178 EAPI extern int ECORE_X_EVENT_PRESENT_IDLE; /**< @since 1.9 */
1179 
1180 EAPI extern int ECORE_X_EVENT_XDND_ENTER;
1181 EAPI extern int ECORE_X_EVENT_XDND_POSITION;
1182 EAPI extern int ECORE_X_EVENT_XDND_STATUS;
1183 EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
1184 EAPI extern int ECORE_X_EVENT_XDND_DROP;
1185 EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
1186 
1187 EAPI extern int ECORE_X_MODIFIER_SHIFT; /**< @since 1.7 */
1188 EAPI extern int ECORE_X_MODIFIER_CTRL;  /**< @since 1.7 */
1189 EAPI extern int ECORE_X_MODIFIER_ALT;   /**< @since 1.7 */
1190 EAPI extern int ECORE_X_MODIFIER_WIN;   /**< @since 1.7 */
1191 EAPI extern int ECORE_X_MODIFIER_ALTGR; /**< @since 1.7 */
1192 
1193 EAPI extern int ECORE_X_LOCK_SCROLL;
1194 EAPI extern int ECORE_X_LOCK_NUM;
1195 EAPI extern int ECORE_X_LOCK_CAPS;
1196 EAPI extern int ECORE_X_LOCK_SHIFT;
1197 
1198 EAPI extern int ECORE_X_RAW_BUTTON_PRESS;   /**< @since 1.8 */
1199 EAPI extern int ECORE_X_RAW_BUTTON_RELEASE; /**< @since 1.8 */
1200 EAPI extern int ECORE_X_RAW_MOTION;         /**< @since 1.8 */
1201 
1202 EAPI extern int ECORE_X_DEVICES_CHANGE; /**< @since 1.24 */
1203 
1204 typedef enum _Ecore_X_WM_Protocol
1205 {
1206    /** If enabled the window manager will be asked to send a
1207     * delete message instead of just closing (destroying) the window. */
1208    ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
1209 
1210    /** If enabled the window manager will be told that the window
1211     * explicitly sets input focus. */
1212    ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
1213 
1214    /** If enabled the window manager can ping the window to check
1215     * if it is alive. */
1216    ECORE_X_NET_WM_PROTOCOL_PING,
1217 
1218    /** If enabled the window manager can sync updating with the
1219     * window (?) */
1220    ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
1221 
1222    /** Number of defined items */
1223    ECORE_X_WM_PROTOCOL_NUM
1224 } Ecore_X_WM_Protocol;
1225 
1226 typedef enum _Ecore_X_Window_Input_Mode
1227 {
1228    /** The window can never be focused */
1229    ECORE_X_WINDOW_INPUT_MODE_NONE,
1230 
1231    /** The window can be focused by the WM but doesn't focus itself */
1232    ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
1233 
1234    /** The window sets the focus itself if one of its sub-windows
1235     * already is focused */
1236    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
1237 
1238    /** The window sets the focus itself even if another window
1239     * is currently focused */
1240    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
1241 } Ecore_X_Window_Input_Mode;
1242 
1243 /**
1244  * @typedef _Ecore_X_Window_State_Hint
1245  * Defines the different state hint of the window of Ecore_X.
1246  */
1247 typedef enum _Ecore_X_Window_State_Hint
1248 {
1249    /** Do not provide any state hint to the window manager */
1250    ECORE_X_WINDOW_STATE_HINT_NONE = -1,
1251 
1252    /** The window wants to remain hidden and NOT iconified */
1253    ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
1254 
1255    /** The window wants to be mapped normally */
1256    ECORE_X_WINDOW_STATE_HINT_NORMAL,
1257 
1258    /** The window wants to start in an iconified state */
1259    ECORE_X_WINDOW_STATE_HINT_ICONIC
1260 } Ecore_X_Window_State_Hint;
1261 
1262 typedef enum _Ecore_X_Window_Type
1263 {
1264    ECORE_X_WINDOW_TYPE_UNKNOWN = 0,
1265    ECORE_X_WINDOW_TYPE_DESKTOP,
1266    ECORE_X_WINDOW_TYPE_DOCK,
1267    ECORE_X_WINDOW_TYPE_TOOLBAR,
1268    ECORE_X_WINDOW_TYPE_MENU,
1269    ECORE_X_WINDOW_TYPE_UTILITY,
1270    ECORE_X_WINDOW_TYPE_SPLASH,
1271    ECORE_X_WINDOW_TYPE_DIALOG,
1272    ECORE_X_WINDOW_TYPE_NORMAL,
1273    ECORE_X_WINDOW_TYPE_DROPDOWN_MENU,
1274    ECORE_X_WINDOW_TYPE_POPUP_MENU,
1275    ECORE_X_WINDOW_TYPE_TOOLTIP,
1276    ECORE_X_WINDOW_TYPE_NOTIFICATION,
1277    ECORE_X_WINDOW_TYPE_COMBO,
1278    ECORE_X_WINDOW_TYPE_DND
1279 } Ecore_X_Window_Type;
1280 
1281 typedef enum _Ecore_X_Action
1282 {
1283    ECORE_X_ACTION_MOVE,
1284    ECORE_X_ACTION_RESIZE,
1285    ECORE_X_ACTION_MINIMIZE,
1286    ECORE_X_ACTION_SHADE,
1287    ECORE_X_ACTION_STICK,
1288    ECORE_X_ACTION_MAXIMIZE_HORZ,
1289    ECORE_X_ACTION_MAXIMIZE_VERT,
1290    ECORE_X_ACTION_FULLSCREEN,
1291    ECORE_X_ACTION_CHANGE_DESKTOP,
1292    ECORE_X_ACTION_CLOSE,
1293    ECORE_X_ACTION_ABOVE,
1294    ECORE_X_ACTION_BELOW
1295 } Ecore_X_Action;
1296 
1297 typedef enum _Ecore_X_Window_Configure_Mask
1298 {
1299    ECORE_X_WINDOW_CONFIGURE_MASK_X = (1 << 0),
1300    ECORE_X_WINDOW_CONFIGURE_MASK_Y = (1 << 1),
1301    ECORE_X_WINDOW_CONFIGURE_MASK_W = (1 << 2),
1302    ECORE_X_WINDOW_CONFIGURE_MASK_H = (1 << 3),
1303    ECORE_X_WINDOW_CONFIGURE_MASK_BORDER_WIDTH = (1 << 4),
1304    ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING = (1 << 5),
1305    ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE = (1 << 6)
1306 } Ecore_X_Window_Configure_Mask;
1307 
1308 typedef enum _Ecore_X_Virtual_Keyboard_State
1309 {
1310    ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
1311    ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF,
1312    ECORE_X_VIRTUAL_KEYBOARD_STATE_ON,
1313    ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA,
1314    ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC,
1315    ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN,
1316    ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER,
1317    ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX,
1318    ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL,
1319    ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD,
1320    ECORE_X_VIRTUAL_KEYBOARD_STATE_IP,
1321    ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST,
1322    ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE,
1323    ECORE_X_VIRTUAL_KEYBOARD_STATE_URL,
1324    ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD,
1325    ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME
1326 } Ecore_X_Virtual_Keyboard_State;
1327 
1328 typedef enum _Ecore_X_Illume_Mode
1329 {
1330    ECORE_X_ILLUME_MODE_UNKNOWN = 0,
1331    ECORE_X_ILLUME_MODE_SINGLE,
1332    ECORE_X_ILLUME_MODE_DUAL_TOP,
1333    ECORE_X_ILLUME_MODE_DUAL_LEFT
1334 } Ecore_X_Illume_Mode;
1335 
1336 typedef enum _Ecore_X_Illume_Quickpanel_State
1337 {
1338    ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN = 0,
1339    ECORE_X_ILLUME_QUICKPANEL_STATE_OFF,
1340    ECORE_X_ILLUME_QUICKPANEL_STATE_ON
1341 } Ecore_X_Illume_Quickpanel_State;
1342 
1343 typedef enum _Ecore_X_Illume_Indicator_State
1344 {
1345    ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN = 0,
1346    ECORE_X_ILLUME_INDICATOR_STATE_OFF,
1347    ECORE_X_ILLUME_INDICATOR_STATE_ON
1348 } Ecore_X_Illume_Indicator_State;
1349 
1350 typedef enum _Ecore_X_Illume_Clipboard_State
1351 {
1352    ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN = 0,
1353    ECORE_X_ILLUME_CLIPBOARD_STATE_OFF,
1354    ECORE_X_ILLUME_CLIPBOARD_STATE_ON
1355 } Ecore_X_Illume_Clipboard_State;
1356 
1357 typedef enum _Ecore_X_Illume_Indicator_Opacity_Mode
1358 {
1359    ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN = 0,
1360    ECORE_X_ILLUME_INDICATOR_OPAQUE,
1361    ECORE_X_ILLUME_INDICATOR_TRANSLUCENT,
1362    ECORE_X_ILLUME_INDICATOR_TRANSPARENT
1363 } Ecore_X_Illume_Indicator_Opacity_Mode;
1364 
1365 typedef enum _Ecore_X_Illume_Indicator_Type_Mode
1366 {
1367    ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN = 0,
1368    ECORE_X_ILLUME_INDICATOR_TYPE_1,
1369    ECORE_X_ILLUME_INDICATOR_TYPE_2,
1370    ECORE_X_ILLUME_INDICATOR_TYPE_3
1371 } Ecore_X_Illume_Indicator_Type_Mode; /**< @since 1.8 */
1372 
1373 typedef enum _Ecore_X_Illume_Window_State
1374 {
1375    ECORE_X_ILLUME_WINDOW_STATE_NORMAL = 0,
1376    ECORE_X_ILLUME_WINDOW_STATE_FLOATING
1377 } Ecore_X_Illume_Window_State;
1378 
1379 #ifdef EFL_BETA_API_SUPPORT
1380 // XXX: FIXME: re-evaluate this after looking at xdg foreign in wayland
1381 typedef enum _Ecore_X_Stack_Type
1382 {
1383    ECORE_X_STACK_NONE = 0,
1384    ECORE_X_STACK_BASE = 1,
1385    ECORE_X_STACK_STANDARD,
1386    ECORE_X_STACK_LAST
1387 } Ecore_X_Stack_Type;
1388 
1389 typedef enum _Ecore_X_Stack_Position
1390 {
1391    ECORE_X_STACK_POSITION_NONE = 0,
1392    ECORE_X_STACK_POSITION_BOTTOM = 1,
1393    ECORE_X_STACK_POSITION_MIDDLE,
1394    ECORE_X_STACK_POSITION_TOP,
1395    ECORE_X_STACK_POSITION_LAST
1396 } Ecore_X_Stack_Position;
1397 #endif
1398 
1399 /* Window layer constants */
1400 #define ECORE_X_WINDOW_LAYER_BELOW  2
1401 #define ECORE_X_WINDOW_LAYER_NORMAL 4
1402 #define ECORE_X_WINDOW_LAYER_ABOVE  6
1403 
1404 /* Property list operations */
1405 #define ECORE_X_PROP_LIST_REMOVE    0
1406 #define ECORE_X_PROP_LIST_ADD       1
1407 #define ECORE_X_PROP_LIST_TOGGLE    2
1408 
1409 EAPI int                       ecore_x_init(const char *name);
1410 EAPI int                       ecore_x_init_from_display(Ecore_X_Display *display); /**< @since 1.15 */
1411 EAPI int                       ecore_x_shutdown(void);
1412 EAPI int                       ecore_x_disconnect(void);
1413 EAPI Ecore_X_Display          *ecore_x_display_get(void);
1414 EAPI Ecore_X_Connection       *ecore_x_connection_get(void);
1415 EAPI int                       ecore_x_fd_get(void);
1416 EAPI Ecore_X_Screen           *ecore_x_default_screen_get(void);
1417 EAPI void                      ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h);
1418 EAPI int                       ecore_x_screen_count_get(void);
1419 EAPI int                       ecore_x_screen_index_get(const Ecore_X_Screen *screen);
1420 EAPI Ecore_X_Screen           *ecore_x_screen_get(int index);
1421 
1422 EAPI void                      ecore_x_double_click_time_set(double t);
1423 EAPI double                    ecore_x_double_click_time_get(void);
1424 EAPI void                      ecore_x_flush(void);
1425 EAPI void                      ecore_x_sync(void);
1426 EAPI void                      ecore_x_killall(Ecore_X_Window root);
1427 EAPI void                      ecore_x_kill(Ecore_X_Window win);
1428 EAPI int                       ecore_x_dpi_get(void);
1429 EAPI Eina_Bool                 ecore_x_bell(int percent);
1430 EAPI unsigned int              ecore_x_visual_id_get(Ecore_X_Visual visual);
1431 
1432 EAPI Ecore_X_Visual            ecore_x_default_visual_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1433 EAPI Ecore_X_Colormap          ecore_x_default_colormap_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1434 EAPI int                       ecore_x_default_depth_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1435 
1436 EAPI Ecore_X_Time              ecore_x_current_time_get(void);
1437 
1438 EAPI void                      ecore_x_error_handler_set(void (*func)(void *data), const void *data);
1439 EAPI void                      ecore_x_io_error_handler_set(void (*func)(void *data), const void *data);
1440 EAPI int                       ecore_x_error_request_get(void);
1441 EAPI int                       ecore_x_error_code_get(void);
1442 EAPI Ecore_X_ID                ecore_x_error_resource_id_get(void);
1443 
1444 EAPI void                      ecore_x_event_mask_set(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1445 EAPI void                      ecore_x_event_mask_unset(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1446 
1447 EAPI Eina_Bool                 ecore_x_selection_notify_send(Ecore_X_Window requestor, Ecore_X_Atom selection, Ecore_X_Atom target, Ecore_X_Atom property, Ecore_X_Time time);
1448 EAPI Eina_Bool                 ecore_x_selection_primary_set(Ecore_X_Window w, const void *data, int size);
1449 EAPI Eina_Bool                 ecore_x_selection_primary_clear(void);
1450 EAPI Eina_Bool                 ecore_x_selection_secondary_set(Ecore_X_Window w, const void *data, int size);
1451 EAPI Eina_Bool                 ecore_x_selection_secondary_clear(void);
1452 EAPI Eina_Bool                 ecore_x_selection_xdnd_set(Ecore_X_Window w, const void *data, int size);
1453 EAPI Eina_Bool                 ecore_x_selection_xdnd_clear(void);
1454 EAPI Eina_Bool                 ecore_x_selection_clipboard_set(Ecore_X_Window w, const void *data, int size);
1455 EAPI Eina_Bool                 ecore_x_selection_clipboard_clear(void);
1456 EAPI void                      ecore_x_selection_primary_request(Ecore_X_Window w, const char *target);
1457 EAPI void                      ecore_x_selection_secondary_request(Ecore_X_Window w, const char *target);
1458 EAPI void                      ecore_x_selection_xdnd_request(Ecore_X_Window w, const char *target);
1459 EAPI void                      ecore_x_selection_clipboard_request(Ecore_X_Window w, const char *target);
1460 EAPI Eina_Bool                 ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret, int *len, Ecore_X_Atom *targprop, int *targsize);
1461 EAPI void                      ecore_x_selection_converter_add(char *target, Eina_Bool (*func)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *, int *));
1462 EAPI void                      ecore_x_selection_converter_atom_add(Ecore_X_Atom target, Eina_Bool (*func)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *tprop, int *tsize));
1463 EAPI void                      ecore_x_selection_converter_del(char *target);
1464 EAPI void                      ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
1465 EAPI void                      ecore_x_selection_parser_add(const char *target, void *(*func)(const char *target, void *data, int size, int format));
1466 EAPI void                      ecore_x_selection_parser_del(const char *target);
1467 EAPI void                      ecore_x_selection_owner_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Time tm);
1468 EAPI Ecore_X_Window            ecore_x_selection_owner_get(Ecore_X_Atom atom);
1469 EAPI Eina_Bool                 ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *targprop, int *s); /** @since 1.8 */
1470 
1471 EAPI void                      ecore_x_dnd_aware_set(Ecore_X_Window win, Eina_Bool on);
1472 EAPI int                       ecore_x_dnd_version_get(Ecore_X_Window win);
1473 EAPI Eina_Bool                 ecore_x_dnd_type_isset(Ecore_X_Window win, const char *type);
1474 EAPI void                      ecore_x_dnd_type_set(Ecore_X_Window win, const char *type, Eina_Bool on);
1475 EAPI void                      ecore_x_dnd_types_set(Ecore_X_Window win, const char **types, unsigned int num_types);
1476 EAPI void                      ecore_x_dnd_actions_set(Ecore_X_Window win, Ecore_X_Atom *actions, unsigned int num_actions);
1477 EAPI Eina_Bool                 ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size);
1478 EAPI Eina_Bool                 ecore_x_dnd_drop(void);
1479 EAPI Eina_Bool                 ecore_x_dnd_self_begin(Ecore_X_Window source, unsigned char *data, int size); /**< @since 1.8 */
1480 EAPI Eina_Bool                 ecore_x_dnd_self_drop(void); /**< @since 1.8 */
1481 EAPI void                      ecore_x_dnd_send_status(Eina_Bool will_accept, Eina_Bool suppress, Ecore_X_Rectangle rectangle, Ecore_X_Atom action);
1482 EAPI void                      ecore_x_dnd_send_finished(void);
1483 EAPI void                      ecore_x_dnd_source_action_set(Ecore_X_Atom action);
1484 EAPI Ecore_X_Atom              ecore_x_dnd_source_action_get(void);
1485 EAPI void                      ecore_x_dnd_callback_pos_update_set(void (*cb)(void *, Ecore_X_Xdnd_Position *data), const void *data);
1486 EAPI Eina_Bool                 ecore_x_dnd_abort(Ecore_X_Window xwin_source); /**< @since 1.9 */
1487 
1488 EAPI Ecore_X_Window
1489    ecore_x_window_full_new(Ecore_X_Window parent,
1490                            int x,
1491                            int y,
1492                            int w,
1493                            int h,
1494                            Ecore_X_Visual *visual,
1495                            Ecore_X_Colormap colormap,
1496                            int depth,
1497                            Eina_Bool override); /**< @since 1.12 */
1498 
1499 EAPI Ecore_X_Window            ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h);
1500 EAPI Ecore_X_Window            ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h);
1501 EAPI int                       ecore_x_window_argb_get(Ecore_X_Window win);
1502 EAPI Ecore_X_Window            ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1503 EAPI Ecore_X_Window            ecore_x_window_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1504 EAPI Ecore_X_Window            ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1505 EAPI Ecore_X_Window            ecore_x_window_permanent_new(Ecore_X_Window parent, Ecore_X_Atom unique_atom); /* @since 1.9 */
1506 EAPI Ecore_X_Window            ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h);
1507 EAPI void                      ecore_x_window_configure(Ecore_X_Window win, Ecore_X_Window_Configure_Mask mask, int x, int y, int w, int h, int border_width, Ecore_X_Window sibling, int stack_mode);
1508 EAPI void                      ecore_x_window_cursor_set(Ecore_X_Window win, Ecore_X_Cursor c);
1509 EAPI void                      ecore_x_window_free(Ecore_X_Window win);
1510 EAPI void                      ecore_x_window_ignore_set(Ecore_X_Window win, int ignore);
1511 EAPI Ecore_X_Window           *ecore_x_window_ignore_list(int *num);
1512 
1513 EAPI void                      ecore_x_window_delete_request_send(Ecore_X_Window win);
1514 EAPI void                      ecore_x_window_show(Ecore_X_Window win);
1515 EAPI void                      ecore_x_window_hide(Ecore_X_Window win);
1516 EAPI void                      ecore_x_window_move(Ecore_X_Window win, int x, int y);
1517 EAPI void                      ecore_x_window_resize(Ecore_X_Window win, int w, int h);
1518 EAPI void                      ecore_x_window_move_resize(Ecore_X_Window win, int x, int y, int w, int h);
1519 EAPI void                      ecore_x_window_focus(Ecore_X_Window win);
1520 EAPI void                      ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t);
1521 EAPI Ecore_X_Window            ecore_x_window_focus_get(void);
1522 EAPI void                      ecore_x_window_raise(Ecore_X_Window win);
1523 EAPI void                      ecore_x_window_lower(Ecore_X_Window win);
1524 EAPI void                      ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y);
1525 EAPI void                      ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h);
1526 EAPI void                      ecore_x_window_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1527 EAPI int                       ecore_x_window_border_width_get(Ecore_X_Window win);
1528 EAPI void                      ecore_x_window_border_width_set(Ecore_X_Window win, int width);
1529 EAPI int                       ecore_x_window_depth_get(Ecore_X_Window win);
1530 EAPI void                      ecore_x_window_cursor_show(Ecore_X_Window win, Eina_Bool show);
1531 EAPI void                      ecore_x_window_defaults_set(Ecore_X_Window win);
1532 EAPI int                       ecore_x_window_visible_get(Ecore_X_Window win);
1533 EAPI Ecore_X_Window            ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num);
1534 EAPI Ecore_X_Window            ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win);
1535 EAPI void                      ecore_x_window_shadow_tree_flush(void);
1536 EAPI Ecore_X_Window            ecore_x_window_root_get(Ecore_X_Window win);
1537 EAPI Ecore_X_Window            ecore_x_window_at_xy_get(int x, int y);
1538 EAPI Ecore_X_Window            ecore_x_window_at_xy_with_skip_get(int x, int y, Ecore_X_Window *skip, int skip_num);
1539 EAPI Ecore_X_Window            ecore_x_window_at_xy_begin_get(Ecore_X_Window begin, int x, int y);
1540 EAPI Ecore_X_Window            ecore_x_window_parent_get(Ecore_X_Window win);
1541 
1542 EAPI void                      ecore_x_window_background_color_set(Ecore_X_Window win, unsigned short r, unsigned short g, unsigned short b);
1543 EAPI void                      ecore_x_window_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav);
1544 EAPI void                      ecore_x_window_pixel_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav);
1545 EAPI void                      ecore_x_window_pixmap_set(Ecore_X_Window win, Ecore_X_Pixmap pmap);
1546 EAPI void                      ecore_x_window_area_clear(Ecore_X_Window win, int x, int y, int w, int h);
1547 EAPI void                      ecore_x_window_area_expose(Ecore_X_Window win, int x, int y, int w, int h);
1548 EAPI void                      ecore_x_window_override_set(Ecore_X_Window win, Eina_Bool override);
1549 
1550 EAPI void                      ecore_x_window_prop_card32_set(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int *val, unsigned int num);
1551 EAPI int                       ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int *val, unsigned int len);
1552 EAPI int                       ecore_x_window_prop_card32_list_get(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int **plst);
1553 
1554 EAPI void                      ecore_x_window_prop_xid_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID *lst, unsigned int num);
1555 EAPI int                       ecore_x_window_prop_xid_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID *lst, unsigned int len);
1556 EAPI int                       ecore_x_window_prop_xid_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID **plst);
1557 EAPI void                      ecore_x_window_prop_xid_list_change(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID item, int op);
1558 EAPI void                      ecore_x_window_prop_atom_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom *val, unsigned int num);
1559 EAPI int                       ecore_x_window_prop_atom_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom *val, unsigned int len);
1560 EAPI int                       ecore_x_window_prop_atom_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom **plst);
1561 EAPI void                      ecore_x_window_prop_atom_list_change(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom item, int op);
1562 EAPI void                      ecore_x_window_prop_window_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window *val, unsigned int num);
1563 EAPI int                       ecore_x_window_prop_window_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window *val, unsigned int len);
1564 EAPI int                       ecore_x_window_prop_window_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window **plst);
1565 
1566 EAPI Ecore_X_Atom              ecore_x_window_prop_any_type(void);
1567 EAPI void                      ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number);
1568 EAPI int                       ecore_x_window_prop_property_get(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size, unsigned char **data, int *num);
1569 EAPI void                      ecore_x_window_prop_property_del(Ecore_X_Window win, Ecore_X_Atom property);
1570 EAPI Ecore_X_Atom             *ecore_x_window_prop_list(Ecore_X_Window win, int *num_ret);
1571 EAPI void                      ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, const char *str);
1572 EAPI char                     *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type);
1573 EAPI Eina_Bool                 ecore_x_window_prop_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
1574 EAPI Ecore_X_WM_Protocol      *ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret);
1575 
1576 EAPI void                      ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1577 EAPI void                      ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
1578 EAPI void                      ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1579 EAPI void                      ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
1580 EAPI void                      ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1581 EAPI void                      ecore_x_window_shape_input_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
1582 EAPI void                      ecore_x_window_shape_input_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1583 EAPI void                      ecore_x_window_shape_input_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
1584 EAPI void                      ecore_x_window_shape_rectangle_subtract(Ecore_X_Window win, int x, int y, int w, int h);
1585 EAPI void                      ecore_x_window_shape_input_rectangle_subtract(Ecore_X_Window win, int x, int y, int w, int h);
1586 EAPI void                      ecore_x_window_shape_input_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1587 EAPI void                      ecore_x_window_shape_input_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
1588 EAPI void                      ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win);
1589 EAPI void                      ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1590 EAPI void                      ecore_x_window_shape_input_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1591 EAPI void                      ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
1592 EAPI void                      ecore_x_window_shape_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
1593 EAPI void                      ecore_x_window_shape_input_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
1594 EAPI void                      ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1595 EAPI void                      ecore_x_window_shape_input_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1596 EAPI Ecore_X_Rectangle        *ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret);
1597 EAPI Ecore_X_Rectangle        *ecore_x_window_shape_input_rectangles_get(Ecore_X_Window win, int *num_ret);
1598 EAPI void                      ecore_x_window_shape_events_select(Ecore_X_Window win, Eina_Bool on);
1599 EAPI void                      ecore_x_window_shape_input_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1600 
1601 EAPI Ecore_X_Pixmap            ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int dep);
1602 EAPI void                      ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
1603 EAPI void                      ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, Ecore_X_Drawable dest, Ecore_X_GC gc, int sx, int sy, int w, int h, int dx, int dy);
1604 EAPI void                      ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h);
1605 EAPI int                       ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
1606 
1607 EAPI Ecore_X_GC                ecore_x_gc_new(Ecore_X_Drawable draw, Ecore_X_GC_Value_Mask value_mask, const unsigned int *value_list);
1608 EAPI void                      ecore_x_gc_free(Ecore_X_GC gc);
1609 EAPI void                      ecore_x_gc_foreground_set(Ecore_X_GC gc, unsigned long foreground);
1610 EAPI void                      ecore_x_gc_background_set(Ecore_X_GC gc, unsigned long background);
1611 
1612 EAPI Eina_Bool                 ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Event_Mask mask, long d0, long d1, long d2, long d3, long d4);
1613 EAPI Eina_Bool                 ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type, const void *data, int len);
1614 EAPI Eina_Bool                 ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y);
1615 EAPI Eina_Bool                 ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b);
1616 EAPI Eina_Bool                 ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b);
1617 EAPI Eina_Bool                 ecore_x_mouse_in_send(Ecore_X_Window win, int x, int y);
1618 EAPI Eina_Bool                 ecore_x_mouse_out_send(Ecore_X_Window win, int x, int y);
1619 
1620 EAPI void                      ecore_x_drawable_geometry_get(Ecore_X_Drawable d, int *x, int *y, int *w, int *h);
1621 EAPI int                       ecore_x_drawable_border_width_get(Ecore_X_Drawable d);
1622 EAPI int                       ecore_x_drawable_depth_get(Ecore_X_Drawable d);
1623 EAPI void                      ecore_x_drawable_rectangle_fill(Ecore_X_Drawable d, Ecore_X_GC gc, int x, int y, int width, int height);
1624 
1625 EAPI Eina_Bool                 ecore_x_cursor_color_supported_get(void);
1626 EAPI Ecore_X_Cursor            ecore_x_cursor_new(Ecore_X_Window win, int *pixels, int w, int h, int hot_x, int hot_y);
1627 EAPI void                      ecore_x_cursor_free(Ecore_X_Cursor c);
1628 EAPI Ecore_X_Cursor            ecore_x_cursor_shape_get(int shape);
1629 EAPI void                      ecore_x_cursor_size_set(int size);
1630 EAPI int                       ecore_x_cursor_size_get(void);
1631 
1632 /* FIXME: these funcs need categorising */
1633 EAPI Ecore_X_Window           *ecore_x_window_root_list(int *num_ret);
1634 EAPI Ecore_X_Window            ecore_x_window_root_first_get(void);
1635 EAPI Eina_Bool                 ecore_x_window_manage(Ecore_X_Window win);
1636 EAPI void                      ecore_x_window_container_manage(Ecore_X_Window win);
1637 EAPI void                      ecore_x_window_client_manage(Ecore_X_Window win);
1638 EAPI void                      ecore_x_window_sniff(Ecore_X_Window win);
1639 EAPI void                      ecore_x_window_client_sniff(Ecore_X_Window win);
1640 
1641 EAPI Ecore_X_Atom              ecore_x_atom_get(const char *name);
1642 EAPI void                      ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms);
1643 EAPI char                     *ecore_x_atom_name_get(Ecore_X_Atom atom);
1644 
1645 EAPI void                      ecore_x_icccm_init(void);
1646 EAPI void                      ecore_x_icccm_state_set(Ecore_X_Window win, Ecore_X_Window_State_Hint state);
1647 EAPI Ecore_X_Window_State_Hint ecore_x_icccm_state_get(Ecore_X_Window win);
1648 EAPI void                      ecore_x_icccm_delete_window_send(Ecore_X_Window win, Ecore_X_Time t);
1649 EAPI void                      ecore_x_icccm_take_focus_send(Ecore_X_Window win, Ecore_X_Time t);
1650 EAPI void                      ecore_x_icccm_save_yourself_send(Ecore_X_Window win, Ecore_X_Time t);
1651 EAPI void                      ecore_x_icccm_move_resize_send(Ecore_X_Window win, int x, int y, int w, int h);
1652 EAPI void                      ecore_x_icccm_hints_set(Ecore_X_Window win, Eina_Bool accepts_focus, Ecore_X_Window_State_Hint initial_state, Ecore_X_Pixmap icon_pixmap, Ecore_X_Pixmap icon_mask, Ecore_X_Window icon_window, Ecore_X_Window window_group, Eina_Bool is_urgent);
1653 EAPI Eina_Bool                 ecore_x_icccm_hints_get(Ecore_X_Window win, Eina_Bool *accepts_focus, Ecore_X_Window_State_Hint *initial_state, Ecore_X_Pixmap *icon_pixmap, Ecore_X_Pixmap *icon_mask, Ecore_X_Window *icon_window, Ecore_X_Window *window_group, Eina_Bool *is_urgent);
1654 EAPI void                      ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win, Eina_Bool request_pos, Ecore_X_Gravity gravity, int min_w, int min_h, int max_w, int max_h, int base_w, int base_h, int step_x, int step_y, double min_aspect, double max_aspect);
1655 EAPI Eina_Bool                 ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win, Eina_Bool *request_pos, Ecore_X_Gravity *gravity, int *min_w, int *min_h, int *max_w, int *max_h, int *base_w, int *base_h, int *step_x, int *step_y, double *min_aspect, double *max_aspect);
1656 EAPI void                      ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
1657 EAPI char                     *ecore_x_icccm_title_get(Ecore_X_Window win);
1658 EAPI void                      ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win, Ecore_X_Atom *protos, int num);
1659 EAPI void                      ecore_x_icccm_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, Eina_Bool on);
1660 EAPI Eina_Bool                 ecore_x_icccm_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
1661 EAPI void                      ecore_x_icccm_name_class_set(Ecore_X_Window win, const char *n, const char *c);
1662 EAPI void                      ecore_x_icccm_name_class_get(Ecore_X_Window win, char **n, char **c);
1663 EAPI char                     *ecore_x_icccm_client_machine_get(Ecore_X_Window win);
1664 EAPI void                      ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
1665 EAPI void                      ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
1666 EAPI char                     *ecore_x_icccm_icon_name_get(Ecore_X_Window win);
1667 EAPI void                      ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t);
1668 EAPI void                      ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin);
1669 EAPI void                      ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin);
1670 EAPI void                      ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin);
1671 EAPI void                      ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
1672 EAPI Ecore_X_Window            ecore_x_icccm_transient_for_get(Ecore_X_Window win);
1673 EAPI void                      ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role);
1674 EAPI char                     *ecore_x_icccm_window_role_get(Ecore_X_Window win);
1675 EAPI void                      ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l);
1676 EAPI Ecore_X_Window            ecore_x_icccm_client_leader_get(Ecore_X_Window win);
1677 EAPI void                      ecore_x_icccm_iconic_request_send(Ecore_X_Window win, Ecore_X_Window root);
1678 
1679 typedef enum _Ecore_X_MWM_Hint_Func
1680 {
1681    ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
1682    ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
1683    ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
1684    ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
1685    ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
1686    ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
1687 } Ecore_X_MWM_Hint_Func;
1688 
1689 typedef enum _Ecore_X_MWM_Hint_Decor
1690 {
1691    ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
1692    ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
1693    ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
1694    ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
1695    ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
1696    ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
1697    ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
1698 } Ecore_X_MWM_Hint_Decor;
1699 
1700 typedef enum _Ecore_X_MWM_Hint_Input
1701 {
1702    ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
1703    ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
1704    ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
1705    ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
1706 } Ecore_X_MWM_Hint_Input;
1707 
1708 EAPI Eina_Bool                       ecore_x_mwm_hints_get(Ecore_X_Window win, Ecore_X_MWM_Hint_Func *fhint, Ecore_X_MWM_Hint_Decor *dhint, Ecore_X_MWM_Hint_Input *ihint);
1709 EAPI void                            ecore_x_mwm_borderless_set(Ecore_X_Window win, Eina_Bool borderless);
1710 
1711 /* netwm */
1712 EAPI void                            ecore_x_netwm_init(void);
1713 EAPI void                            ecore_x_netwm_shutdown(void);
1714 EAPI void                            ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, const char *wm_name);
1715 EAPI void                            ecore_x_netwm_supported_set(Ecore_X_Window root, Ecore_X_Atom *supported, int num);
1716 EAPI Eina_Bool                       ecore_x_netwm_supported_get(Ecore_X_Window root, Ecore_X_Atom **supported, int *num);
1717 EAPI void                            ecore_x_netwm_desk_count_set(Ecore_X_Window root, unsigned int n_desks);
1718 EAPI void                            ecore_x_netwm_desk_roots_set(Ecore_X_Window root, Ecore_X_Window *vroots, unsigned int n_desks);
1719 EAPI void                            ecore_x_netwm_desk_names_set(Ecore_X_Window root, const char **names, unsigned int n_desks);
1720 EAPI void                            ecore_x_netwm_desk_size_set(Ecore_X_Window root, unsigned int width, unsigned int height);
1721 EAPI void                            ecore_x_netwm_desk_workareas_set(Ecore_X_Window root, unsigned int *areas, unsigned int n_desks);
1722 EAPI unsigned int                   *ecore_x_netwm_desk_workareas_get(Ecore_X_Window root, unsigned int *n_desks);
1723 EAPI void                            ecore_x_netwm_desk_current_set(Ecore_X_Window root, unsigned int desk);
1724 EAPI void                            ecore_x_netwm_desk_viewports_set(Ecore_X_Window root, unsigned int *origins, unsigned int n_desks);
1725 EAPI void                            ecore_x_netwm_desk_layout_set(Ecore_X_Window root, int orientation, int columns, int rows, int starting_corner);
1726 EAPI void                            ecore_x_netwm_showing_desktop_set(Ecore_X_Window root, Eina_Bool on);
1727 EAPI void                            ecore_x_netwm_client_list_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1728 EAPI void                            ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1729 EAPI void                            ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win);
1730 EAPI void                            ecore_x_netwm_client_active_request(Ecore_X_Window root, Ecore_X_Window win, int type, Ecore_X_Window current_win);
1731 EAPI void                            ecore_x_netwm_name_set(Ecore_X_Window win, const char *name);
1732 EAPI int                             ecore_x_netwm_name_get(Ecore_X_Window win, char **name);
1733 EAPI void                            ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id);
1734 EAPI int                             ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
1735 EAPI void                            ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name);
1736 EAPI int                             ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name);
1737 EAPI void                            ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name);
1738 EAPI int                             ecore_x_netwm_icon_name_get(Ecore_X_Window win, char **name);
1739 EAPI void                            ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win, const char *name);
1740 EAPI int                             ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win, char **name);
1741 EAPI void                            ecore_x_netwm_desktop_set(Ecore_X_Window win, unsigned int desk);
1742 EAPI Eina_Bool                       ecore_x_netwm_desktop_get(Ecore_X_Window win, unsigned int *desk);
1743 EAPI void                            ecore_x_netwm_strut_set(Ecore_X_Window win, int left, int right, int top, int bottom);
1744 EAPI Eina_Bool                       ecore_x_netwm_strut_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom);
1745 EAPI void                            ecore_x_netwm_strut_partial_set(Ecore_X_Window win, int left, int right, int top, int bottom, int left_start_y, int left_end_y, int right_start_y, int right_end_y, int top_start_x, int top_end_x, int bottom_start_x, int bottom_end_x);
1746 EAPI Eina_Bool                       ecore_x_netwm_strut_partial_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom, int *left_start_y, int *left_end_y, int *right_start_y, int *right_end_y, int *top_start_x, int *top_end_x, int *bottom_start_x, int *bottom_end_x);
1747 
1748 EAPI void                            ecore_x_netwm_icons_set(Ecore_X_Window win, Ecore_X_Icon *icon, int num);
1749 
1750 EAPI Eina_Bool                       ecore_x_netwm_icons_get(Ecore_X_Window win, Ecore_X_Icon **icon, int *num);
1751 EAPI void                            ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, int x, int y, int width, int height);
1752 EAPI Eina_Bool                       ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, int *x, int *y, int *width, int *height);
1753 EAPI void                            ecore_x_netwm_pid_set(Ecore_X_Window win, int pid);
1754 EAPI Eina_Bool                       ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid);
1755 EAPI void                            ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
1756 EAPI Eina_Bool                       ecore_x_netwm_handled_icons_get(Ecore_X_Window win);
1757 EAPI void                            ecore_x_netwm_user_time_set(Ecore_X_Window win, unsigned int time);
1758 EAPI Eina_Bool                       ecore_x_netwm_user_time_get(Ecore_X_Window win, unsigned int *time);
1759 EAPI void                            ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State *state, unsigned int num);
1760 EAPI Eina_Bool                       ecore_x_netwm_window_state_get(Ecore_X_Window win, Ecore_X_Window_State **state, unsigned int *num);
1761 EAPI void                            ecore_x_netwm_window_type_set(Ecore_X_Window win, Ecore_X_Window_Type type);
1762 EAPI Eina_Bool                       ecore_x_netwm_window_type_get(Ecore_X_Window win, Ecore_X_Window_Type *type);
1763 EAPI int                             ecore_x_netwm_window_types_get(Ecore_X_Window win, Ecore_X_Window_Type **types);
1764 EAPI Eina_Bool                       ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action);
1765 EAPI void                            ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action *action, unsigned int num);
1766 EAPI Eina_Bool                       ecore_x_netwm_allowed_action_get(Ecore_X_Window win, Ecore_X_Action **action, unsigned int *num);
1767 EAPI void                            ecore_x_netwm_opacity_set(Ecore_X_Window win, unsigned int opacity);
1768 EAPI Eina_Bool                       ecore_x_netwm_opacity_get(Ecore_X_Window win, unsigned int *opacity);
1769 EAPI void                            ecore_x_netwm_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1770 EAPI Eina_Bool                       ecore_x_netwm_frame_size_get(Ecore_X_Window win, int *fl, int *fr, int *ft, int *fb);
1771 EAPI Eina_Bool                       ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter *counter);
1772 EAPI void                            ecore_x_netwm_ping_send(Ecore_X_Window win);
1773 EAPI void                            ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial);
1774 EAPI void                            ecore_x_netwm_state_request_send(Ecore_X_Window win, Ecore_X_Window root, Ecore_X_Window_State s1, Ecore_X_Window_State s2, Eina_Bool set);
1775 EAPI void                            ecore_x_netwm_desktop_request_send(Ecore_X_Window win, Ecore_X_Window root, unsigned int desktop);
1776 EAPI void                            ecore_x_netwm_moveresize_request_send(Ecore_X_Window win, int x, int y, Ecore_X_Netwm_Direction direction, unsigned int button);
1777 
1778 EAPI void                            ecore_x_e_init(void);
1779 EAPI void                            ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1780 EAPI void                            ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, unsigned int is_keyboard);
1781 EAPI Eina_Bool                       ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
1782 EAPI void                            ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1783 EAPI Ecore_X_Virtual_Keyboard_State  ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
1784 EAPI void                            ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1785 
1786 /* Illume functions */
1787 EAPI void                            ecore_x_e_illume_zone_set(Ecore_X_Window win, Ecore_X_Window zone);
1788 EAPI Ecore_X_Window                  ecore_x_e_illume_zone_get(Ecore_X_Window win);
1789 EAPI void                            ecore_x_e_illume_zone_list_set(Ecore_X_Window win, Ecore_X_Window *zones, unsigned int n_zones);
1790 EAPI void                            ecore_x_e_illume_conformant_set(Ecore_X_Window win, unsigned int is_conformant);
1791 EAPI Eina_Bool                       ecore_x_e_illume_conformant_get(Ecore_X_Window win);
1792 EAPI void                            ecore_x_e_illume_mode_set(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1793 EAPI Ecore_X_Illume_Mode             ecore_x_e_illume_mode_get(Ecore_X_Window win);
1794 EAPI void                            ecore_x_e_illume_mode_send(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1795 EAPI void                            ecore_x_e_illume_focus_back_send(Ecore_X_Window win);
1796 EAPI void                            ecore_x_e_illume_focus_forward_send(Ecore_X_Window win);
1797 EAPI void                            ecore_x_e_illume_focus_home_send(Ecore_X_Window win);
1798 EAPI void                            ecore_x_e_illume_close_send(Ecore_X_Window win);
1799 EAPI void                            ecore_x_e_illume_home_new_send(Ecore_X_Window win);
1800 EAPI void                            ecore_x_e_illume_home_del_send(Ecore_X_Window win);
1801 EAPI void                            ecore_x_e_illume_access_action_next_send(Ecore_X_Window win);
1802 EAPI void                            ecore_x_e_illume_access_action_prev_send(Ecore_X_Window win);
1803 EAPI void                            ecore_x_e_illume_access_action_activate_send(Ecore_X_Window win);
1804 EAPI void                            ecore_x_e_illume_access_action_over_send(Ecore_X_Window win);
1805 EAPI void                            ecore_x_e_illume_access_action_read_send(Ecore_X_Window win);
1806 EAPI void                            ecore_x_e_illume_access_action_read_next_send(Ecore_X_Window win);
1807 EAPI void                            ecore_x_e_illume_access_action_read_prev_send(Ecore_X_Window win);
1808 EAPI void                            ecore_x_e_illume_access_action_up_send(Ecore_X_Window win);
1809 EAPI void                            ecore_x_e_illume_access_action_down_send(Ecore_X_Window win);
1810 
1811 EAPI void                            ecore_x_e_illume_drag_set(Ecore_X_Window win, unsigned int drag);
1812 EAPI Eina_Bool                       ecore_x_e_illume_drag_get(Ecore_X_Window win);
1813 EAPI void                            ecore_x_e_illume_drag_locked_set(Ecore_X_Window win, unsigned int is_locked);
1814 EAPI Eina_Bool                       ecore_x_e_illume_drag_locked_get(Ecore_X_Window win);
1815 EAPI void                            ecore_x_e_illume_drag_start_send(Ecore_X_Window win);
1816 EAPI void                            ecore_x_e_illume_drag_end_send(Ecore_X_Window win);
1817 EAPI void                            ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1818 EAPI Eina_Bool                       ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1819 EAPI void                            ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1820 EAPI Eina_Bool                       ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1821 EAPI void                            ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1822 EAPI Eina_Bool                       ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1823 EAPI void                            ecore_x_e_illume_quickpanel_set(Ecore_X_Window win, unsigned int is_quickpanel);
1824 EAPI Eina_Bool                       ecore_x_e_illume_quickpanel_get(Ecore_X_Window win);
1825 EAPI void                            ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1826 EAPI Ecore_X_Illume_Quickpanel_State ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win);
1827 EAPI void                            ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1828 EAPI void                            ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win);
1829 EAPI void                            ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win, unsigned int priority);
1830 EAPI int                             ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win);
1831 EAPI void                            ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win, unsigned int priority);
1832 EAPI int                             ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win);
1833 EAPI void                            ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win, unsigned int zone);
1834 EAPI int                             ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win);
1835 EAPI void                            ecore_x_e_illume_quickpanel_zone_request_send(Ecore_X_Window win);
1836 EAPI void                            ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win);
1837 
1838 EAPI void                            ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win, Ecore_X_Illume_Clipboard_State state);
1839 
1840 EAPI Ecore_X_Illume_Clipboard_State  ecore_x_e_illume_clipboard_state_get(Ecore_X_Window win);
1841 
1842 EAPI void                            ecore_x_e_illume_clipboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1843 EAPI Eina_Bool                       ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1844 EAPI void                            ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, Ecore_X_Sync_Counter counter);
1845 EAPI Ecore_X_Sync_Counter            ecore_x_e_comp_sync_counter_get(Ecore_X_Window win);
1846 EAPI void                            ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win);
1847 EAPI void                            ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root, Ecore_X_Window win, int w, int h);
1848 EAPI void                            ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled);
1849 EAPI Eina_Bool                       ecore_x_e_comp_sync_supported_get(Ecore_X_Window root);
1850 EAPI void                            ecore_x_e_comp_sync_begin_send(Ecore_X_Window win);
1851 EAPI void                            ecore_x_e_comp_sync_end_send(Ecore_X_Window win);
1852 EAPI void                            ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win);
1853 
1854 EAPI void                            ecore_x_e_comp_flush_send(Ecore_X_Window win);
1855 EAPI void                            ecore_x_e_comp_dump_send(Ecore_X_Window win);
1856 EAPI void                            ecore_x_e_comp_pixmap_set(Ecore_X_Window win, Ecore_X_Pixmap pixmap);
1857 EAPI Ecore_X_Pixmap                  ecore_x_e_comp_pixmap_get(Ecore_X_Window win);
1858 
1859 /**
1860  * @brief Get the window profile
1861  *
1862  * @param win The client x window
1863  * @return The string value of the window profile, or NULL if none exists
1864  */
1865 EAPI char                            *ecore_x_e_window_profile_get(Ecore_X_Window win);
1866 /**
1867  * @brief Set the window profile
1868  *
1869  * @param win The client x window
1870  * @param profile The string value of the window profile
1871  */
1872 EAPI void                             ecore_x_e_window_profile_set(Ecore_X_Window win, const char *profile);
1873 /**
1874  * @brief Set the array of window profiles
1875  *
1876  * @param win The client x window
1877  * @param profiles The string array of window profiles
1878  * @param num_profiles The number of window profiles
1879  *
1880  * @deprecated use ecore_x_e_window_available_profiles_set
1881  */
1882 EAPI void                             ecore_x_e_window_profile_list_set(Ecore_X_Window  win, const char **profiles, unsigned int num_profiles);
1883 /**
1884  * @brief Get the array of window profiles
1885  *
1886  * @param win The client x window
1887  * @param profiles Where to return the string array of window profiles
1888  * @param ret_num Where to return the number of window profiles
1889  * @return EINA_TRUE if window profiles exist, EINA_FALSE otherwise
1890  *
1891  * @deprecated use ecore_x_e_window_available_profiles_get
1892  */
1893 EAPI Eina_Bool                        ecore_x_e_window_profile_list_get(Ecore_X_Window win, const char ***profiles, int *ret_num);
1894 /**
1895  * @brief Set the status for the window profile support
1896  *
1897  * @param root The root window
1898  * @param enabled The enabled value for the window profile support
1899  *
1900  * @since 1.8
1901  */
1902 EAPI void                             ecore_x_e_window_profile_supported_set(Ecore_X_Window root, Eina_Bool enabled);
1903 /**
1904  * @brief Query if the window profile is supported
1905  *
1906  * @param root The root window
1907  * @return EINA_TRUE if it is supported, EINA_FALSE otherwise
1908  *
1909  * @since 1.8
1910  */
1911 EAPI Eina_Bool                        ecore_x_e_window_profile_supported_get(Ecore_X_Window root);
1912 /**
1913  * @brief Set the array of available window profiles
1914  *
1915  * @param win The client x window
1916  * @param profiles The string array of available window profiles
1917  * @param count The number of available window profiles
1918  *
1919  * @since 1.8
1920  */
1921 EAPI void                             ecore_x_e_window_available_profiles_set(Ecore_X_Window win, const char **profiles, unsigned int count);
1922 /**
1923  * @brief Get the array of avaialbe window profiles
1924  *
1925  * @param win The client x window
1926  * @param profiles Where to return the string array of available window profiles
1927  * @param count Where to return the number of members in profiles
1928  * @return EINA_TRUE if available window profiles exist, EINA_FALSE otherwise
1929  *
1930  * @since 1.8
1931  */
1932 EAPI Eina_Bool                        ecore_x_e_window_available_profiles_get(Ecore_X_Window win, const char ***profiles, int *count);
1933 /**
1934  * @brief Send a profile change event to the window manager
1935  *
1936  * This function sends a request to the window manager to change the profile.
1937  * If honored by the window manager, the client will receive a profile change
1938  * request event back. If the client has replied, the window manager will move
1939  * the client window on the virtual desktop associated with changed profile.
1940  *
1941  * @param root The root x window
1942  * @param win The client x window
1943  * @param profile The string value of the window profile
1944  *
1945  * @since 1.8
1946  */
1947 EAPI void                             ecore_x_e_window_profile_change_send(Ecore_X_Window root, Ecore_X_Window win, const char *profile);
1948 /**
1949  * @brief Send a profile change request event to the client
1950  *
1951  * This function sends a request to the client to change the profile.
1952  * If the client has replied, the window manager will move the client window
1953  * on the virtual desktop associated with changed profile.
1954  *
1955  * @param win The client x window
1956  * @param profile The string value of the window profile
1957  *
1958  * @since 1.8
1959  */
1960 EAPI void                             ecore_x_e_window_profile_change_request_send(Ecore_X_Window win, const char *profile);
1961 /**
1962  * @brief Send a profile change done event to the window manager
1963  *
1964  * This function sends a profile change done event to the window manager.
1965  * Upon receiving, the window manager will move the client window
1966  * on the virtual desktop associated with changed profile.
1967  *
1968  * @param root The root x window
1969  * @param win The client x window
1970  * @param profile The string value of the window profile
1971  *
1972  * @since 1.8
1973  */
1974 EAPI void                             ecore_x_e_window_profile_change_done_send(Ecore_X_Window root, Ecore_X_Window win, const char *profile);
1975 
1976 EAPI Ecore_X_Sync_Alarm              ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
1977 EAPI Eina_Bool                       ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
1978 EAPI Eina_Bool                       ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter, unsigned int *val);
1979 EAPI Ecore_X_Sync_Counter            ecore_x_sync_counter_new(int val);
1980 EAPI void                            ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter);
1981 EAPI void                            ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter, int by);
1982 EAPI void                            ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter, int val);
1983 
1984 EAPI void                            ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter, int val);
1985 EAPI void                            ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter, int val_hi, unsigned int val_lo);
1986 EAPI Eina_Bool                       ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter, int *val_hi, unsigned int *val_lo);
1987 
1988 EAPI int                             ecore_x_xinerama_screen_count_get(void);
1989 EAPI Eina_Bool                       ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h);
1990 
1991 EAPI Eina_Bool                       ecore_x_screensaver_event_available_get(void);
1992 EAPI int                             ecore_x_screensaver_idle_time_get(void);
1993 EAPI void                            ecore_x_screensaver_set(int timeout, int interval, int prefer_blanking, int allow_exposures);
1994 EAPI void                            ecore_x_screensaver_timeout_set(int timeout);
1995 EAPI int                             ecore_x_screensaver_timeout_get(void);
1996 EAPI void                            ecore_x_screensaver_blank_set(int timeout);
1997 EAPI int                             ecore_x_screensaver_blank_get(void);
1998 EAPI void                            ecore_x_screensaver_expose_set(int timeout);
1999 EAPI int                             ecore_x_screensaver_expose_get(void);
2000 EAPI void                            ecore_x_screensaver_interval_set(int timeout);
2001 EAPI int                             ecore_x_screensaver_interval_get(void);
2002 EAPI void                            ecore_x_screensaver_event_listen_set(Eina_Bool on);
2003 EAPI Eina_Bool                       ecore_x_screensaver_custom_blanking_enable(void); /** @since 1.7 */
2004 EAPI Eina_Bool                       ecore_x_screensaver_custom_blanking_disable(void); /** @since 1.7 */
2005 EINA_DEPRECATED EAPI void            ecore_x_screensaver_supend(void); /** @since 1.11 */
2006 EAPI void                            ecore_x_screensaver_resume(void); /** @since 1.11 */
2007 EAPI void                            ecore_x_screensaver_reset(void); /** @since 1.11 */
2008 EAPI void                            ecore_x_screensaver_activate(void); /** @since 1.11 */
2009 EAPI void                            ecore_x_screensaver_suspend(void); /** @since 1.13 */
2010 
2011 /* FIXME: these funcs need categorising */
2012 
2013 typedef struct _Ecore_X_Window_Attributes
2014 {
2015    Ecore_X_Window   root;
2016    int              x, y, w, h;
2017    int              border;
2018    int              depth;
2019    Eina_Bool        visible : 1;
2020    Eina_Bool        viewable : 1;
2021    Eina_Bool        override : 1;
2022    Eina_Bool        input_only : 1;
2023    Eina_Bool        save_under : 1;
2024    struct
2025    {
2026       Ecore_X_Event_Mask mine;
2027       Ecore_X_Event_Mask all;
2028       Ecore_X_Event_Mask no_propagate;
2029    } event_mask;
2030    Ecore_X_Gravity  window_gravity;
2031    Ecore_X_Gravity  pixel_gravity;
2032    Ecore_X_Colormap colormap;
2033    Ecore_X_Visual   visual;
2034    /* FIXME: missing
2035     * int map_installed;
2036     * Screen *screen;
2037     */
2038 } Ecore_X_Window_Attributes;
2039 
2040 EAPI Eina_Bool        ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att_ret);
2041 EAPI void             ecore_x_window_save_set_add(Ecore_X_Window win);
2042 EAPI void             ecore_x_window_save_set_del(Ecore_X_Window win);
2043 EAPI Ecore_X_Window  *ecore_x_window_children_get(Ecore_X_Window win, int *num);
2044 
2045 EAPI Eina_Bool        ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold);
2046 EAPI Eina_Bool        ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold);
2047 EAPI Eina_Bool        ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
2048 EAPI Eina_Bool        ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
2049 EAPI Eina_Bool        ecore_x_pointer_grab(Ecore_X_Window win);
2050 EAPI Eina_Bool        ecore_x_pointer_confine_grab(Ecore_X_Window win);
2051 EAPI void             ecore_x_pointer_ungrab(void);
2052 EAPI Eina_Bool        ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
2053 EAPI Eina_Bool        ecore_x_keyboard_grab(Ecore_X_Window win);
2054 EAPI void             ecore_x_keyboard_ungrab(void);
2055 EAPI void             ecore_x_grab(void);
2056 EAPI void             ecore_x_ungrab(void);
2057 EAPI void             ecore_x_passive_grab_replay_func_set(Eina_Bool (*func)(void *data, int event_type, void *event), void *data);
2058 EAPI void             ecore_x_window_button_grab(Ecore_X_Window win, int button, Ecore_X_Event_Mask event_mask, int mod, int any_mod);
2059 EAPI void             ecore_x_window_button_ungrab(Ecore_X_Window win, int button, int mod, int any_mod);
2060 EAPI void             ecore_x_window_key_grab(Ecore_X_Window win, const char *key, int mod, int any_mod);
2061 EAPI void             ecore_x_window_key_ungrab(Ecore_X_Window win, const char *key, int mod, int any_mod);
2062 
2063 EAPI void             ecore_x_focus_reset(void);
2064 EAPI void             ecore_x_events_allow_all(void);
2065 EAPI void             ecore_x_pointer_last_xy_get(int *x, int *y);
2066 EAPI void             ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
2067 EAPI void             ecore_x_pointer_root_xy_get(int *x, int *y);
2068 
2069 /* ecore_x_region.c */
2070 EAPI Ecore_X_XRegion *ecore_x_xregion_new(void);
2071 EAPI void             ecore_x_xregion_free(Ecore_X_XRegion *region);
2072 EAPI Eina_Bool        ecore_x_xregion_set(Ecore_X_XRegion *region, Ecore_X_GC gc);
2073 EAPI void             ecore_x_xregion_translate(Ecore_X_XRegion *region, int x, int y);
2074 EAPI Eina_Bool        ecore_x_xregion_intersect(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
2075 EAPI Eina_Bool        ecore_x_xregion_union(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
2076 EAPI Eina_Bool        ecore_x_xregion_union_rect(Ecore_X_XRegion *dst, Ecore_X_XRegion *src, Ecore_X_Rectangle *rect);
2077 EAPI Eina_Bool        ecore_x_xregion_subtract(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
2078 EAPI Eina_Bool        ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
2079 EAPI Eina_Bool        ecore_x_xregion_is_equal(Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
2080 EAPI Eina_Bool        ecore_x_xregion_point_contain(Ecore_X_XRegion *region, int x, int y);
2081 EAPI Eina_Bool        ecore_x_xregion_rect_contain(Ecore_X_XRegion *region, Ecore_X_Rectangle *rect);
2082 
2083 /* ecore_x_randr.c */
2084 
2085 /* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset'
2086  * depends on the context. In most cases 'Ecore_X_Randr_Unset'
2087  * can be used, but in some cases -1 is a special value to
2088  * functions, thus 'Ecore_X_Randr_None' (=0) must be used.
2089  */
2090 
2091 typedef short Ecore_X_Randr_Refresh_Rate;
2092 typedef int   Ecore_X_Randr_Crtc_Gamma;
2093 typedef int   Ecore_X_Randr_Signal_Format;
2094 typedef int   Ecore_X_Randr_Signal_Property;
2095 typedef int   Ecore_X_Randr_Connector_Type;
2096 
2097 typedef enum _Ecore_X_Randr_Mode_Flags
2098 {
2099    ECORE_X_RANDR_MODE_HSYNC_POSITIVE  = 0x00000001,
2100    ECORE_X_RANDR_MODE_HSYNC_NEGATIVE  = 0x00000002,
2101    ECORE_X_RANDR_MODE_VSYNC_POSITIVE  = 0x00000004,
2102    ECORE_X_RANDR_MODE_VSYNC_NEGATIVE  = 0x00000008,
2103    ECORE_X_RANDR_MODE_INTERLACE       = 0x00000010,
2104    ECORE_X_RANDR_MODE_DOUBLE_SCAN     = 0x00000020,
2105    ECORE_X_RANDR_MODE_CSYNC           = 0x00000040,
2106    ECORE_X_RANDR_MODE_CSYNC_POSITIVE  = 0x00000080,
2107    ECORE_X_RANDR_MODE_CSYNC_NEGATIVE  = 0x00000100,
2108    ECORE_X_RANDR_MODE_HSKEW_PRESENT   = 0x00000200,
2109    ECORE_X_RANDR_MODE_BCAST           = 0x00000400,
2110    ECORE_X_RANDR_MODE_PIXEL_MULTIPLEX = 0x00000800,
2111    ECORE_X_RANDR_MODE_DOUBLE_CLOCK    = 0x00001000,
2112    ECORE_X_RANDR_MODE_CLOCK_DIV_BY_2  = 0x00002000,
2113 } Ecore_X_Randr_Mode_Flags;
2114 
2115 typedef struct _Ecore_X_Randr_Mode_Info
2116 {
2117    Ecore_X_ID    xid;
2118    unsigned int  width;
2119    unsigned int  height;
2120    unsigned long dotClock;
2121    unsigned int  hSyncStart;
2122    unsigned int  hSyncEnd;
2123    unsigned int  hTotal;
2124    unsigned int  hSkew;
2125    unsigned int  vSyncStart;
2126    unsigned int  vSyncEnd;
2127    unsigned int  vTotal;
2128    char         *name;
2129    unsigned int  nameLength;
2130    unsigned long modeFlags;
2131 } Ecore_X_Randr_Mode_Info;
2132 
2133 typedef struct _Ecore_X_Randr_Crtc_Gamma_Info
2134 {
2135    int size;
2136    unsigned short *red;
2137    unsigned short *green;
2138    unsigned short *blue;
2139 } Ecore_X_Randr_Crtc_Gamma_Info;
2140 
2141 EAPI int                                       ecore_x_randr_version_get(void);
2142 EAPI Eina_Bool                                 ecore_x_randr_query(void);
2143 EAPI Ecore_X_Time                              ecore_x_randr_config_timestamp_get(Ecore_X_Window root); /** @since 1.8 */
2144 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_screen_primary_output_orientations_get(Ecore_X_Window root);
2145 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_screen_primary_output_orientation_get(Ecore_X_Window root);
2146 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_orientation_set(Ecore_X_Window root, Ecore_X_Randr_Orientation orientation);
2147 EAPI Ecore_X_Randr_Screen_Size_MM             *ecore_x_randr_screen_primary_output_sizes_get(Ecore_X_Window root, int *num);
2148 
2149 /**
2150  * @brief get the current set size of a given screen's primary output
2151  * @param root window which's primary output will be queried
2152  * @param w the current size's width
2153  * @param h the current size's height
2154  * @param w_mm the current size's width in mm
2155  * @param h_mm the current size's height in mm
2156  * @param size_index of current set size to be used with ecore_x_randr_primary_output_size_set()
2157  */
2158 EAPI void                                      ecore_x_randr_screen_primary_output_current_size_get(Ecore_X_Window root, int *w, int *h, int *w_mm, int *h_mm, int *size_index);
2159 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root, int size_index);
2160 EAPI Ecore_X_Randr_Refresh_Rate                ecore_x_randr_screen_primary_output_current_refresh_rate_get(Ecore_X_Window root);
2161 EAPI Ecore_X_Randr_Refresh_Rate               *ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root, int size_index, int *num);
2162 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_refresh_rate_set(Ecore_X_Window root, int size_index, Ecore_X_Randr_Refresh_Rate rate);
2163 
2164 EAPI void                                      ecore_x_randr_events_select(Ecore_X_Window win, Eina_Bool on);
2165 
2166 EAPI void                                      ecore_x_randr_screen_current_size_get(Ecore_X_Window root, int *w, int *h, int *w_mm, int *h_mm);
2167 EAPI void                                      ecore_x_randr_screen_size_range_get(Ecore_X_Window root, int *wmin, int *hmin, int *wmax, int *hmax);
2168 EAPI void                                      ecore_x_randr_screen_reset(Ecore_X_Window root);
2169 EAPI Eina_Bool                                 ecore_x_randr_screen_current_size_set(Ecore_X_Window root, int w, int h, int w_mm, int h_mm);
2170 EAPI Ecore_X_Randr_Mode_Info                 **ecore_x_randr_modes_info_get(Ecore_X_Window root, int *num);
2171 EAPI Ecore_X_Randr_Mode                        ecore_x_randr_mode_info_add(Ecore_X_Window root, Ecore_X_Randr_Mode_Info *mode_info);
2172 EAPI void                                      ecore_x_randr_mode_del(Ecore_X_Randr_Mode mode);
2173 EAPI Ecore_X_Randr_Mode_Info                  *ecore_x_randr_mode_info_get(Ecore_X_Window root, Ecore_X_Randr_Mode mode);
2174 EAPI void                                      ecore_x_randr_mode_info_free(Ecore_X_Randr_Mode_Info *mode_info);
2175 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_crtcs_get(Ecore_X_Window root, int *num);
2176 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_outputs_get(Ecore_X_Window root, int *num);
2177 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_window_outputs_get(Ecore_X_Window window, int *num);
2178 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_current_output_get(Ecore_X_Window window, int *num);
2179 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_window_crtcs_get(Ecore_X_Window window, int *num);
2180 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_current_crtc_get(Ecore_X_Window window, int *num);
2181 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_crtc_outputs_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *num);
2182 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_crtc_possible_outputs_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *num);
2183 EAPI void                                      ecore_x_randr_crtc_geometry_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h);
2184 EAPI void                                      ecore_x_randr_crtc_pos_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y);
2185 EAPI Eina_Bool                                 ecore_x_randr_crtc_pos_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int x, int y);
2186 EAPI Ecore_X_Randr_Mode                        ecore_x_randr_crtc_mode_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2187 EAPI Eina_Bool                                 ecore_x_randr_crtc_mode_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Output *outputs, int noutputs, Ecore_X_Randr_Mode mode);
2188 EAPI void                                      ecore_x_randr_crtc_size_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *w, int *h);
2189 EAPI Ecore_X_Randr_Refresh_Rate                ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Mode mode);
2190 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_crtc_orientations_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2191 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_crtc_orientation_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2192 EAPI Eina_Bool                                 ecore_x_randr_crtc_orientation_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, const Ecore_X_Randr_Orientation orientation);
2193 EAPI Eina_Bool                                 ecore_x_randr_crtc_clone_set(Ecore_X_Window root, Ecore_X_Randr_Crtc original, Ecore_X_Randr_Crtc clone);
2194 EAPI Eina_Bool                                 ecore_x_randr_crtc_settings_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Output *outputs, int noutputs, int x, int y, Ecore_X_Randr_Mode mode, Ecore_X_Randr_Orientation orientation);
2195 EAPI Eina_Bool                                 ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc_r1, Ecore_X_Randr_Crtc crtc_r2, Ecore_X_Randr_Output_Policy policy, Ecore_X_Randr_Relative_Alignment alignment);
2196 EAPI Ecore_X_Randr_Crtc_Info                  *ecore_x_randr_crtc_info_get(Ecore_X_Window root, const Ecore_X_Randr_Crtc crtc); /**< @since 1.8 */
2197 EAPI void                                      ecore_x_randr_crtc_info_free(Ecore_X_Randr_Crtc_Info *info); /**< @since 1.8 */
2198 EAPI Eina_Bool                                 ecore_x_randr_output_mode_add(Ecore_X_Randr_Output output, Ecore_X_Randr_Mode mode);
2199 EAPI void                                      ecore_x_randr_output_mode_del(Ecore_X_Randr_Output output, Ecore_X_Randr_Mode mode);
2200 EAPI Ecore_X_Randr_Mode                       *ecore_x_randr_output_modes_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num, int *npreferred);
2201 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_output_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2202 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_output_possible_crtcs_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2203 EAPI Ecore_X_Randr_Crtc                        ecore_x_randr_output_crtc_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2204 EAPI char                                     *ecore_x_randr_output_name_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *len);
2205 EINA_DEPRECATED EAPI int                       ecore_x_randr_crtc_gamma_ramp_size_get(Ecore_X_Randr_Crtc crtc);
2206 EINA_DEPRECATED EAPI Ecore_X_Randr_Crtc_Gamma **ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc);
2207 EINA_DEPRECATED EAPI Eina_Bool                 ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc, const Ecore_X_Randr_Crtc_Gamma *red, const Ecore_X_Randr_Crtc_Gamma *green, const Ecore_X_Randr_Crtc_Gamma *blue);
2208 EAPI Eina_Bool                                 ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root, const Ecore_X_Randr_Crtc *not_moved, int nnot_moved, int dx, int dy);
2209 EAPI Eina_Bool                                 ecore_x_randr_move_crtcs(Ecore_X_Window root, const Ecore_X_Randr_Crtc *crtcs, int ncrtc, int dx, int dy);
2210 EAPI void                                      ecore_x_randr_mode_size_get(Ecore_X_Window root, Ecore_X_Randr_Mode mode, int *w, int *h);
2211 EAPI Ecore_X_Randr_Connection_Status           ecore_x_randr_output_connection_status_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2212 EAPI void                                      ecore_x_randr_output_size_mm_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *w, int *h);
2213 EAPI Eina_Bool                                 ecore_x_randr_output_crtc_set(Ecore_X_Window root, Ecore_X_Randr_Output output, const Ecore_X_Randr_Crtc crtc);
2214 
2215 EAPI int                                       ecore_x_randr_crtc_gamma_size_get(Ecore_X_Randr_Crtc crtc); /**< @since 1.8 */
2216 EAPI Ecore_X_Randr_Crtc_Gamma_Info            *ecore_x_randr_crtc_gamma_get(Ecore_X_Randr_Crtc crtc); /**< @since 1.8 */
2217 EAPI Eina_Bool                                 ecore_x_randr_crtc_gamma_set(Ecore_X_Randr_Crtc crtc, const Ecore_X_Randr_Crtc_Gamma_Info *gamma); /**< @since 1.8 */
2218 
2219 /**
2220  * @brief Validates the header from raw EDID data.
2221  *
2222  * @param edid The edid structure.
2223  * @param edid_length Length of the edid structure.
2224  * @return @c EINA_TRUE, if the header is valid, @c EINA_FALSE otherwise.
2225  */
2226 EAPI Eina_Bool                                 ecore_x_randr_edid_has_valid_header(unsigned char *edid, unsigned long edid_length);
2227 
2228 /**
2229  * @brief Checks whether a display's EDID has a valid checksum.
2230  *
2231  * @param edid The edid structure.
2232  * @param edid_length Length of the edid structure.
2233  * @return @c EINA_TRUE, if the checksum is valid, @c EINA_FALSE otherwise.
2234  */
2235 EAPI Eina_Bool                                 ecore_x_randr_edid_info_has_valid_checksum(unsigned char *edid, unsigned long edid_length);
2236 
2237 /**
2238  * @brief Get the encoded version from raw EDID data.
2239  *
2240  * The return value has the minor version in the lowest 8 bits, and the major
2241  * version in all the rest of the bits. i.e.
2242  *
2243  * minor = (version & 0x000000ff);
2244  * major = (version & 0xffffff00) >> 8;
2245  *
2246  * @param edid the edid structure
2247  * @param edid_length length of the edid structure
2248  * @return The encoded major and minor version encasuplated an int.
2249  */
2250 EAPI int                                       ecore_x_randr_edid_version_get(unsigned char *edid, unsigned long edid_length);
2251 
2252 /**
2253  * @brief Get the encoded manufacturer from raw EDID data.
2254  *
2255  * @param edid the edid structure
2256  * @param edid_length length of the edid structure
2257  * @return The encoded manufacturer identifier.
2258  */
2259 EAPI char                                     *ecore_x_randr_edid_manufacturer_name_get(unsigned char *edid, unsigned long edid_length);
2260 
2261 /**
2262  * @brief Get the encoded name from raw EDID data.
2263  *
2264  * @param edid the edid structure
2265  * @param edid_length length of the edid structure
2266  * @return The encoded manufacturer identifier.
2267  */
2268 EAPI char                                     *ecore_x_randr_edid_display_name_get(unsigned char *edid, unsigned long edid_length);
2269 
2270 /**
2271  * @brief Get the encoded ASCII from raw EDID data.
2272  *
2273  * @param edid the edid structure
2274  * @param edid_length length of the edid structure
2275  * @return The encoded ASCII display identifier.
2276  */
2277 EAPI char                                     *ecore_x_randr_edid_display_ascii_get(unsigned char *edid, unsigned long edid_length);
2278 
2279 /**
2280  * @brief Get the encoded serial identifier from raw EDID data.
2281  *
2282  * @param edid the edid structure
2283  * @param edid_length length of the edid structure
2284  * @return The encoded serial identifier.
2285  */
2286 EAPI char                                     *ecore_x_randr_edid_display_serial_get(unsigned char *edid, unsigned long edid_length);
2287 
2288 /**
2289  * @brief Get the encoded model number from raw EDID data.
2290  *
2291  * The manufacturer ID table is necessary for a useful description.
2292  *
2293  * @param edid the edid structure
2294  * @param edid_length length of the edid structure
2295  * @return The encoded model number.
2296  */
2297 EAPI int                                       ecore_x_randr_edid_model_get(unsigned char *edid, unsigned long edid_length);
2298 
2299 /**
2300  * @brief Get the manufacturer serial number from raw EDID data.
2301  *
2302  * @param edid the edid structure
2303  * @param edid_length length of the edid structure
2304  * @return The encoded serial manufacturer serial number.
2305  */
2306 EAPI int                                       ecore_x_randr_edid_manufacturer_serial_number_get(unsigned char *edid, unsigned long edid_length);
2307 
2308 /**
2309  * @brief Get the manufacturer model number from raw EDID data.
2310  *
2311  * @param edid the edid structure
2312  * @param edid_length length of the edid structure
2313  * @return The manufacturer's model number.
2314  */
2315 EAPI int                                       ecore_x_randr_edid_manufacturer_model_get(unsigned char *edid, unsigned long edid_length);
2316 
2317 /**
2318  * @brief Looks up the DPMS support from raw EDID data.
2319  *
2320  * @param edid The edid structure.
2321  * @param edid_length Length of the edid structure.
2322  * @return @c EINA_TRUE, if DPMS is supported in some way, @c EINA_FALSE
2323  * otherwise.
2324  */
2325 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_available_get(unsigned char *edid, unsigned long edid_length);
2326 
2327 /**
2328  * @brief Looks up the DPMS Standby support from raw EDID data.
2329  *
2330  * @param edid The edid structure.
2331  * @param edid_length Length of the edid structure.
2332  * @return @c EINA_TRUE, if DPMS Standby is supported, @c EINA_FALSE otherwise.
2333  */
2334 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_standby_available_get(unsigned char *edid, unsigned long edid_length);
2335 
2336 /**
2337  * @brief Looks up the DPMS Suspend support from raw EDID data.
2338  *
2339  * @param edid The edid structure.
2340  * @param edid_length Length of the edid structure.
2341  * @return @c EINA_TRUE, if DPMS Suspend is supported, @c EINA_FALSE otherwise.
2342  */
2343 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_suspend_available_get(unsigned char *edid, unsigned long edid_length);
2344 
2345 /**
2346  * @brief Looks up the DPMS Off support from raw EDID data.
2347  *
2348  * @param edid The edid structure.
2349  * @param edid_length Length of the edid structure.
2350  * @return @c EINA_TRUE, if DPMS Off is supported, @c EINA_FALSE otherwise.
2351  */
2352 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_off_available_get(unsigned char *edid, unsigned long edid_length);
2353 
2354 /**
2355  * @brief Get the preferred aspect ratio from raw EDID data.
2356  *
2357  * @param edid the edid structure
2358  * @param edid_length length of the edid structure
2359  * @return The preferred aspect ratio.
2360  */
2361 EAPI Ecore_X_Randr_Edid_Aspect_Ratio           ecore_x_randr_edid_display_aspect_ratio_preferred_get(unsigned char *edid, unsigned long edid_length);
2362 
2363 /**
2364  * @brief Get the supported aspect ratios from raw EDID data.
2365  *
2366  * @param edid the edid structure
2367  * @param edid_length length of the edid structure
2368  * @return The supported aspect ratios.
2369  */
2370 EAPI Ecore_X_Randr_Edid_Aspect_Ratio           ecore_x_randr_edid_display_aspect_ratios_get(unsigned char *edid, unsigned long edid_length);
2371 
2372 /**
2373  * @brief Get the supported colorschemes from raw EDID data.
2374  *
2375  * @param edid the edid structure
2376  * @param edid_length length of the edid structure
2377  * @return The supported colorschemes.
2378  */
2379 EAPI Ecore_X_Randr_Edid_Display_Colorscheme    ecore_x_randr_edid_display_colorscheme_get(unsigned char *edid, unsigned long edid_length);
2380 
2381 /**
2382  * @brief Get the display type from raw EDID data.
2383  *
2384  * @param edid The edid structure.
2385  * @param edid_length Length of the edid structure.
2386  * @return @c EINA_TRUE, if the display is a digital one, @c EINA_FALSE
2387  * otherwise.
2388  */
2389 EAPI Eina_Bool                                 ecore_x_randr_edid_display_type_digital_get(unsigned char *edid, unsigned long edid_length);
2390 
2391 /**
2392  * @brief Get the display interface type from raw EDID data.
2393  *
2394  * @param edid the edid structure
2395  * @param edid_length length of the edid structure
2396  * @return The interface type.
2397  */
2398 EAPI Ecore_X_Randr_Edid_Display_Interface_Type ecore_x_randr_edid_display_interface_type_get(unsigned char *edid, unsigned long edid_length);
2399 
2400 EAPI Eina_Bool                                 ecore_x_randr_output_backlight_available(void);
2401 EAPI void                                      ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level);
2402 EAPI double                                    ecore_x_randr_output_backlight_level_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2403 EAPI Eina_Bool                                 ecore_x_randr_output_backlight_level_set(Ecore_X_Window root, Ecore_X_Randr_Output output, double level);
2404 EAPI Ecore_X_Randr_Output                      ecore_x_randr_primary_output_get(Ecore_X_Window root);
2405 EAPI void                                      ecore_x_randr_primary_output_set(Ecore_X_Window root, Ecore_X_Randr_Output output);
2406 EAPI Ecore_X_Render_Subpixel_Order             ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2407 EAPI unsigned char                            *ecore_x_randr_output_edid_get(Ecore_X_Window root, Ecore_X_Randr_Output output, unsigned long *length);
2408 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_output_wired_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2409 EAPI Ecore_X_Randr_Output                    **ecore_x_randr_output_compatibility_list_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2410 EAPI Ecore_X_Randr_Signal_Format              *ecore_x_randr_output_signal_formats_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2411 EAPI Eina_Bool                                 ecore_x_randr_output_signal_format_set(Ecore_X_Window root, Ecore_X_Randr_Output output, Ecore_X_Randr_Signal_Format *signal);
2412 EAPI Ecore_X_Randr_Signal_Property            *ecore_x_randr_output_signal_properties_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2413 EAPI int                                       ecore_x_randr_output_connector_number_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2414 EAPI Ecore_X_Randr_Connector_Type              ecore_x_randr_output_connector_type_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2415 EAPI void                                      ecore_x_randr_crtc_panning_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h); /**< @since 1.8 */
2416 EAPI Eina_Bool                                 ecore_x_randr_crtc_panning_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, const int x, const int y, const int w, const int h); /**< @since 1.8 */
2417 EAPI void                                      ecore_x_randr_crtc_tracking_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h); /**< @since 1.8 */
2418 EAPI Eina_Bool                                 ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, const int x, const int y, const int w, const int h); /**< @since 1.8 */
2419 EAPI void                                      ecore_x_randr_crtc_border_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h); /**< @since 1.8 */
2420 EAPI Eina_Bool                                 ecore_x_randr_crtc_border_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, const int left, const int top, const int right, const int bottom); /**< @since 1.8 */
2421 
2422 /* XRender Support (horrendously incomplete) */
2423 typedef Ecore_X_ID Ecore_X_Picture;
2424 
2425 /* XFixes Extension Support */
2426 typedef Ecore_X_ID Ecore_X_Region;
2427 
2428 typedef enum _Ecore_X_Region_Type
2429 {
2430    ECORE_X_REGION_BOUNDING,
2431    ECORE_X_REGION_CLIP
2432 } Ecore_X_Region_Type;
2433 
2434 EAPI Ecore_X_Region     ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
2435 EAPI Ecore_X_Region     ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
2436 EAPI Ecore_X_Region     ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type);
2437 EAPI Ecore_X_Region     ecore_x_region_new_from_gc(Ecore_X_GC gc);
2438 EAPI Ecore_X_Region     ecore_x_region_new_from_picture(Ecore_X_Picture picture);
2439 EAPI void               ecore_x_region_free(Ecore_X_Region region);
2440 EAPI void               ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num);
2441 EAPI void               ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source);
2442 EAPI void               ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2443 EAPI void               ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2444 EAPI void               ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2445 EAPI void               ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source);
2446 EAPI void               ecore_x_region_translate(Ecore_X_Region region, int dx, int dy);
2447 EAPI void               ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source);
2448 EAPI Ecore_X_Rectangle *ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds);
2449 EAPI void               ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom);
2450 EAPI void               ecore_x_region_gc_clip_set(Ecore_X_Region region, Ecore_X_GC gc, int x_origin, int y_origin);
2451 EAPI void               ecore_x_region_window_shape_set(Ecore_X_Region region, Ecore_X_Window win, Ecore_X_Shape_Type type, int x_offset, int y_offset);
2452 EAPI void               ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore_X_Picture picture, int x_origin, int y_origin);
2453 EAPI void               ecore_x_cursor_show(void);
2454 EAPI void               ecore_x_cursor_hide(void);
2455 EAPI void               ecore_x_root_screen_barriers_set(Ecore_X_Rectangle *screens, int num); /** @since 1.24 */
2456 
2457 /**
2458  * xfixes selection notification request.
2459  *
2460  * This lets you choose which selections you want to get notifications for.
2461  * @param selection The selection atom.
2462  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
2463  * @since 1.1.0
2464  */
2465 EAPI Eina_Bool          ecore_x_fixes_selection_notification_request(Ecore_X_Atom selection);
2466 
2467 /**
2468  * xfixes selection notification request.
2469  *
2470  * In addition to ecore_x_fixes_selection_notification_request you can also specify for which window you want to get them
2471  * @since 1.24
2472  */
2473 EAPI Eina_Bool          ecore_x_fixes_window_selection_notification_request(Ecore_X_Window window, Ecore_X_Atom selection);
2474 
2475 
2476 /* XComposite Extension Support */
2477 EAPI Eina_Bool          ecore_x_composite_query(void);
2478 EAPI void               ecore_x_composite_redirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2479 EAPI void               ecore_x_composite_redirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2480 EAPI void               ecore_x_composite_unredirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2481 EAPI void               ecore_x_composite_unredirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2482 EAPI Ecore_X_Pixmap     ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
2483 EAPI void               ecore_x_composite_window_events_disable(Ecore_X_Window win);
2484 EAPI void               ecore_x_composite_window_events_enable(Ecore_X_Window win);
2485 EAPI Ecore_X_Window     ecore_x_composite_render_window_enable(Ecore_X_Window root);
2486 EAPI void               ecore_x_composite_render_window_disable(Ecore_X_Window root);
2487 
2488 /* XPresent Extension Support */
2489 /** @since 1.9 */
2490 EAPI void ecore_x_present_select_events(Ecore_X_Window win, unsigned int events);
2491 /** @since 1.9 */
2492 EAPI void ecore_x_present_notify_msc(Ecore_X_Window win, unsigned int serial, unsigned long long target_msc, unsigned long long divisor, unsigned long long remainder);
2493 /** @since 1.9 */
2494 EAPI void ecore_x_present_pixmap(Ecore_X_Window win, Ecore_X_Pixmap pixmap, unsigned int serial, Ecore_X_Region valid,
2495                                  Ecore_X_Region update, int x_off, int y_off, Ecore_X_Randr_Crtc target_crtc,
2496                                  Ecore_X_Sync_Fence wait_fence, Ecore_X_Sync_Fence idle_fence, unsigned int options,
2497                                  unsigned long long target_msc, unsigned long long divisor, unsigned long long remainder,
2498                                  Ecore_X_Present *notifies, int num_notifies);
2499 /** @since 1.9 */
2500 EAPI Eina_Bool ecore_x_present_exists(void);
2501 
2502 /* XDamage Extension Support */
2503 typedef Ecore_X_ID Ecore_X_Damage;
2504 
2505 typedef enum _Ecore_X_Damage_Report_Level
2506 {
2507    ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
2508    ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
2509    ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
2510    ECORE_X_DAMAGE_REPORT_NON_EMPTY
2511 } Ecore_X_Damage_Report_Level;
2512 
2513 struct _Ecore_X_Event_Damage
2514 {
2515    Ecore_X_Damage_Report_Level level;
2516    Ecore_X_Drawable            drawable;
2517    Ecore_X_Damage              damage;
2518    int                         more;
2519    Ecore_X_Time                time;
2520    Ecore_X_Rectangle           area;
2521    Ecore_X_Rectangle           geometry;
2522 };
2523 
2524 typedef struct _Ecore_X_Event_Damage Ecore_X_Event_Damage;
2525 
2526 struct _Ecore_X_Event_Xkb
2527 {
2528    int group;
2529    int base_group; /** @since 1.21 */
2530    int latched_group; /** @since 1.21 */
2531    int locked_group; /** @since 1.21 */
2532    unsigned int	mods; /** @since 1.21 */
2533    unsigned int base_mods; /** @since 1.21 */
2534    unsigned int	latched_mods; /** @since 1.21 */
2535    unsigned int	locked_mods; /** @since 1.21 */
2536 };
2537 typedef struct _Ecore_X_Event_Xkb Ecore_X_Event_Xkb; /** @since 1.7 */
2538 typedef struct _Ecore_X_Event_Xkb Ecore_X_Xkb_State; /** @since 1.21 */
2539 
2540 EAPI Eina_Bool      ecore_x_damage_query(void);
2541 EAPI Ecore_X_Damage ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level);
2542 EAPI void           ecore_x_damage_free(Ecore_X_Damage damage);
2543 EAPI void           ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts);
2544 
2545 EAPI Eina_Bool      ecore_x_screen_is_composited(int screen);
2546 EAPI void           ecore_x_screen_is_composited_set(int screen, Ecore_X_Window win);
2547 
2548 EAPI Eina_Bool      ecore_x_dpms_query(void);
2549 EAPI Eina_Bool      ecore_x_dpms_capable_get(void);
2550 EAPI Eina_Bool      ecore_x_dpms_enabled_get(void);
2551 EAPI void           ecore_x_dpms_enabled_set(int enabled);
2552 EAPI Ecore_X_Dpms_Mode  ecore_x_dpms_power_level_get(void);
2553 EAPI void           ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off);
2554 EAPI Eina_Bool      ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off);
2555 EAPI unsigned int   ecore_x_dpms_timeout_standby_get(void);
2556 EAPI unsigned int   ecore_x_dpms_timeout_suspend_get(void);
2557 EAPI unsigned int   ecore_x_dpms_timeout_off_get(void);
2558 EAPI void           ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
2559 EAPI void           ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
2560 EAPI void           ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
2561 EAPI void           ecore_x_dpms_force(Eina_Bool on);
2562 
2563 EAPI Eina_Bool      ecore_x_test_fake_key_down(const char *key);
2564 EAPI Eina_Bool      ecore_x_test_fake_key_up(const char *key);
2565 EAPI Eina_Bool      ecore_x_test_fake_key_press(const char *key);
2566 EAPI const char    *ecore_x_keysym_string_get(int keysym);
2567 
2568 /**
2569  * Given a keyname, return the keycode representing that key
2570  * @param keyname The key from which to get the keycode.
2571  * @return The keycode of the key.
2572  *
2573  * @since 1.2.0
2574  */
2575 EAPI int            ecore_x_keysym_keycode_get(const char *keyname);
2576 
2577 /**
2578  * Return the X-specific keysym for a given key string
2579  * @param string The key to get the keysym for
2580  * @return the keysym value
2581  *
2582  * @since 1.15
2583  * @note The returned value is not portable.
2584  */
2585 EAPI unsigned int   ecore_x_keysym_get(const char *string);
2586 
2587 typedef struct _Ecore_X_Image Ecore_X_Image;
2588 
2589 EAPI Ecore_X_Image *ecore_x_image_new(int w, int h, Ecore_X_Visual vis, int depth);
2590 EAPI void           ecore_x_image_free(Ecore_X_Image *im);
2591 EAPI Eina_Bool      ecore_x_image_get(Ecore_X_Image *im, Ecore_X_Drawable draw, int x, int y, int sx, int sy, int w, int h);
2592 EAPI void           ecore_x_image_put(Ecore_X_Image *im, Ecore_X_Drawable draw, Ecore_X_GC gc, int x, int y, int sx, int sy, int w, int h);
2593 EAPI void          *ecore_x_image_data_get(Ecore_X_Image *im, int *bpl, int *rows, int *bpp);
2594 EAPI Eina_Bool      ecore_x_image_is_argb32_get(Ecore_X_Image *im);
2595 
2596 EAPI Eina_Bool      ecore_x_image_to_argb_convert(void *src, int sbpp, int sbpl, Ecore_X_Colormap c, Ecore_X_Visual v, int x, int y, int w, int h, unsigned int *dst, int dbpl, int dx, int dy);
2597 
2598 EAPI Eina_Bool      ecore_x_input_multi_select(Ecore_X_Window win); /**< @since 1.13 */
2599 EAPI Eina_Bool	    ecore_x_input_raw_select(Ecore_X_Window win); /**< @since 1.8 */
2600 EAPI Eina_Bool      ecore_x_input_touch_devices_grab(Ecore_X_Window win); /**< @since 1.15 */
2601 EAPI Eina_Bool      ecore_x_input_touch_devices_ungrab(void); /**< @since 1.15 */
2602 
2603 EAPI void           ecore_x_input_devices_update(void); /**< @since 1.24 */
2604 EAPI int            ecore_x_input_device_num_get(void); /**< @since 1.24 */
2605 EAPI int            ecore_x_input_device_id_get(int slot); /**< @since 1.24 */
2606 EAPI const char    *ecore_x_input_device_name_get(int slot); /**< @since 1.24 */
2607 EAPI char         **ecore_x_input_device_properties_list(int slot, int *num_ret); /**< @since 1.24 */
2608 EAPI void           ecore_x_input_device_properties_free(char **list, int num); /**< @since 1.24 */
2609 EAPI void          *ecore_x_input_device_property_get(int slot, const char *prop, int *num_ret, Ecore_X_Atom *format_ret, int *unit_size_ret); /**< @since 1.24 */
2610 EAPI void           ecore_x_input_device_property_set(int slot, const char *prop, void *data, int num, Ecore_X_Atom format, int unit_size); /**< @since 1.24 */
2611 
2612 EAPI Eina_Bool      ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
2613 
2614 typedef enum _Ecore_X_Gesture_Event_Mask
2615 {
2616    ECORE_X_GESTURE_EVENT_MASK_NONE = 0L,
2617    ECORE_X_GESTURE_EVENT_MASK_FLICK = (1L << 0),
2618    ECORE_X_GESTURE_EVENT_MASK_PAN = (1L << 1),
2619    ECORE_X_GESTURE_EVENT_MASK_PINCHROTATION = (1L << 2),
2620    ECORE_X_GESTURE_EVENT_MASK_TAP = (1L << 3),
2621    ECORE_X_GESTURE_EVENT_MASK_TAPNHOLD = (1L << 4),
2622    ECORE_X_GESTURE_EVENT_MASK_HOLD = (1L << 5),
2623    ECORE_X_GESTURE_EVENT_MASK_GROUP = (1L << 6)
2624 } Ecore_X_Gesture_Event_Mask;
2625 
2626 typedef enum _Ecore_X_Gesture_Event_Type
2627 {
2628    ECORE_X_GESTURE_EVENT_FLICK,
2629    ECORE_X_GESTURE_EVENT_PAN,
2630    ECORE_X_GESTURE_EVENT_PINCHROTATION,
2631    ECORE_X_GESTURE_EVENT_TAP,
2632    ECORE_X_GESTURE_EVENT_TAPNHOLD,
2633    ECORE_X_GESTURE_EVENT_HOLD,
2634    ECORE_X_GESTURE_EVENT_GROUP
2635 } Ecore_X_Gesture_Event_Type;
2636 
2637 typedef enum _Ecore_X_Gesture_Event_Subtype
2638 {
2639    ECORE_X_GESTURE_END,
2640    ECORE_X_GESTURE_BEGIN,
2641    ECORE_X_GESTURE_UPDATE,
2642    ECORE_X_GESTURE_DONE
2643 } Ecore_X_Gesture_Event_Subtype;
2644 
2645 typedef enum _Ecore_X_Gesture_Group_Subtype
2646 {
2647    ECORE_X_GESTURE_GROUP_REMOVED,
2648    ECORE_X_GESTURE_GROUP_ADDED,
2649    ECORE_X_GESTURE_GROUP_CURRENT
2650 } Ecore_X_Gesture_Group_Subtype;
2651 
2652 typedef enum _Ecore_X_Gesture_Direction
2653 {
2654    ECORE_X_GESTURE_NORTHWARD,
2655    ECORE_X_GESTURE_NORTHEASTWARD,
2656    ECORE_X_GESTURE_EASTWARD,
2657    ECORE_X_GESTURE_SOUTHEASTWARD,
2658    ECORE_X_GESTURE_SOUTHWARD,
2659    ECORE_X_GESTURE_SOUTHWESTWARD,
2660    ECORE_X_GESTURE_WESTWARD,
2661    ECORE_X_GESTURE_NORTHWESTWARD
2662 } Ecore_X_Gesture_Direction;
2663 
2664 struct _Ecore_X_Event_Gesture_Notify_Flick
2665 {
2666    Ecore_X_Window                win;
2667    Ecore_X_Time                  time;
2668    Ecore_X_Gesture_Event_Subtype subtype;
2669    int                           num_fingers;
2670    int                           distance;
2671    Ecore_X_Time                  duration;
2672    Ecore_X_Gesture_Direction     direction;
2673    double                        angle;
2674 };
2675 
2676 struct _Ecore_X_Event_Gesture_Notify_Pan
2677 {
2678    Ecore_X_Window                win;
2679    Ecore_X_Time                  time;
2680    Ecore_X_Gesture_Event_Subtype subtype;
2681    int                           num_fingers;
2682    int                           dx;
2683    int                           dy;
2684    int                           distance;
2685    Ecore_X_Time                  duration;
2686    Ecore_X_Gesture_Direction     direction;
2687 };
2688 
2689 struct _Ecore_X_Event_Gesture_Notify_PinchRotation
2690 {
2691    Ecore_X_Window                win;
2692    Ecore_X_Time                  time;
2693    Ecore_X_Gesture_Event_Subtype subtype;
2694    int                           num_fingers;
2695    int                           distance;
2696    int                           cx;
2697    int                           cy;
2698    double                        zoom;
2699    double                        angle;
2700 };
2701 
2702 struct _Ecore_X_Event_Gesture_Notify_Tap
2703 {
2704    Ecore_X_Window                win;
2705    Ecore_X_Time                  time;
2706    Ecore_X_Gesture_Event_Subtype subtype;
2707    int                           num_fingers;
2708    int                           cx;
2709    int                           cy;
2710    int                           tap_repeat;
2711    Ecore_X_Time                  interval;
2712 };
2713 
2714 struct _Ecore_X_Event_Gesture_Notify_TapNHold
2715 {
2716    Ecore_X_Window                win;
2717    Ecore_X_Time                  time;
2718    Ecore_X_Gesture_Event_Subtype subtype;
2719    int                           num_fingers;
2720    int                           cx;
2721    int                           cy;
2722    Ecore_X_Time                  interval;
2723    Ecore_X_Time                  hold_time;
2724 };
2725 
2726 struct _Ecore_X_Event_Gesture_Notify_Hold
2727 {
2728    Ecore_X_Window                win;
2729    Ecore_X_Time                  time;
2730    Ecore_X_Gesture_Event_Subtype subtype;
2731    int                           num_fingers;
2732    int                           cx;
2733    int                           cy;
2734    Ecore_X_Time                  hold_time;
2735 };
2736 
2737 struct _Ecore_X_Event_Gesture_Notify_Group
2738 {
2739    Ecore_X_Window                win;
2740    Ecore_X_Time                  time;
2741    Ecore_X_Gesture_Group_Subtype subtype;
2742    int                           num_groups;
2743    int                           group_id;
2744 };
2745 
2746 EINA_DEPRECATED EAPI Eina_Bool                             ecore_x_gesture_supported(void);
2747 EINA_DEPRECATED EAPI Eina_Bool                             ecore_x_gesture_events_select(Ecore_X_Window win, Ecore_X_Gesture_Event_Mask mask);
2748 EINA_DEPRECATED EAPI Ecore_X_Gesture_Event_Mask            ecore_x_gesture_events_selected_get(Ecore_X_Window win);
2749 EINA_DEPRECATED EAPI Eina_Bool                             ecore_x_gesture_event_grab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2750 EINA_DEPRECATED EAPI Eina_Bool                             ecore_x_gesture_event_ungrab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2751 
2752 EAPI void                                  ecore_x_e_illume_indicator_state_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state);
2753 EAPI Ecore_X_Illume_Indicator_State        ecore_x_e_illume_indicator_state_get(Ecore_X_Window win);
2754 EAPI void                                  ecore_x_e_illume_indicator_state_send(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state);
2755 
2756 EAPI void                                  ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_Opacity_Mode mode);
2757 EAPI Ecore_X_Illume_Indicator_Opacity_Mode ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win);
2758 EAPI void                                  ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win, Ecore_X_Illume_Indicator_Opacity_Mode mode);
2759 
2760 EAPI void                                  ecore_x_e_illume_indicator_type_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_Type_Mode mode);  /**< @since 1.8 */
2761 EAPI Ecore_X_Illume_Indicator_Type_Mode    ecore_x_e_illume_indicator_type_get(Ecore_X_Window win);  /**< @since 1.8 */
2762 EAPI void                                  ecore_x_e_illume_indicator_type_send(Ecore_X_Window win, Ecore_X_Illume_Indicator_Type_Mode mode);  /**< @since 1.8 */
2763 
2764 EAPI void                                  ecore_x_e_illume_window_state_set(Ecore_X_Window win, Ecore_X_Illume_Window_State state);
2765 EAPI Ecore_X_Illume_Window_State           ecore_x_e_illume_window_state_get(Ecore_X_Window win);
2766 EAPI void                                  ecore_x_e_illume_window_state_send(Ecore_X_Window win, Ecore_X_Illume_Window_State state); /**< @since 1.9 */
2767 
2768 EAPI void                                  ecore_x_xkb_select_group(int group); /* @since 1.7 */
2769 EAPI Eina_Bool                             ecore_x_xkb_track_state(void); /** @since 1.21 */
2770 EAPI Eina_Bool                             ecore_x_xkb_state_get(Ecore_X_Xkb_State *state); /** @since 1.21 */
2771 
2772 EAPI void                                  ecore_x_e_window_rotation_supported_set(Ecore_X_Window root, Eina_Bool enabled); /**< @since 1.9 */
2773 EAPI Eina_Bool                             ecore_x_e_window_rotation_supported_get(Ecore_X_Window root); /**< @since 1.9 */
2774 EAPI void                                  ecore_x_e_window_rotation_app_set(Ecore_X_Window win, Eina_Bool set); /**< @since 1.9 */
2775 EAPI Eina_Bool                             ecore_x_e_window_rotation_app_get(Ecore_X_Window win); /**< @since 1.9 */
2776 EAPI void                                  ecore_x_e_window_rotation_preferred_rotation_set(Ecore_X_Window win, int rot); /**< @since 1.9 */
2777 EAPI Eina_Bool                             ecore_x_e_window_rotation_preferred_rotation_get(Ecore_X_Window win, int *rot); /**< @since 1.9 */
2778 EAPI void                                  ecore_x_e_window_rotation_available_rotations_set(Ecore_X_Window win, const int *rots, unsigned int count); /**< @since 1.9 */
2779 EAPI Eina_Bool                             ecore_x_e_window_rotation_available_rotations_get(Ecore_X_Window win, int **rots, unsigned int *count); /**< @since 1.9 */
2780 EAPI void                                  ecore_x_e_window_rotation_change_prepare_send(Ecore_X_Window win, int rot, Eina_Bool resize, int w, int h); /**< @since 1.9 */
2781 EAPI void                                  ecore_x_e_window_rotation_change_prepare_done_send(Ecore_X_Window root, Ecore_X_Window win, int rot); /**< @since 1.9 */
2782 EAPI void                                  ecore_x_e_window_rotation_change_request_send(Ecore_X_Window win, int rot); /**< @since 1.9 */
2783 EAPI void                                  ecore_x_e_window_rotation_change_done_send(Ecore_X_Window root, Ecore_X_Window win, int rot, int w, int h); /**< @since 1.9 */
2784 
2785 //this enum and API for keyrouter and client window side
2786 //keycode (8~255)
2787 typedef enum
2788 {
2789    ECORE_X_WIN_KEYGRAB_UNKNOWN = 0, /**< Unknown keygrab mode */
2790    ECORE_X_WIN_KEYGRAB_SHARED  = (1 << 8), /**< Getting the grabbed-key together with the other client windows */
2791    ECORE_X_WIN_KEYGRAB_TOPMOST = (1 << 9), /**< Getting the grabbed-key only when window is top of the stack */
2792    ECORE_X_WIN_KEYGRAB_EXCLUSIVE = (1 << 10), /**< Getting the grabbed-key exclusively regardless of window's position */
2793    ECORE_X_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE = (1 << 11) /**< Getting the grabbed-key exclusively regardless of window's position. Being overrided the grab by the other client window  */
2794 } Ecore_X_Win_Keygrab_Mode;
2795 
2796 //add mod, anymod, priority for the future.
2797 //we will support modifier and priority feature later.
2798 EAPI Eina_Bool                             ecore_x_window_keygrab_set(Ecore_X_Window win, const char *key, int mod, int any_mod, int priority, Ecore_X_Win_Keygrab_Mode grab_mode); /**< @since 1.15 */
2799 EAPI Eina_Bool                             ecore_x_window_keygrab_unset(Ecore_X_Window win, const char *key, int mod, int any_mod); /**< @since 1.15 */
2800 
2801 //this API for keyrouter protocol
2802 EAPI void                                  ecore_x_e_keyrouter_set(Ecore_X_Window root, Eina_Bool on); /**< @since 1.15 */ //Key router set keyrouter flag using this
2803 EAPI Eina_Bool                             ecore_x_e_keyrouter_get(Ecore_X_Window root); /**< @since 1.15 */ //Client check the existence of keyrouter using this
2804 
2805 #ifdef EFL_BETA_API_SUPPORT
2806 // XXX: FIXME: re-evaluate this after looking at xdg foreign in wayland
2807 EAPI void                                  ecore_x_e_stack_type_set(Ecore_X_Window win, Ecore_X_Stack_Type stack_type);
2808 EAPI Ecore_X_Stack_Type                    ecore_x_e_stack_type_get(Ecore_X_Window win);
2809 EAPI void                                  ecore_x_e_stack_position_set(Ecore_X_Window win, Ecore_X_Stack_Position stack_position);
2810 EAPI Ecore_X_Stack_Position                ecore_x_e_stack_position_get(Ecore_X_Window win);
2811 #endif
2812 
2813 #include <Ecore_X_Atoms.h>
2814 #include <Ecore_X_Cursor.h>
2815 
2816 #ifdef __cplusplus
2817 }
2818 #endif // ifdef __cplusplus
2819 
2820 #undef EAPI
2821 #define EAPI
2822 
2823 #endif // ifndef _ECORE_X_H
2824