1 #ifndef _ECORE_X_PRIVATE_H
2 #define _ECORE_X_PRIVATE_H
6 #define MAXHOSTNAMELEN 256
7 #endif /* ifndef MAXHOSTNAMELEN */
10 #include <X11/Xproto.h>
11 #include <X11/Xutil.h>
12 #include <X11/Xatom.h>
13 #include <X11/Xresource.h>
14 #include <X11/keysymdef.h>
15 #include <X11/extensions/XShm.h>
16 #include <X11/extensions/shape.h>
17 #include <X11/extensions/sync.h>
18 #include <X11/extensions/dpms.h>
20 #include <X11/Xcursor/Xcursor.h>
21 #endif /* ifdef ECORE_XCURSOR */
23 #include <X11/extensions/Print.h>
24 #endif /* ifdef ECORE_XPRINT */
26 #include <X11/extensions/Xinerama.h>
27 #endif /* ifdef ECORE_XINERAMA */
29 #include <X11/extensions/Xrandr.h>
30 #endif /* ifdef ECORE_XRANDR */
32 #include <X11/extensions/scrnsaver.h>
33 #endif /* ifdef ECORE_XSS */
35 #include <X11/extensions/Xrender.h>
36 #endif /* ifdef ECORE_XRENDER */
38 #include <X11/extensions/Xfixes.h>
39 #endif /* ifdef ECORE_XFIXES */
40 #ifdef ECORE_XCOMPOSITE
41 #include <X11/extensions/Xcomposite.h>
42 #endif /* ifdef ECORE_XCOMPOSITE */
44 #include <X11/extensions/Xdamage.h>
45 #endif /* ifdef ECORE_XDAMAGE */
47 #include <X11/extensions/gesture.h>
48 #include <X11/extensions/gestureproto.h>
49 #endif /* ifdef ECORE_XGESTURE */
51 #include <X11/extensions/dpms.h>
52 #endif /* ifdef ECORE_XDPMS */
54 #include <X11/XKBlib.h>
55 #endif /* ifdef ECORE_XKB */
57 #include <X11/extensions/XInput2.h>
58 #endif /* ifdef ECORE_XI2 */
61 # define XK_MISCELLANY 1
65 #include "ecore_private.h"
67 #include "Ecore_Input.h"
69 extern int _ecore_xlib_log_dom;
70 #ifdef ECORE_XLIB_DEFAULT_LOG_COLOR
71 # undef ECORE_XLIB_DEFAULT_LOG_COLOR
72 #endif /* ifdef ECORE_XLIB_DEFAULT_LOG_COLOR */
73 #define ECORE_XLIB_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
77 #endif /* ifdef ERR */
78 #define ERR(...) EINA_LOG_DOM_ERR(_ecore_xlib_log_dom, __VA_ARGS__)
82 #endif /* ifdef DBG */
83 #define DBG(...) EINA_LOG_DOM_DBG(_ecore_xlib_log_dom, __VA_ARGS__)
87 #endif /* ifdef INF */
88 #define INF(...) EINA_LOG_DOM_INFO(_ecore_xlib_log_dom, __VA_ARGS__)
92 #endif /* ifdef WRN */
93 #define WRN(...) EINA_LOG_DOM_WARN(_ecore_xlib_log_dom, __VA_ARGS__)
97 #endif /* ifdef CRIT */
98 #define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_xlib_log_dom, __VA_ARGS__)
100 typedef struct _Ecore_X_Selection_Intern Ecore_X_Selection_Intern;
102 struct _Ecore_X_Selection_Intern
105 Ecore_X_Atom selection;
111 typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
113 struct _Ecore_X_Selection_Converter
116 Eina_Bool (*convert)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *type, int *typeseize);
117 Ecore_X_Selection_Converter *next;
120 typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
122 struct _Ecore_X_Selection_Parser
125 void *(*parse)(const char *target, void *data, int size, int format);
126 Ecore_X_Selection_Parser *next;
129 typedef struct _Ecore_X_DND_Source
132 Ecore_X_Window win, dest;
135 ECORE_X_DND_SOURCE_IDLE,
136 ECORE_X_DND_SOURCE_DRAGGING,
137 ECORE_X_DND_SOURCE_DROPPED,
138 ECORE_X_DND_SOURCE_CONVERTING
144 unsigned short width, height;
149 Ecore_X_Window window;
155 Ecore_X_Atom action, accepted_action;
161 } Ecore_X_DND_Source;
163 typedef struct _Ecore_X_DND_Target
166 Ecore_X_Window win, source;
169 ECORE_X_DND_TARGET_IDLE,
170 ECORE_X_DND_TARGET_ENTERED
180 Ecore_X_Atom action, accepted_action;
183 } Ecore_X_DND_Target;
185 extern int ECORE_X_MODIFIER_SHIFT;
186 extern int ECORE_X_MODIFIER_CTRL;
187 extern int ECORE_X_MODIFIER_ALT;
188 extern int ECORE_X_MODIFIER_WIN;
190 extern int ECORE_X_LOCK_SCROLL;
191 extern int ECORE_X_LOCK_NUM;
192 extern int ECORE_X_LOCK_CAPS;
193 extern int ECORE_X_LOCK_SHIFT;
195 extern Display *_ecore_x_disp;
196 extern double _ecore_x_double_click_time;
197 extern Time _ecore_x_event_last_time;
198 extern Window _ecore_x_event_last_win;
199 extern int _ecore_x_event_last_root_x;
200 extern int _ecore_x_event_last_root_y;
201 extern Eina_Bool _ecore_x_xcursor;
203 extern Ecore_X_Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
205 extern int _ecore_window_grabs_num;
206 extern Window *_ecore_window_grabs;
207 extern Eina_Bool (*_ecore_window_grab_replay_func)(void *data,
210 extern void *_ecore_window_grab_replay_data;
212 extern Ecore_X_Window _ecore_x_private_win;
214 void _ecore_x_error_handler_init(void);
215 void _ecore_x_event_handle_any_event(XEvent *xevent);
216 void _ecore_x_event_handle_key_press(XEvent *xevent);
217 void _ecore_x_event_handle_key_release(XEvent *xevent);
218 void _ecore_x_event_handle_button_press(XEvent *xevent);
219 void _ecore_x_event_handle_button_release(XEvent *xevent);
220 void _ecore_x_event_handle_motion_notify(XEvent *xevent);
221 void _ecore_x_event_handle_enter_notify(XEvent *xevent);
222 void _ecore_x_event_handle_leave_notify(XEvent *xevent);
223 void _ecore_x_event_handle_focus_in(XEvent *xevent);
224 void _ecore_x_event_handle_focus_out(XEvent *xevent);
225 void _ecore_x_event_handle_keymap_notify(XEvent *xevent);
226 void _ecore_x_event_handle_expose(XEvent *xevent);
227 void _ecore_x_event_handle_graphics_expose(XEvent *xevent);
228 void _ecore_x_event_handle_visibility_notify(XEvent *xevent);
229 void _ecore_x_event_handle_create_notify(XEvent *xevent);
230 void _ecore_x_event_handle_destroy_notify(XEvent *xevent);
231 void _ecore_x_event_handle_unmap_notify(XEvent *xevent);
232 void _ecore_x_event_handle_map_notify(XEvent *xevent);
233 void _ecore_x_event_handle_map_request(XEvent *xevent);
234 void _ecore_x_event_handle_reparent_notify(XEvent *xevent);
235 void _ecore_x_event_handle_configure_notify(XEvent *xevent);
236 void _ecore_x_event_handle_configure_request(XEvent *xevent);
237 void _ecore_x_event_handle_gravity_notify(XEvent *xevent);
238 void _ecore_x_event_handle_resize_request(XEvent *xevent);
239 void _ecore_x_event_handle_circulate_notify(XEvent *xevent);
240 void _ecore_x_event_handle_circulate_request(XEvent *xevent);
241 void _ecore_x_event_handle_property_notify(XEvent *xevent);
242 void _ecore_x_event_handle_selection_clear(XEvent *xevent);
243 void _ecore_x_event_handle_selection_request(XEvent *xevent);
244 void _ecore_x_event_handle_selection_notify(XEvent *xevent);
245 void _ecore_x_event_handle_colormap_notify(XEvent *xevent);
246 void _ecore_x_event_handle_client_message(XEvent *xevent);
247 void _ecore_x_event_handle_mapping_notify(XEvent *xevent);
248 void _ecore_x_event_handle_shape_change(XEvent *xevent);
249 void _ecore_x_event_handle_screensaver_notify(XEvent *xevent);
250 #ifdef ECORE_XGESTURE
251 void _ecore_x_event_handle_gesture_notify_flick(XEvent *xevent);
252 void _ecore_x_event_handle_gesture_notify_pan(XEvent *xevent);
253 void _ecore_x_event_handle_gesture_notify_pinchrotation(XEvent *xevent);
254 void _ecore_x_event_handle_gesture_notify_tap(XEvent *xevent);
255 void _ecore_x_event_handle_gesture_notify_tapnhold(XEvent *xevent);
256 void _ecore_x_event_handle_gesture_notify_hold(XEvent *xevent);
257 void _ecore_x_event_handle_gesture_notify_group(XEvent *xevent);
258 #endif /* ifdef ECORE_XGESTURE */
259 void _ecore_x_event_handle_sync_counter(XEvent *xevent);
260 void _ecore_x_event_handle_sync_alarm(XEvent *xevent);
262 void _ecore_x_event_handle_randr_change(XEvent *xevent);
263 void _ecore_x_event_handle_randr_notify(XEvent *xevent);
264 #endif /* ifdef ECORE_XRANDR */
266 void _ecore_x_event_handle_fixes_selection_notify(XEvent *xevent);
267 #endif /* ifdef ECORE_XFIXES */
269 void _ecore_x_event_handle_damage_notify(XEvent *xevent);
270 #endif /* ifdef ECORE_XDAMAGE */
271 void _ecore_x_event_handle_generic_event(XEvent *xevent);
273 void _ecore_x_selection_data_init(void);
274 void _ecore_x_selection_shutdown(void);
275 Ecore_X_Atom _ecore_x_selection_target_atom_get(const char *target);
276 char *_ecore_x_selection_target_get(Ecore_X_Atom target);
277 Ecore_X_Selection_Intern *_ecore_x_selection_get(Ecore_X_Atom selection);
278 Eina_Bool _ecore_x_selection_set(Window w,
281 Ecore_X_Atom selection);
282 int _ecore_x_selection_convert(Ecore_X_Atom selection,
285 Ecore_X_Atom *targettype,
287 void *_ecore_x_selection_parse(const char *target,
292 void _ecore_x_sync_magic_send(int val,
293 Ecore_X_Window swin);
294 void _ecore_x_window_grab_remove(Ecore_X_Window win);
295 void _ecore_x_key_grab_remove(Ecore_X_Window win);
298 void _ecore_x_dnd_init(void);
299 Ecore_X_DND_Source *_ecore_x_dnd_source_get(void);
300 Ecore_X_DND_Target *_ecore_x_dnd_target_get(void);
301 void _ecore_x_dnd_drag(Ecore_X_Window root,
304 void _ecore_x_dnd_shutdown(void);
307 Ecore_X_Window_State _ecore_x_netwm_state_get(Ecore_X_Atom a);
308 int _ecore_x_netwm_startup_info_begin(Ecore_X_Window win,
310 int _ecore_x_netwm_startup_info(Ecore_X_Window win,
313 /* Fixes * Damage * Composite * DPMS */
314 void _ecore_x_fixes_init(void);
315 void _ecore_x_damage_init(void);
316 void _ecore_x_composite_init(void);
317 void _ecore_x_dpms_init(void);
318 void _ecore_x_randr_init(void);
319 void _ecore_x_gesture_init(void);
321 void _ecore_x_atoms_init(void);
323 extern int _ecore_x_xi2_opcode;
325 void _ecore_x_events_init(void);
326 void _ecore_x_events_shutdown(void);
328 void _ecore_x_input_init(void);
329 void _ecore_x_input_shutdown(void);
330 void _ecore_x_input_handler(XEvent *xevent);
333 void _ecore_mouse_move(unsigned int timestamp,
334 unsigned int xmodifiers,
339 unsigned int event_window,
341 unsigned int root_win,
352 Ecore_Event_Mouse_Button *_ecore_mouse_button(int event,
353 unsigned int timestamp,
354 unsigned int xmodifiers,
355 unsigned int buttons,
360 unsigned int event_window,
362 unsigned int root_win,
374 void _ecore_x_modifiers_get(void);
380 #define LOGFN(fl, ln, fn) printf("-ECORE-X: %25s: %5i - %s\n", fl, ln, fn);
381 #else /* ifdef LOGFNS */
382 #define LOGFN(fl, ln, fn)
383 #endif /* ifdef LOGFNS */
385 #endif /* ifndef _ECORE_X_PRIVATE_H */