5 #include <Ecore_IMF_Input_Panel_Key.h>
12 # ifdef EFL_ECORE_IMF_BUILD
14 # define EAPI __declspec(dllexport)
17 # endif /* ! DLL_EXPORT */
19 # define EAPI __declspec(dllimport)
20 # endif /* ! EFL_ECORE_IMF_BUILD */
24 # define EAPI __attribute__ ((visibility("default")))
48 * @brief The file that provides the ISF IMCONTROL Structures and APIs
50 * @ingroup Ecore_IMF_Context_IMControl_Group
57 /* ecore_imf_context_input_panel_event_callback_add() flag */
60 ECORE_IMF_INPUT_PANEL_STATE_EVENT, /**< Input Panel STATE Event */
61 ECORE_IMF_INPUT_PANEL_MODE_EVENT, /**< Input Panel MODE Event */
62 ECORE_IMF_INPUT_PANEL_LANGUAGE_EVENT, /**< Input Panel LANGUAGE Event */
63 ECORE_IMF_INPUT_PANEL_SHIFT_MODE_EVENT, /**< Input Panel SHIFT MODE */
64 ECORE_IMF_INPUT_PANEL_PREEDIT_MODE_EVENT, /**< Input Panel PREEDIT MODE */
65 ECORE_IMF_INPUT_PANEL_COMPLETION_MODE_EVENT, /**< Input Panel COMPLETION MODE */
66 ECORE_IMF_INPUT_PANEL_CUSTOM_INPUT_MODE_EVENT, /**< Input Panel CUSTOM INPUT MODE */
68 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_01, /**< Input Panel PRIVATE CONTEXT */
69 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_02, /**< Input Panel PRIVATE CONTEXT */
70 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_03, /**< Input Panel PRIVATE CONTEXT */
71 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_04, /**< Input Panel PRIVATE CONTEXT */
72 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_05, /**< Input Panel PRIVATE CONTEXT */
73 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_06, /**< Input Panel PRIVATE CONTEXT */
74 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_07, /**< Input Panel PRIVATE CONTEXT */
75 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_08, /**< Input Panel PRIVATE CONTEXT */
76 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_09, /**< Input Panel PRIVATE CONTEXT */
77 ECORE_IMF_INPUT_PANEL_PRIVATE_CONTEXT_10, /**< Input Panel PRIVATE CONTEXT */
78 ECORE_IMF_INPUT_PANEL_EVENT_INVALID
79 } Ecore_IMF_Input_Panel_Event;
83 ECORE_IMF_INPUT_PANEL_STATE_SHOW, /**< Show Input panel */
84 ECORE_IMF_INPUT_PANEL_STATE_HIDE, /**< Hide Input panel */
85 ECORE_IMF_INPUT_PANEL_STATE_INVALID
86 } Ecore_IMF_Input_Panel_State;
90 ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, /**< Default 4x4 layout */
91 ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
92 ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
93 ECORE_IMF_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
94 ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
95 ECORE_IMF_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
96 ECORE_IMF_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
97 ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
98 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_1 = 100, /* Reserved for future use */
99 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_2,
100 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_3,
101 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_4,
102 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_5,
103 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_6,
104 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_7,
105 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_8,
106 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_9,
107 ECORE_IMF_INPUT_PANEL_LAYOUT_CUSTOM_10,
108 ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID
109 } Ecore_IMF_Input_Panel_Layout;
113 ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */
114 ECORE_IMF_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */
115 } Ecore_IMF_Input_Panel_Lang;
119 ECORE_IMF_KEYBOARD_LANG_NATIVE, /**< Native */
120 ECORE_IMF_KEYBOARD_LANG_ALPHABET /**< Alphabet */
121 } Ecore_IMF_Keyboard_Lang;
125 ECORE_IMF_AUTOCORRECTION_DEFAULT,
126 ECORE_IMF_AUTOCORRECTION_NO,
127 ECORE_IMF_AUTOCORRECTION_YES,
128 ECORE_IMF_AUTOCORRECTION_INVALID
129 } Ecore_IMF_Autocorrection;
133 ECORE_IMF_INPUT_PANEL_CAPS_MODE_OFF, /**< Off */
134 ECORE_IMF_INPUT_PANEL_CAPS_MODE_ON, /**< On */
135 ECORE_IMF_INPUT_PANEL_CAPS_MODE_LOCK, /**< Lock */
136 } Ecore_IMF_Input_Panel_Caps_Mode;
140 ECORE_IMF_INPUT_PANEL_ORIENT_NONE,
141 ECORE_IMF_INPUT_PANEL_ORIENT_90_CW, /* Clockwise */
142 ECORE_IMF_INPUT_PANEL_ORIENT_180,
143 ECORE_IMF_INPUT_PANEL_ORIENT_90_CCW /* CounterClockwise */
144 } Ecore_IMF_Input_Panel_Orient;
158 char data[128]; // label or image path
163 /* Events sent by the Input Method */
164 typedef struct _Ecore_IMF_Event_Preedit_Start Ecore_IMF_Event_Preedit_Start;
165 typedef struct _Ecore_IMF_Event_Preedit_End Ecore_IMF_Event_Preedit_End;
166 typedef struct _Ecore_IMF_Event_Preedit_Changed Ecore_IMF_Event_Preedit_Changed;
167 typedef struct _Ecore_IMF_Event_Commit Ecore_IMF_Event_Commit;
168 typedef struct _Ecore_IMF_Event_Delete_Surrounding Ecore_IMF_Event_Delete_Surrounding;
170 /* Events to filter */
171 typedef struct _Ecore_IMF_Event_Mouse_Down Ecore_IMF_Event_Mouse_Down;
172 typedef struct _Ecore_IMF_Event_Mouse_Up Ecore_IMF_Event_Mouse_Up;
173 typedef struct _Ecore_IMF_Event_Mouse_In Ecore_IMF_Event_Mouse_In;
174 typedef struct _Ecore_IMF_Event_Mouse_Out Ecore_IMF_Event_Mouse_Out;
175 typedef struct _Ecore_IMF_Event_Mouse_Move Ecore_IMF_Event_Mouse_Move;
176 typedef struct _Ecore_IMF_Event_Mouse_Wheel Ecore_IMF_Event_Mouse_Wheel;
177 typedef struct _Ecore_IMF_Event_Key_Down Ecore_IMF_Event_Key_Down;
178 typedef struct _Ecore_IMF_Event_Key_Up Ecore_IMF_Event_Key_Up;
179 typedef union _Ecore_IMF_Event Ecore_IMF_Event;
181 typedef struct _Ecore_IMF_Context Ecore_IMF_Context; /**< An Input Method Context */
182 typedef struct _Ecore_IMF_Context_Class Ecore_IMF_Context_Class; /**< An Input Method Context class */
183 typedef struct _Ecore_IMF_Context_Info Ecore_IMF_Context_Info; /**< An Input Method Context info */
185 EAPI extern int ECORE_IMF_EVENT_PREEDIT_START;
186 EAPI extern int ECORE_IMF_EVENT_PREEDIT_END;
187 EAPI extern int ECORE_IMF_EVENT_PREEDIT_CHANGED;
188 EAPI extern int ECORE_IMF_EVENT_COMMIT;
189 EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING;
193 ECORE_IMF_EVENT_MOUSE_DOWN,
194 ECORE_IMF_EVENT_MOUSE_UP,
195 ECORE_IMF_EVENT_MOUSE_IN,
196 ECORE_IMF_EVENT_MOUSE_OUT,
197 ECORE_IMF_EVENT_MOUSE_MOVE,
198 ECORE_IMF_EVENT_MOUSE_WHEEL,
199 ECORE_IMF_EVENT_KEY_DOWN,
200 ECORE_IMF_EVENT_KEY_UP
201 } Ecore_IMF_Event_Type;
205 ECORE_IMF_KEYBOARD_MODIFIER_NONE = 0, /**< No active modifiers */
206 ECORE_IMF_KEYBOARD_MODIFIER_CTRL = 1 << 0, /**< "Control" is pressed */
207 ECORE_IMF_KEYBOARD_MODIFIER_ALT = 1 << 1, /**< "Alt" is pressed */
208 ECORE_IMF_KEYBOARD_MODIFIER_SHIFT = 1 << 2, /**< "Shift" is pressed */
209 ECORE_IMF_KEYBOARD_MODIFIER_WIN = 1 << 3 /**< "Win" (between "Ctrl" and "Alt") is pressed */
210 } Ecore_IMF_Keyboard_Modifiers;
214 ECORE_IMF_KEYBOARD_LOCK_NONE = 0, /**< No locks are active */
215 ECORE_IMF_KEYBOARD_LOCK_NUM = 1 << 0, /**< "Num" lock is active */
216 ECORE_IMF_KEYBOARD_LOCK_CAPS = 1 << 1, /**< "Caps" lock is active */
217 ECORE_IMF_KEYBOARD_LOCK_SCROLL = 1 << 2 /**< "Scroll" lock is active */
218 } Ecore_IMF_Keyboard_Locks;
222 ECORE_IMF_MOUSE_NONE = 0, /**< A single click */
223 ECORE_IMF_MOUSE_DOUBLE_CLICK = 1 << 0, /**< A double click */
224 ECORE_IMF_MOUSE_TRIPLE_CLICK = 1 << 1 /**< A triple click */
225 } Ecore_IMF_Mouse_Flags;
229 ECORE_IMF_INPUT_MODE_ALPHA = 1 << 0,
230 ECORE_IMF_INPUT_MODE_NUMERIC = 1 << 1,
231 ECORE_IMF_INPUT_MODE_SPECIAL = 1 << 2,
232 ECORE_IMF_INPUT_MODE_HEXA = 1 << 3,
233 ECORE_IMF_INPUT_MODE_TELE = 1 << 4,
234 ECORE_IMF_INPUT_MODE_FULL = (ECORE_IMF_INPUT_MODE_ALPHA | ECORE_IMF_INPUT_MODE_NUMERIC | ECORE_IMF_INPUT_MODE_SPECIAL),
235 ECORE_IMF_INPUT_MODE_INVISIBLE = 1 << 29,
236 ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30
237 } Ecore_IMF_Input_Mode;
239 struct _Ecore_IMF_Event_Preedit_Start
241 Ecore_IMF_Context *ctx;
244 struct _Ecore_IMF_Event_Preedit_End
246 Ecore_IMF_Context *ctx;
249 struct _Ecore_IMF_Event_Preedit_Changed
251 Ecore_IMF_Context *ctx;
254 struct _Ecore_IMF_Event_Commit
256 Ecore_IMF_Context *ctx;
260 struct _Ecore_IMF_Event_Delete_Surrounding
262 Ecore_IMF_Context *ctx;
267 struct _Ecore_IMF_Event_Mouse_Down
269 int button; /**< The button which has been pressed */
276 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
277 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
278 Ecore_IMF_Mouse_Flags flags; /**< The flags corresponding the mouse click (single, double or triple click) */
279 unsigned int timestamp; /**< The timestamp when the event occured */
282 struct _Ecore_IMF_Event_Mouse_Up
284 int button; /**< The button which has been pressed */
291 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
292 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
293 Ecore_IMF_Mouse_Flags flags; /**< The flags corresponding the mouse click (single, double or triple click) */
294 unsigned int timestamp; /**< The timestamp when the event occured */
297 struct _Ecore_IMF_Event_Mouse_In
306 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
307 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
308 unsigned int timestamp; /**< The timestamp when the event occured */
311 struct _Ecore_IMF_Event_Mouse_Out
320 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
321 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
322 unsigned int timestamp; /**< The timestamp when the event occured */
325 struct _Ecore_IMF_Event_Mouse_Move
336 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
337 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
338 unsigned int timestamp; /**< The timestamp when the event occured */
341 struct _Ecore_IMF_Event_Mouse_Wheel
343 int direction; /* 0 = default up/down wheel */
344 int z; /* ...,-2,-1 = down, 1,2,... = up */
351 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
352 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
353 unsigned int timestamp; /**< The timestamp when the event occured */
356 struct _Ecore_IMF_Event_Key_Down
358 const char *keyname; /**< The string name of the key pressed */
359 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
360 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
361 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
362 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
363 const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
364 unsigned int timestamp; /**< The timestamp when the event occured */
367 struct _Ecore_IMF_Event_Key_Up
369 const char *keyname; /**< The string name of the key pressed */
370 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
371 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
372 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
373 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
374 const char *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
375 unsigned int timestamp; /**< The timestamp when the event occured */
378 union _Ecore_IMF_Event
380 Ecore_IMF_Event_Mouse_Down mouse_down;
381 Ecore_IMF_Event_Mouse_Up mouse_up;
382 Ecore_IMF_Event_Mouse_In mouse_in;
383 Ecore_IMF_Event_Mouse_Out mouse_out;
384 Ecore_IMF_Event_Mouse_Move mouse_move;
385 Ecore_IMF_Event_Mouse_Wheel mouse_wheel;
386 Ecore_IMF_Event_Key_Down key_down;
387 Ecore_IMF_Event_Key_Up key_up;
392 ECORE_IMF_PREEDIT_TYPE_NONE = 0,
393 ECORE_IMF_PREEDIT_TYPE_SUB1 = 1,
394 ECORE_IMF_PREEDIT_TYPE_SUB2 = 2,
395 ECORE_IMF_PREEDIT_TYPE_SUB3 = 3
396 } Ecore_IMF_Preedit_Type;
398 typedef struct _Ecore_IMF_Preedit_Attr Ecore_IMF_Preedit_Attr;
400 struct _Ecore_IMF_Preedit_Attr
402 Ecore_IMF_Preedit_Type preedit_type;
403 unsigned int start_index;
404 unsigned int end_index;
407 struct _Ecore_IMF_Context_Class
409 void (*add) (Ecore_IMF_Context *ctx);
410 void (*del) (Ecore_IMF_Context *ctx);
411 void (*client_window_set) (Ecore_IMF_Context *ctx, void *window);
412 void (*client_canvas_set) (Ecore_IMF_Context *ctx, void *canvas);
413 void (*show) (Ecore_IMF_Context *ctx);
414 void (*hide) (Ecore_IMF_Context *ctx);
415 void (*preedit_string_get) (Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
416 void (*focus_in) (Ecore_IMF_Context *ctx);
417 void (*focus_out) (Ecore_IMF_Context *ctx);
418 void (*reset) (Ecore_IMF_Context *ctx);
419 void (*cursor_position_set) (Ecore_IMF_Context *ctx, int cursor_pos);
420 void (*use_preedit_set) (Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
421 void (*input_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
422 Eina_Bool (*filter_event) (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
424 /* Input Panel Control APIs */
425 void (*control_panel_show) (Ecore_IMF_Context *ctx);
426 void (*control_panel_hide) (Ecore_IMF_Context *ctx);
428 void (*input_panel_layout_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout);
429 Ecore_IMF_Input_Panel_Layout (*input_panel_layout_get) (Ecore_IMF_Context *ctx);
431 void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
432 Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Context *ctx);
434 void (*input_panel_imdata_set) (Ecore_IMF_Context *ctx, const char* data, int len);
435 void (*input_panel_imdata_get) (Ecore_IMF_Context *ctx, char* data, int *len);
437 void (*input_panel_use_effect_set) (Ecore_IMF_Context *ctx, Eina_Bool use_effect);
438 void (*input_panel_orient_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient orientation);
440 void (*input_panel_move) (Ecore_IMF_Context *ctx, int x, int y);
441 void (*input_panel_geometry_get) (Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
442 void (*input_panel_private_key_set) (Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char* label, const char* value);
443 void (*input_panel_key_disabled_set) (Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled);
445 void (*input_panel_reset) (Ecore_IMF_Context *ctx); /* Same as reset to default property*/
446 Ecore_IMF_Input_Panel_State (*input_panel_state_get) (Ecore_IMF_Context *ctx);
449 void (*input_panel_event_callback_add) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*pEventCallBackFunc) (void *data, Ecore_IMF_Context *ctx, int value), void *data);
450 void (*input_panel_event_callback_del) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*pEventCallbackFunc) (void *data, Ecore_IMF_Context *ctx, int value));
452 /* ISF related APIs */
453 int (*ise_get_ise_language) (Ecore_IMF_Context *ctx, const char* input_panel_name, char*** langlist);
454 int (*ise_set_isf_language) (Ecore_IMF_Context *ctx, const char* lang);
455 int (*ise_get_active_isename) (Ecore_IMF_Context *ctx, char* name); /**< will be deprecated */
456 int (*ise_set_active_ise_by_name) (Ecore_IMF_Context *ctx, const char* name); /**< will be deprecated */
457 int (*ise_set_active_ise_by_uuid) (Ecore_IMF_Context *ctx, const char* uuid); /**< will be deprecated */
458 int (*ise_get_iselist) (Ecore_IMF_Context *ctx, char*** iselist); /**< will be deprecated */
459 void (*input_panel_caps_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Caps_Mode mode);
461 void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos);
464 struct _Ecore_IMF_Context_Info
466 const char *id; /* ID */
467 const char *description; /* Human readable description */
468 const char *default_locales; /* Languages for which this context is the default, separated by : */
469 const char *canvas_type; /* The canvas type used by the input method. Eg.: evas */
470 int canvas_required; /* Whether the canvas usage is required for this input method */
473 EAPI int ecore_imf_init(void);
474 EAPI int ecore_imf_shutdown(void);
476 EAPI void ecore_imf_module_register(const Ecore_IMF_Context_Info *info, Ecore_IMF_Context *(*imf_module_create)(void), Ecore_IMF_Context *(*imf_module_exit)(void));
478 EAPI Eina_List *ecore_imf_context_available_ids_get(void);
479 EAPI Eina_List *ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type);
480 EAPI const char *ecore_imf_context_default_id_get(void);
481 EAPI const char *ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type);
482 EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const char *id);
484 EAPI Ecore_IMF_Context *ecore_imf_context_add(const char *id);
485 EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Context *ctx);
486 EAPI void ecore_imf_context_del(Ecore_IMF_Context *ctx);
487 EAPI void ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window);
488 EAPI void* ecore_imf_context_client_window_get(Ecore_IMF_Context *ctx);
489 EAPI void ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas);
490 EAPI void* ecore_imf_context_client_canvas_get(Ecore_IMF_Context *ctx);
491 EINA_DEPRECATED EAPI void ecore_imf_context_show(Ecore_IMF_Context *ctx);
492 EINA_DEPRECATED EAPI void ecore_imf_context_hide(Ecore_IMF_Context *ctx);
493 EAPI void ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
494 EAPI void ecore_imf_context_preedit_string_with_attributes_get(Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos);
495 EAPI void ecore_imf_context_focus_in(Ecore_IMF_Context *ctx);
496 EAPI void ecore_imf_context_focus_out(Ecore_IMF_Context *ctx);
497 EAPI void ecore_imf_context_reset(Ecore_IMF_Context *ctx);
498 EAPI void ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos);
499 EAPI void ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
500 EAPI void ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data);
501 EINA_DEPRECATED EAPI void ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
502 EINA_DEPRECATED EAPI Ecore_IMF_Input_Mode ecore_imf_context_input_mode_get(Ecore_IMF_Context *ctx);
503 EAPI Eina_Bool ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
505 /* plugin specific functions */
506 EAPI Ecore_IMF_Context *ecore_imf_context_new(const Ecore_IMF_Context_Class *ctxc);
507 EAPI void ecore_imf_context_data_set(Ecore_IMF_Context *ctx, void *data);
508 EAPI void *ecore_imf_context_data_get(Ecore_IMF_Context *ctx);
509 EAPI Eina_Bool ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
510 EAPI void ecore_imf_context_preedit_start_event_add(Ecore_IMF_Context *ctx);
511 EAPI void ecore_imf_context_preedit_end_event_add(Ecore_IMF_Context *ctx);
512 EAPI void ecore_imf_context_preedit_changed_event_add(Ecore_IMF_Context *ctx);
513 EAPI void ecore_imf_context_commit_event_add(Ecore_IMF_Context *ctx, const char *str);
514 EAPI void ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int offset, int n_chars);
517 * Show the current active ISE with given state.
518 * To use this API application should include Ecore_IMF.h header file.
519 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
520 * @param ctx context used to map real loaded APIs
521 * @ingroup Ecore_IMF_Context_IMControl_Group
523 * #include <Ecore_IMF.h>
525 * static void entry_application(appdata * ad)
528 * en = elm_entry_add(ad->win_main);
529 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
532 * // show input panel window
533 * ecore_imf_context_input_panel_show (imf_context);
539 EAPI void ecore_imf_context_input_panel_show(Ecore_IMF_Context *ctx);
542 * Hide the current active ISE.
543 * To use this API application should include Ecore_IMF.h header file.
544 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
545 * @param ctx context used to map real loaded APIs
546 * @ingroup Ecore_IMF_Context_IMControl_Group
548 * #include <Ecore_IMF.h>
550 * static void button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
552 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
556 * ecore_imf_context_input_panel_hide (imf_context);
560 * static void entry_application(appdata * ad)
563 * en = elm_entry_add(ad->win_main);
564 * evas_object_smart_callback_add(en, "clicked", button_clicked_cb, NULL);
569 EAPI void ecore_imf_context_input_panel_hide(Ecore_IMF_Context *ctx);
572 * Show control panel.
573 * @param ctx context used to map real loaded APIs
574 * @ingroup Ecore_IMF_Context_IMControl_Group
576 * ISE control panel shows ISE list and provides setup of each ISE
578 EAPI void ecore_imf_context_control_panel_show (Ecore_IMF_Context *ctx);
581 * Hide control panel.
582 * @param ctx context used to map real loaded APIs
583 * @ingroup Ecore_IMF_Context_IMControl_Group
585 * ISE control panel shows ISE list and provides setup of each ISE
587 EAPI void ecore_imf_context_control_panel_hide (Ecore_IMF_Context *ctx);
590 * Set ISE Language before show ISE.
591 * @param ctx context used to map real loaded APIs
592 * @param lang see Ecore_IMF_Input_Panel_Lang
593 * @ingroup Ecore_IMF_Context_IMControl_Group
594 * THIS API IS NOT SUPPORTED NOW
596 EAPI void ecore_imf_context_input_panel_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
599 * Get ISE Language of current active ISE.
600 * @param ctx context used to map real loaded APIs
601 * @return Ecore_IMF_Input_Panel_Lang
602 * @ingroup Ecore_IMF_Context_IMControl_Group
603 * THIS API IS NOT SUPPORTED NOW
605 EAPI Ecore_IMF_Input_Panel_Lang ecore_imf_context_input_panel_language_get (Ecore_IMF_Context *ctx);
608 * Set keyboard language.
609 * @param ctx context used to map real loaded APIs
610 * @param lang see Ecore_IMF_Input_Panel_Lang
611 * @ingroup Ecore_IMF_Context_IMControl_Group
612 * THIS API IS NOT SUPPORTED NOW
614 EAPI void ecore_imf_context_keyboard_language_set (Ecore_IMF_Context *ctx, Ecore_IMF_Keyboard_Lang lang);
617 * Get keyboard language.
618 * @param ctx context used to map real loaded APIs
619 * @return Ecore_IMF_Input_Panel_Lang
620 * @ingroup Ecore_IMF_Context_IMControl_Group
621 * THIS API IS NOT SUPPORTED NOW
623 EAPI Ecore_IMF_Keyboard_Lang ecore_imf_context_keyboard_language_get (Ecore_IMF_Context *ctx);
626 * Get ISE Language of given ISE. -- Not supported for now --
627 * @ingroup Ecore_IMF_Context_IMControl_Group
629 EAPI int ecore_imf_context_ise_get_ise_language (Ecore_IMF_Context *ctx, const char* ise_name, char ***langlist);
632 * Set ISF Language. -- Not supported for now --
633 * @ingroup Ecore_IMF_Context_IMControl_Group
635 EAPI void ecore_imf_context_ise_set_isf_language (Ecore_IMF_Context *ctx, const char* lang);
638 * Set ISE Specific data before show ISE.
639 * To use this API application should include Ecore_IMF.h header file.
640 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
641 * @param ctx context used to map real loaded APIs
642 * @param data data pointer
643 * @param len data length
644 * @ingroup Ecore_IMF_Context_IMControl_Group
646 * this API is used by applications to deliver specific data to ISE.
647 * the data format MUST be negotiated by both application and ISE negotiate.
650 * #include <Ecore_IMF.h>
652 * static void create_entry(struct appdata *ad)
654 * char *im_data="application sample imdata";
657 * en = elm_entry_add(ad->layout_main);
658 * elm_layout_content_set(ad->layout_main, "entry", en);
660 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
664 * ecore_imf_context_input_panel_imdata_set (imf_context, im_data, strlen(im_data)+1);
669 EAPI void ecore_imf_context_input_panel_imdata_set (Ecore_IMF_Context *ctx, const char * data, int len);
672 * Get ISE Specific data of current active ISE.
673 * To use this API application should include Ecore_IMF.h header file.
674 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
675 * @param ctx context used to map real loaded APIs
676 * @param data data pointer
677 * @param len data length
678 * @ingroup Ecore_IMF_Context_IMControl_Group
680 * #include <Ecore_IMF.h>
682 * static void create_entry(struct appdata *ad)
685 * char *im_data = (char*) malloc (len);
687 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ad->entry);
691 * ecore_imf_context_input_panel_imdata_get (imf_context, im_data, &len);
698 EAPI void ecore_imf_context_input_panel_imdata_get (Ecore_IMF_Context *ctx, char *data, int *len);
701 * Set ISE whether animation effect is shown or not.
702 * To use this API application should include Ecore_IMF.h header file.
703 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
704 * @param ctx context used to map real loaded APIs
705 * @param use_effect whether animation effect is shown or not
706 * @ingroup Ecore_IMF_Context_IMControl_Group
708 * this API is used by applications to deliver specific data to ISE.
709 * the data format MUST be negotiated by both application and ISE negotiate.
712 * #include <Ecore_IMF.h>
714 * static void create_entry(struct appdata *ad)
718 * en = elm_entry_add(ad->layout_main);
719 * elm_layout_content_set(ad->layout_main, "entry", en);
721 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
725 * ecore_imf_context_input_panel_use_effect_set (imf_context, EINA_FALSE); // turn off the animation effect when input panel is appeared.
730 EAPI void ecore_imf_context_input_panel_use_effect_set (Ecore_IMF_Context *ctx, Eina_Bool use_effect);
733 * Get whether ISE supports animation effect or not when it is shown or hidden.
734 * To use this API application should include Ecore_IMF.h header file.
735 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
736 * @param ctx context used to map real loaded APIs
737 * @param use_effect whether animation effect is shown or not
738 * @ingroup Ecore_IMF_Context_IMControl_Group
740 * this API is used by applications to deliver specific data to ISE.
741 * the data format MUST be negotiated by both application and ISE negotiate.
744 * #include <Ecore_IMF.h>
746 * static Eina_Bool get_effect_info(struct appdata *ad)
748 * Eina_Bool use_effect = EINA_TRUE;
750 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ad->entry);
754 * use_effect = ecore_imf_context_input_panel_use_effect_get (imf_context);
761 EAPI Eina_Bool ecore_imf_context_input_panel_use_effect_get (Ecore_IMF_Context *ctx);
764 * Get ISE position of current active ISE.
765 * To use this API application should include Ecore_IMF.h header file.
766 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
767 * @param ctx context used to map real loaded APIs
768 * @param x top-left x co-ordinate of rectangle;
769 * @param y top-left y co-ordinate of rectangle;
770 * @param w width of rectangle ;
771 * @param h height of rectangle;
772 * @ingroup Ecore_IMF_Context_IMControl_Group
774 * #include <Ecore_IMF.h>
776 * int get_geometry(struct appdata *ad)
778 * Ecore_IMF_Context *imf_context = NULL;
780 * imf_context = elm_entry_imf_context_get (ad->entry);
783 * ecore_imf_context_input_panel_geometry_get (imf_context, &x, &y, &w, &h);
784 * //here application can get window size rect
785 * printf ("x=%d \n", x);
786 * printf ("y=%d \n", y);
787 * printf ("width=%d \n", w);
788 * printf ("height=%d \n", h);
792 EAPI void ecore_imf_context_input_panel_geometry_get (Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h);
795 * Set ISE private key before show ISE.
796 * To use this API application should include Ecore_IMF.h header file.
797 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
798 * Since the second parameter of this API requires a layout index, so before using this API application has to set a specific layout and that layout index
799 * should be passed in the 2nd argument of this API(see sample code).
800 * @param ctx context used to map real loaded APIs
801 * @param layout_index index of layout page to be set
802 * @param key_index index of key to be set
803 * @param label text label to be appeared on private key
804 * @param value value of key, If NULL it will use original value of key
805 * @ingroup Ecore_IMF_Context_IMControl_Group
808 * #include <Ecore_IMF.h>
810 * static void create_entry(struct appdata *ad)
814 * en = elm_entry_add(ad->layout_main);
816 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
820 * ecore_imf_context_input_panel_private_key_set (imf_context, layout, 0, NULL, "www", -1, "www");
825 EAPI void ecore_imf_context_input_panel_private_key_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, const char *img_path, const char* label, int key_value, const char* key_string);
827 EAPI Eina_List *ecore_imf_context_input_panel_private_key_list_get (Ecore_IMF_Context *ctx);
830 * Set ISE Layout before show ISE.
831 * To use this API application should include Ecore_IMF.h header file.
832 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
833 * @param ctx context used to map real loaded APIs
834 * @param layout see ECORE_IMF_INPUT_PANEL_LAYOUT
835 * @ingroup Ecore_IMF_Context_IMControl_Group
837 * #include <Ecore_IMF.h>
839 * static void create_entry(struct appdata *ad)
841 * en = elm_entry_add(ad->layout_main);
842 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
846 * ecore_imf_context_input_panel_layout_set (imf_context, ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL);
851 EAPI void ecore_imf_context_input_panel_layout_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout);
854 * Get ISE Layout of current active ISE.
855 * To use this API application should include Ecore_IMF.h header file.
856 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
857 * @param ctx context used to map real loaded APIs
858 * @return layout see ECORE_IMF_INPUT_PANEL_LAYOUT
859 * @ingroup Ecore_IMF_Context_IMControl_Group
861 * #include <Ecore_IMF.h>
863 * static void layout_get(struct appdata *ad)
865 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ad->entry);
869 * layout = ecore_imf_context_input_panel_layout_get (imf_context);
874 EAPI Ecore_IMF_Input_Panel_Layout ecore_imf_context_input_panel_layout_get (Ecore_IMF_Context *ctx);
877 * Reset ISE Context including its Style.
878 * To use this API application should include Ecore_IMF.h header file.
879 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
880 * This is special function that should be called before calling any ecore_imf_context_set*** APIs to restore all default properties of ISE.
881 * @ingroup Ecore_IMF_Context_IMControl_Group
883 * NOTE: This API MUST be called before calling ecore_imf_context_input_panel_show().
885 EAPI void ecore_imf_context_input_panel_reset (Ecore_IMF_Context *ctx); /* Same as reset to default property*/
888 * Set ISE screen orientation.
889 * To use this API application should include Ecore_IMF.h header file.
890 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
891 * To show the keypad in landscape mode application should first call this API with 2nd parameter as 90 or 270.
892 * After then only application should call ecore_imf_context_input_panel_show() function.
893 * @ingroup Ecore_IMF_Context_IMControl_Group
895 * #include <Ecore_IMF.h>
897 * static void create_entry(struct appdata *ad)
899 * en = elm_entry_add(ad->layout_main);
900 * elm_layout_content_set(ad->layout_main, "entry", en);
902 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
903 * int degree = 90; // the degree value can be either 90/270 for landscape mode and normal portrait mode 0/360.
907 * // the orient value can be
908 * // ECORE_IMF_INPUT_PANEL_ORIENT_NONE,
909 * // ECORE_IMF_INPUT_PANEL_ORIENT_90_CW // Clockwise
910 * // ECORE_IMF_INPUT_PANEL_ORIENT_180,
911 * // ECORE_IMF_INPUT_PANEL_ORIENT_90_CCW // CounterClockwise
912 * ecore_imf_context_input_panel_orient_set(imf_context, ECORE_IMF_INPUT_PANEL_ORIENT_90_CW);
916 EAPI void ecore_imf_context_input_panel_orient_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Orient orientation);
919 * Get Input panel orientation.
920 * To use this API application should include Ecore_IMF.h header file.
921 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
922 * To show the keypad in landscape mode application should first call this API with 2nd parameter as 90 or 270.
923 * After then only application should call ecore_imf_context_input_panel_show() function.
924 * @ingroup Ecore_IMF_Context_IMControl_Group
926 * #include <Ecore_IMF.h>
928 * void get_orient (struct appdata *ad)
930 * Ecore_IMF_Input_Panel_Orient orient;
931 * ad->entry = elm_entry_add(ad->layout_main);
932 * elm_entry_input_panel_layout_set(ad->entry, ELM_INPUT_PANEL_LAYOUT_URL);
933 * imf_context = elm_entry_imf_context_get (ad->entry);
936 * orient = ecore_imf_context_input_panel_orient_get (imf_context);
941 * case ECORE_IMF_INPUT_PANEL_ORIENT_NONE:
942 * printf("0 degree\n");
944 * case ECORE_IMF_INPUT_PANEL_ORIENT_90_CW:
945 * printf("90 degree clockwise\n");
947 * case ECORE_IMF_INPUT_PANEL_ORIENT_180:
948 * printf("90 degree clockwise\n");
950 * case ECORE_IMF_INPUT_PANEL_ORIENT_90_CCW:
951 * printf("90 degree counter-clockwise\n");
957 EAPI Ecore_IMF_Input_Panel_Orient ecore_imf_context_input_panel_orient_get (Ecore_IMF_Context *ctx);
960 * Get name of current active ISE.
961 * To use this API application should include Ecore_IMF.h header file.
962 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
963 * @param ctx context used to map real loaded APIs
964 * @param name ISE name to be got
965 * @ingroup Ecore_IMF_Context_IMControl_Group
967 * #include <Ecore_IMF.h>
969 * static void create_entry(struct appdata *ad)
972 * char *isename = (char*) malloc (len);
973 * memset(isename, '\0', sizeof(isename));
975 * Ecore_IMF_Context *imf_context = NULL;
976 * imf_context = elm_entry_imf_context_get(obj);
980 * ecore_imf_context_ise_get_active_isename (imf_context, isename);
981 * printf("get isename=[%s]\n", isename);
986 EAPI void ecore_imf_context_ise_get_active_isename (Ecore_IMF_Context *ctx, char* name);
989 * Set ISE by its name.
990 * To use this API application should include Ecore_IMF.h header file.
991 * Before calling this API, every application should call ecore_imf_init() to initialize the ecore_imf shared library.
992 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
993 * @param ctx context used to map real loaded APIs
994 * @param name ISE name to be set
995 * @ingroup Ecore_IMF_Context_IMControl_Group
997 * #include <Ecore_IMF.h>
999 * static void create_entry(struct appdata *ad)
1003 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
1007 * ecore_imf_context_ise_set_active_ise_by_name (imf_context, "Input Pad");
1010 * //do imf related things
1012 * ecore_imf_shutdown();
1014 * //do imf irrelated things
1018 EAPI void ecore_imf_context_ise_set_active_ise_by_name (Ecore_IMF_Context *ctx, const char* name);
1021 * Set ISE by its uuid.
1022 * To use this API application should include Ecore_IMF.h header file.
1023 * Before calling this API, every application should call ecore_imf_init() to initialize the ecore_imf shared library.
1024 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1025 * @param ctx context used to map real loaded APIs
1026 * @param uuid ISE uuid to be set
1027 * @ingroup Ecore_IMF_Context_IMControl_Group
1029 * #include <Ecore_IMF.h>
1031 * static void create_entry(struct appdata *ad)
1033 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
1037 * ecore_imf_context_ise_set_active_ise_by_uuid (imf_context, "ff110940-b8f0-4062-9ff6-a84f4f3575c0");
1038 * ecore_imf_context_input_panel_show (imf_context);
1043 EAPI void ecore_imf_context_ise_set_active_ise_by_uuid (Ecore_IMF_Context *ctx, const char* uuid);
1047 * To use this API application should include Ecore_IMF.h header file.
1048 * Before calling this API, every application should call ecore_imf_init() to initialize the ecore_imf shared library.
1049 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1050 * @param ctx context used to map real loaded APIs
1051 * @param iselist pointer to the list to be got.
1052 * @return int ise counter of iselist
1053 * @ingroup Ecore_IMF_Context_IMControl_Group
1055 * #include <Ecore_IMF.h>
1057 * static void create_entry(struct appdata *ad)
1061 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
1067 * count = ecore_imf_context_input_panel_get_iselist(imf_context, &iselist);
1068 * printf("get_iselist : count[%d] ", count);
1069 * for (i=0;i<count;i++)
1070 * printf("[%d:%s] ", i, iselist[i]);
1073 * //do imf related things
1075 * ecore_imf_shutdown();
1077 * //do imf irrelated things
1081 EAPI int ecore_imf_context_ise_get_iselist (Ecore_IMF_Context *ctx, char*** iselist);
1084 * Get state of current active ISE.
1085 * To use this API application should include Ecore_IMF.h header file.
1086 * Before calling this API, every application should call ecore_imf_init() to initialize the ecore_imf shared library.
1087 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1088 * @param ctx context used to map real loaded APIs
1089 * @param state see ISE_STATE
1090 * @ingroup Ecore_IMF_Context_IMControl_Group
1092 * #include <Ecore_IMF.h>
1094 * static void input_panel_state_get(struct appdata *ad)
1096 * Ecore_IMF_Input_Panel_State state;
1098 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ad->entry);
1102 * state = ecore_imf_context_input_panel_state_get (imf_context);
1103 * //here u can see what the current state is
1104 * printf("the current state of ISE is %d", state);
1109 EAPI Ecore_IMF_Input_Panel_State ecore_imf_context_input_panel_state_get (Ecore_IMF_Context *ctx);
1112 * Application can register a callback function which will be called if there is change in ise state,language,mode etc.
1113 * To use this API application should include Ecore_IMF.h header file.
1114 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1115 * @param ctx context used to map real loaded APIs.
1116 * @param pEventCallback the callback function to be called
1117 * @param data application-ISE specific data.
1118 * @return an integer unique to callabck registered.
1119 * @ingroup Ecore_IMF_Context_IMControl_Group
1121 * #include <Ecore_IMF.h>
1123 * void _input_panel_event_callback(void *data, Ecore_IMF_Context *ctx, int value)
1125 * if(value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
1126 * // ISE state has changed to ECORE_IMF_INPUT_PANEL_STATE_SHOW status
1127 * } else if(value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
1128 * // ISE state has changed to ECORE_IMF_INPUT_PANEL_STATE_HIDE status
1130 * printf("value: %d\n", value);
1133 * static void create_entry(struct appdata *ad)
1136 * en = elm_entry_add(ad->layout_main);
1137 * elm_layout_content_set(ad->layout_main, "entry", en);
1139 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
1143 * ecore_imf_context_input_panel_event_callback_add (imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_callback, data);
1147 * In order to deregister the callback function registered application should follow the below step.
1148 * ecore_imf_context_input_panel_event_callback_del (imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _ise_event_callback);
1150 EAPI void ecore_imf_context_input_panel_event_callback_add (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*pEventCallbackFunc) (void *data, Ecore_IMF_Context *ctx, int value), const void *data);
1152 EAPI void ecore_imf_context_input_panel_event_callback_del (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Event type, void (*pEventCallbackFunc) (void *data, Ecore_IMF_Context *ctx, int value));
1155 * Set the key to be disabled.
1156 * To use this API application should include Ecore_IMF.h header file.
1157 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1158 * Since the second parameter of this API requires a layout index, so before using this API application has to set a specific layout and that layout index
1159 * should be passed in the 2nd argument of this API(see sample code).
1160 * @param ctx context used to map real loaded APIs
1161 * @param layout_index index of layout page to be set
1162 * @param key_index index of key to be set
1163 * @param disabled The state
1164 * @ingroup Ecore_IMF_Context_IMControl_Group
1166 * #include <Ecore_IMF.h>
1168 * static void create_entry(struct appdata *ad)
1171 * en = elm_entry_add(ad->layout_main);
1172 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
1176 * ecore_imf_context_input_panel_key_disabled_set (imf_context, layout, ECORE_IMF_INPUT_PANEL_KEY_SPACE, EINA_TRUE);
1181 EAPI void ecore_imf_context_input_panel_key_disabled_set (Ecore_IMF_Context *ctx, int layout_index, int key_index, Eina_Bool disabled);
1183 EAPI Eina_List *ecore_imf_context_input_panel_key_disabled_list_get (Ecore_IMF_Context *ctx);
1186 * Move the soft keyboard to the new position.
1187 * To use this API application should include Ecore_IMF.h header file.
1188 * The first parameter i.e Ecore_IMF_Context *ctx is used to map the ecore_imf API into real implemented API which is inside ISF.
1189 * Since the second parameter of this API requires a layout index, so before using this API application has to set a specific layout and that layout index
1190 * should be passed in the 2nd argument of this API(see sample code).
1191 * @param ctx context used to map real loaded APIs
1192 * @param x X position to move the virtual keyboard to
1193 * @param y Y position to move the virtual keyboard to
1194 * @ingroup Ecore_IMF_Context_IMControl_Group
1196 * #include <Ecore_IMF.h>
1198 * static void create_entry(struct appdata *ad)
1200 * Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(obj);
1204 * ecore_imf_context_input_panel_move (imf_context, 0, 400);
1209 EAPI void ecore_imf_context_input_panel_move (Ecore_IMF_Context *ctx, int x, int y);
1211 EAPI void ecore_imf_context_input_panel_caps_mode_set (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Caps_Mode mode);
1213 /* The following entry points must be exported by each input method module
1217 * int imf_module_init (const Ecore_IMF_Context_Info **info);
1218 * void imf_module_exit (void);
1219 * Ecore_IMF_Context *imf_module_create (void);
1228 /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/