1 #ifdef E_TYPEDEFS
2 
3 typedef enum _E_Binding_Context
4 {
5    E_BINDING_CONTEXT_NONE,
6    E_BINDING_CONTEXT_UNKNOWN,
7    E_BINDING_CONTEXT_WINDOW,
8    E_BINDING_CONTEXT_ZONE,
9    E_BINDING_CONTEXT_COMPOSITOR,
10    E_BINDING_CONTEXT_MANAGER,
11    E_BINDING_CONTEXT_MENU,
12    E_BINDING_CONTEXT_WINLIST,
13    E_BINDING_CONTEXT_POPUP,
14    E_BINDING_CONTEXT_ANY,
15    E_BINDING_CONTEXT_LAST,
16 } E_Binding_Context;
17 
18 /* why do we do this? config stored bindings must be fixed. x's modifier masks
19  * may change from time to time, xserver to xserver - so we can't do a
20  * simple match without translating to fixed values
21  */
22 typedef enum _E_Binding_Modifier
23 {
24    E_BINDING_MODIFIER_NONE = 0,
25    E_BINDING_MODIFIER_SHIFT = (1 << 0),
26    E_BINDING_MODIFIER_CTRL = (1 << 1),
27    E_BINDING_MODIFIER_ALT = (1 << 2),
28    E_BINDING_MODIFIER_WIN = (1 << 3),
29    E_BINDING_MODIFIER_ALTGR = (1 << 4)
30 } E_Binding_Modifier;
31 
32 typedef struct _E_Binding_Mouse  E_Binding_Mouse;
33 typedef struct _E_Binding_Key    E_Binding_Key;
34 typedef struct _E_Binding_Edge   E_Binding_Edge;
35 typedef struct _E_Binding_Signal E_Binding_Signal;
36 typedef struct _E_Binding_Wheel  E_Binding_Wheel;
37 typedef struct _E_Binding_Acpi   E_Binding_Acpi;
38 
39 typedef struct E_Binding_Event_Mouse_Button E_Binding_Event_Mouse_Button;
40 typedef struct E_Binding_Event_Wheel E_Binding_Event_Wheel;
41 
42 #else
43 #ifndef E_BINDINGS_H
44 #define E_BINDINGS_H
45 
46 struct E_Binding_Event_Mouse_Button
47 {
48    int               button; /**< Mouse button number that was raised (1 - 32) */
49 
50    Evas_Coord_Point  canvas; /**< The X/Y location of the cursor */
51 
52    unsigned int modifiers; /**< modifier keys pressed during the event */
53    unsigned int timestamp;
54    Eina_Bool double_click E_BITFIELD;
55    Eina_Bool triple_click E_BITFIELD;
56    Eina_Bool hold E_BITFIELD;
57    Eina_Bool scroll E_BITFIELD;
58 };
59 
60 struct E_Binding_Event_Wheel
61 {
62    int direction;
63    int z;
64 
65    Evas_Coord_Point  canvas; /**< The X/Y location of the cursor */
66 
67    unsigned int modifiers; /**< modifier keys pressed during the event */
68    unsigned int timestamp;
69 };
70 
71 struct _E_Binding_Mouse
72 {
73    E_Binding_Context ctxt;
74    int button;
75    E_Binding_Modifier mod;
76    unsigned char any_mod E_BITFIELD;
77    const char *action;
78    const char *params;
79 };
80 
81 struct _E_Binding_Key
82 {
83    E_Binding_Context ctxt;
84    const char *key;
85    E_Binding_Modifier mod;
86    unsigned char any_mod E_BITFIELD;
87    const char *action;
88    const char *params;
89 };
90 
91 struct _E_Binding_Edge
92 {
93    E_Binding_Context ctxt;
94    E_Zone_Edge edge;
95    E_Binding_Modifier mod;
96    const char *action;
97    const char *params;
98 
99    float delay;
100    Ecore_Timer *timer;
101    Eina_Bool any_mod E_BITFIELD;
102    Eina_Bool drag_only E_BITFIELD;
103 };
104 
105 struct _E_Binding_Signal
106 {
107    E_Binding_Context ctxt;
108    const char *sig;
109    const char *src;
110    E_Binding_Modifier mod;
111    unsigned char any_mod E_BITFIELD;
112    const char *action;
113    const char *params;
114 };
115 
116 struct _E_Binding_Wheel
117 {
118    E_Binding_Context ctxt;
119    int direction;
120    int z;
121    E_Binding_Modifier mod;
122    unsigned char any_mod E_BITFIELD;
123    const char *action;
124    const char *params;
125 };
126 
127 struct _E_Binding_Acpi
128 {
129    E_Binding_Context ctxt;
130    int type, status;
131    const char *action, *params;
132 };
133 
134 EINTERN int         e_bindings_init(void);
135 EINTERN int         e_bindings_shutdown(void);
136 
137 E_API void        e_bindings_mouse_reset(void);
138 E_API void        e_bindings_key_reset(void);
139 E_API void        e_bindings_wheel_reset(void);
140 E_API void        e_bindings_edge_reset(void);
141 E_API void        e_bindings_signal_reset(void);
142 E_API void        e_bindings_reset(void);
143 
144 E_API void        e_bindings_mouse_add(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
145 E_API void        e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
146 E_API void        e_bindings_mouse_grab(E_Binding_Context ctxt, Ecore_X_Window win);
147 E_API void        e_bindings_mouse_ungrab(E_Binding_Context ctxt, Ecore_X_Window win);
148 E_API E_Action   *e_bindings_mouse_button_find(E_Binding_Context ctxt, E_Binding_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret);
149 E_API E_Action   *e_bindings_mouse_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Mouse_Button *ev);
150 E_API E_Action   *e_bindings_mouse_down_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Down *ev);
151 E_API E_Action   *e_bindings_mouse_down_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev);
152 E_API E_Action   *e_bindings_mouse_up_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Mouse_Button *ev);
153 E_API E_Action   *e_bindings_mouse_up_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Up *ev);
154 E_API E_Action   *e_bindings_mouse_up_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev);
155 E_API char       *e_bindings_mouse_action_modifiers_text_generate(E_Binding_Context ctxt, const char *action, unsigned int *modifiers, unsigned int *button);
156 
157 E_API void        e_bindings_key_add(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
158 E_API void        e_bindings_key_del(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
159 E_API E_Binding_Key *e_bindings_key_get(const char *action);
160 E_API E_Binding_Key *e_bindings_key_find(const char *key, E_Binding_Modifier mod, int any_mod);
161 E_API void        e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win);
162 E_API void        e_bindings_key_ungrab(E_Binding_Context ctxt, Ecore_X_Window win);
163 E_API E_Action   *e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev);
164 E_API E_Action   *e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev);
165 E_API E_Action   *e_bindings_key_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev, E_Binding_Key **bind_ret);
166 
167 E_API Eina_Bool   e_bindings_key_allowed(const char *key);
168 
169 E_API void        e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
170 E_API Eina_Bool   e_bindings_edge_flippable_get(E_Zone_Edge edge);
171 E_API Eina_Bool   e_bindings_edge_non_flippable_get(E_Zone_Edge edge);
172 E_API E_Action *e_bindings_edge_event_find(E_Binding_Context ctxt, E_Event_Zone_Edge *ev, Eina_Bool click, E_Binding_Edge **bind_ret);
173 E_API E_Binding_Edge *e_bindings_edge_get(const char *action, E_Zone_Edge edge, int click);
174 E_API void        e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
175 E_API E_Action   *e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
176 E_API E_Action   *e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
177 E_API E_Action   *e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
178 E_API E_Action   *e_bindings_edge_up_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
179 
180 E_API void        e_bindings_signal_add(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
181 E_API void        e_bindings_signal_del(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
182 E_API E_Action   *e_bindings_signal_find(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Signal **bind_ret);
183 E_API E_Action   *e_bindings_signal_handle(E_Binding_Context ctxt, E_Object *obj, const char *sig, const char *src);
184 
185 E_API void        e_bindings_wheel_add(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
186 E_API void        e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params);
187 E_API void        e_bindings_wheel_grab(E_Binding_Context ctxt, Ecore_X_Window win);
188 E_API void        e_bindings_wheel_ungrab(E_Binding_Context ctxt, Ecore_X_Window win);
189 E_API E_Action   *e_bindings_wheel_find(E_Binding_Context ctxt, E_Binding_Event_Wheel *ev, E_Binding_Wheel **bind_ret);
190 E_API E_Action   *e_bindings_wheel_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Wheel *ev);
191 E_API E_Action   *e_bindings_wheel_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Wheel *ev);
192 E_API E_Action   *e_bindings_wheel_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Wheel *ev);
193 
194 E_API void e_bindings_acpi_add(E_Binding_Context ctxt, int type, int status, const char *action, const char *params);
195 E_API void e_bindings_acpi_del(E_Binding_Context ctxt, int type, int status, const char *action, const char *params);
196 E_API E_Action *e_bindings_acpi_find(E_Binding_Context ctxt, E_Event_Acpi *ev, E_Binding_Acpi **bind_ret);
197 E_API E_Action *e_bindings_acpi_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Acpi *ev);
198 
199 E_API int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers);
200 E_API int e_bindings_modifiers_to_ecore_convert(E_Binding_Modifier modifiers);
201 E_API void e_bindings_evas_event_mouse_button_convert(const Evas_Event_Mouse_Down *ev, E_Binding_Event_Mouse_Button *event);
202 E_API void e_bindings_evas_event_mouse_wheel_convert(const Evas_Event_Mouse_Wheel *ev, E_Binding_Event_Wheel *event);
203 E_API void e_bindings_ecore_event_mouse_button_convert(const Ecore_Event_Mouse_Button *ev, E_Binding_Event_Mouse_Button *event);
204 E_API void e_bindings_ecore_event_mouse_wheel_convert(const Ecore_Event_Mouse_Wheel *ev, E_Binding_Event_Wheel *event);
205 
206 E_API int e_bindings_context_match(E_Binding_Context bctxt, E_Binding_Context ctxt);
207 E_API E_Binding_Modifier e_bindings_modifiers_from_ecore(unsigned int modifiers);
208 
209 E_API void e_bindings_disabled_set(Eina_Bool disabled);
210 #endif
211 #endif
212