5 #include "Ecore_IMF_Evas.h"
8 * @defgroup Ecore_IMF_Evas_Group Ecore Input Method Context Evas Helper Functions
10 * Helper functions to make it easy to use Evas with Ecore_IMF.
11 * Converts each event from Evas to the corresponding event of Ecore_IMF.
13 * An example of usage of these functions can be found at:
14 * @li @ref ecore_imf_example_c
17 static const char *_ecore_imf_evas_event_empty = "";
19 /* Converts the Evas modifiers to Ecore_IMF keyboard modifiers */
21 _ecore_imf_evas_event_modifiers_wrap(Evas_Modifier *evas_modifiers,
22 Ecore_IMF_Keyboard_Modifiers *imf_keyboard_modifiers)
24 if (!evas_modifiers || !imf_keyboard_modifiers)
27 *imf_keyboard_modifiers = ECORE_IMF_KEYBOARD_MODIFIER_NONE;
28 if (evas_key_modifier_is_set(evas_modifiers, "Control"))
29 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_CTRL;
30 if (evas_key_modifier_is_set(evas_modifiers, "Alt"))
31 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_ALT;
32 if (evas_key_modifier_is_set(evas_modifiers, "Shift"))
33 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_SHIFT;
34 if (evas_key_modifier_is_set(evas_modifiers, "Super") || evas_key_modifier_is_set(evas_modifiers, "Hyper"))
35 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_WIN;
36 if (evas_key_modifier_is_set(evas_modifiers, "Mode"))
37 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_MODE;
40 /* Converts the Evas locks to Ecore_IMF keyboard locks */
42 _ecore_imf_evas_event_locks_wrap(Evas_Lock *evas_locks,
43 Ecore_IMF_Keyboard_Locks *imf_keyboard_locks)
45 if (!evas_locks || !imf_keyboard_locks)
48 *imf_keyboard_locks = ECORE_IMF_KEYBOARD_LOCK_NONE;
49 if (evas_key_lock_is_set(evas_locks, "Num_Lock"))
50 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_NUM;
51 if (evas_key_lock_is_set(evas_locks, "Caps_Lock"))
52 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_CAPS;
53 if (evas_key_lock_is_set(evas_locks, "Scroll_Lock"))
54 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_SCROLL;
57 /* Converts the Evas mouse flags to Ecore_IMF mouse flags */
59 _ecore_imf_evas_event_mouse_flags_wrap(Evas_Button_Flags evas_flags,
60 Ecore_IMF_Mouse_Flags *imf_flags)
65 *imf_flags = ECORE_IMF_MOUSE_NONE;
66 if (evas_flags & EVAS_BUTTON_DOUBLE_CLICK)
67 *imf_flags |= ECORE_IMF_MOUSE_DOUBLE_CLICK;
68 if (evas_flags & EVAS_BUTTON_TRIPLE_CLICK)
69 *imf_flags |= ECORE_IMF_MOUSE_TRIPLE_CLICK;
73 * Converts a "mouse_in" event from Evas to the corresponding event of Ecore_IMF.
75 * @param evas_event The received Evas event.
76 * @param imf_event The location to store the converted Ecore_IMF event.
77 * @ingroup Ecore_IMF_Evas_Group
80 ecore_imf_evas_event_mouse_in_wrap(Evas_Event_Mouse_In *evas_event,
81 Ecore_IMF_Event_Mouse_In *imf_event)
83 if (!evas_event || !imf_event)
86 imf_event->buttons = evas_event->buttons;
87 imf_event->output.x = evas_event->output.x;
88 imf_event->output.y = evas_event->output.y;
89 imf_event->canvas.x = evas_event->canvas.x;
90 imf_event->canvas.y = evas_event->canvas.y;
91 imf_event->timestamp = evas_event->timestamp;
92 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
93 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
97 * Converts a "mouse_out" event from Evas to the corresponding event of Ecore_IMF.
99 * @param evas_event The received Evas event.
100 * @param imf_event The location to store the converted Ecore_IMF event.
101 * @ingroup Ecore_IMF_Evas_Group
104 ecore_imf_evas_event_mouse_out_wrap(Evas_Event_Mouse_Out *evas_event,
105 Ecore_IMF_Event_Mouse_Out *imf_event)
107 if (!evas_event || !imf_event)
110 imf_event->buttons = evas_event->buttons;
111 imf_event->output.x = evas_event->output.x;
112 imf_event->output.y = evas_event->output.y;
113 imf_event->canvas.x = evas_event->canvas.x;
114 imf_event->canvas.y = evas_event->canvas.y;
115 imf_event->timestamp = evas_event->timestamp;
116 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
117 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
121 * Converts a "mouse_move" event from Evas to the corresponding event of Ecore_IMF.
123 * @param evas_event The received Evas event.
124 * @param imf_event The location to store the converted Ecore_IMF event.
125 * @ingroup Ecore_IMF_Evas_Group
128 ecore_imf_evas_event_mouse_move_wrap(Evas_Event_Mouse_Move *evas_event,
129 Ecore_IMF_Event_Mouse_Move *imf_event)
131 if (!evas_event || !imf_event)
134 imf_event->buttons = evas_event->buttons;
135 imf_event->cur.output.x = evas_event->cur.output.x;
136 imf_event->cur.output.y = evas_event->cur.output.y;
137 imf_event->prev.output.x = evas_event->prev.output.x;
138 imf_event->prev.output.y = evas_event->prev.output.y;
139 imf_event->cur.canvas.x = evas_event->cur.canvas.x;
140 imf_event->cur.canvas.y = evas_event->cur.canvas.y;
141 imf_event->prev.canvas.x = evas_event->prev.canvas.x;
142 imf_event->prev.canvas.y = evas_event->prev.canvas.y;
143 imf_event->timestamp = evas_event->timestamp;
144 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
145 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
149 * Converts a "mouse_down" event from Evas to the corresponding event of Ecore_IMF.
151 * @param evas_event The received Evas event.
152 * @param imf_event The location to store the converted Ecore_IMF event.
153 * @ingroup Ecore_IMF_Evas_Group
156 ecore_imf_evas_event_mouse_down_wrap(Evas_Event_Mouse_Down *evas_event,
157 Ecore_IMF_Event_Mouse_Down *imf_event)
159 if (!evas_event || !imf_event)
162 imf_event->button = evas_event->button;
163 imf_event->output.x = evas_event->output.x;
164 imf_event->output.y = evas_event->output.y;
165 imf_event->canvas.x = evas_event->canvas.x;
166 imf_event->canvas.y = evas_event->canvas.y;
167 imf_event->timestamp = evas_event->timestamp;
168 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
169 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
170 _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
174 * Converts a "mouse_up" event from Evas to the corresponding event of Ecore_IMF.
176 * @param evas_event The received Evas event.
177 * @param imf_event The location to store the converted Ecore_IMF event.
178 * @ingroup Ecore_IMF_Evas_Group
181 ecore_imf_evas_event_mouse_up_wrap(Evas_Event_Mouse_Up *evas_event,
182 Ecore_IMF_Event_Mouse_Up *imf_event)
184 if (!evas_event || !imf_event)
187 imf_event->button = evas_event->button;
188 imf_event->output.x = evas_event->output.x;
189 imf_event->output.y = evas_event->output.y;
190 imf_event->canvas.x = evas_event->canvas.x;
191 imf_event->canvas.y = evas_event->canvas.y;
192 imf_event->timestamp = evas_event->timestamp;
193 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
194 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
195 _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
199 * Converts a "mouse_wheel" event from Evas to the corresponding event of Ecore_IMF.
201 * @param evas_event The received Evas event.
202 * @param imf_event The location to store the converted Ecore_IMF event.
203 * @ingroup Ecore_IMF_Evas_Group
206 ecore_imf_evas_event_mouse_wheel_wrap(Evas_Event_Mouse_Wheel *evas_event,
207 Ecore_IMF_Event_Mouse_Wheel *imf_event)
209 if (!evas_event || !imf_event)
212 imf_event->direction = evas_event->direction;
213 imf_event->z = evas_event->z;
214 imf_event->output.x = evas_event->output.x;
215 imf_event->output.y = evas_event->output.y;
216 imf_event->canvas.x = evas_event->canvas.x;
217 imf_event->canvas.y = evas_event->canvas.y;
218 imf_event->timestamp = evas_event->timestamp;
219 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
220 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
221 imf_event->timestamp = evas_event->timestamp;
225 * Converts a "key_down" event from Evas to the corresponding event of Ecore_IMF.
227 * @param evas_event The received Evas event.
228 * @param imf_event The location to store the converted Ecore_IMF event.
229 * @ingroup Ecore_IMF_Evas_Group
234 * _key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
236 * Evas_Event_Key_Down *ev = event_info;
237 * if (!ev->keyname) return;
241 * Ecore_IMF_Event_Key_Down ecore_ev;
242 * ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
243 * if (ecore_imf_context_filter_event(imf_context,
244 * ECORE_IMF_EVENT_KEY_DOWN,
245 * (Ecore_IMF_Event *)&ecore_ev))
250 * evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, data);
254 ecore_imf_evas_event_key_down_wrap(Evas_Event_Key_Down *evas_event,
255 Ecore_IMF_Event_Key_Down *imf_event)
257 if (!evas_event || !imf_event)
260 imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
261 imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
262 imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
263 imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
264 imf_event->timestamp = evas_event->timestamp;
265 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
266 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
270 * Converts a "key_up" event from Evas to the corresponding event of Ecore_IMF.
272 * @param evas_event The received Evas event.
273 * @param imf_event The location to store the converted Ecore_IMF event.
274 * @ingroup Ecore_IMF_Evas_Group
279 * _key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
281 * Evas_Event_Key_Up *ev = event_info;
282 * if (!ev->keyname) return;
286 * Ecore_IMF_Event_Key_Up ecore_ev;
287 * ecore_imf_evas_event_key_up_wrap(ev, &ecore_ev);
288 * if (ecore_imf_context_filter_event(imf_context,
289 * ECORE_IMF_EVENT_KEY_UP,
290 * (Ecore_IMF_Event *)&ecore_ev))
295 * evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_UP, _key_up_cb, data);
299 ecore_imf_evas_event_key_up_wrap(Evas_Event_Key_Up *evas_event,
300 Ecore_IMF_Event_Key_Up *imf_event)
302 imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
303 imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
304 imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
305 imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
306 imf_event->timestamp = evas_event->timestamp;
307 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
308 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);