aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-04 18:41:13 +1000
committerDavid Walter Seikel2012-01-04 18:41:13 +1000
commitdd7595a3475407a7fa96a97393bae8c5220e8762 (patch)
treee341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h
parentAdd the skeleton. (diff)
downloadSledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h')
-rw-r--r--libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h418
1 files changed, 418 insertions, 0 deletions
diff --git a/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h b/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h
new file mode 100644
index 0000000..21df2a0
--- /dev/null
+++ b/libraries/ecore/src/lib/ecore_imf/Ecore_IMF.h
@@ -0,0 +1,418 @@
1#ifndef _ECORE_IMF_H
2#define _ECORE_IMF_H
3
4#include <Eina.h>
5
6#ifdef EAPI
7# undef EAPI
8#endif
9
10#ifdef _WIN32
11# ifdef EFL_ECORE_IMF_BUILD
12# ifdef DLL_EXPORT
13# define EAPI __declspec(dllexport)
14# else
15# define EAPI
16# endif /* ! DLL_EXPORT */
17# else
18# define EAPI __declspec(dllimport)
19# endif /* ! EFL_ECORE_IMF_BUILD */
20#else
21# ifdef __GNUC__
22# if __GNUC__ >= 4
23# define EAPI __attribute__ ((visibility("default")))
24# else
25# define EAPI
26# endif
27# else
28# define EAPI
29# endif
30#endif /* ! _WIN32 */
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36/* Events sent by the Input Method */
37typedef struct _Ecore_IMF_Event_Preedit_Start Ecore_IMF_Event_Preedit_Start;
38typedef struct _Ecore_IMF_Event_Preedit_End Ecore_IMF_Event_Preedit_End;
39typedef struct _Ecore_IMF_Event_Preedit_Changed Ecore_IMF_Event_Preedit_Changed;
40typedef struct _Ecore_IMF_Event_Commit Ecore_IMF_Event_Commit;
41typedef struct _Ecore_IMF_Event_Delete_Surrounding Ecore_IMF_Event_Delete_Surrounding;
42
43/* Events to filter */
44typedef struct _Ecore_IMF_Event_Mouse_Down Ecore_IMF_Event_Mouse_Down;
45typedef struct _Ecore_IMF_Event_Mouse_Up Ecore_IMF_Event_Mouse_Up;
46typedef struct _Ecore_IMF_Event_Mouse_In Ecore_IMF_Event_Mouse_In;
47typedef struct _Ecore_IMF_Event_Mouse_Out Ecore_IMF_Event_Mouse_Out;
48typedef struct _Ecore_IMF_Event_Mouse_Move Ecore_IMF_Event_Mouse_Move;
49typedef struct _Ecore_IMF_Event_Mouse_Wheel Ecore_IMF_Event_Mouse_Wheel;
50typedef struct _Ecore_IMF_Event_Key_Down Ecore_IMF_Event_Key_Down;
51typedef struct _Ecore_IMF_Event_Key_Up Ecore_IMF_Event_Key_Up;
52typedef union _Ecore_IMF_Event Ecore_IMF_Event;
53
54typedef struct _Ecore_IMF_Context Ecore_IMF_Context; /**< An Input Method Context */
55typedef struct _Ecore_IMF_Context_Class Ecore_IMF_Context_Class; /**< An Input Method Context class */
56typedef struct _Ecore_IMF_Context_Info Ecore_IMF_Context_Info; /**< An Input Method Context info */
57
58/* Preedit attribute info */
59typedef struct _Ecore_IMF_Preedit_Attr Ecore_IMF_Preedit_Attr;
60
61EAPI extern int ECORE_IMF_EVENT_PREEDIT_START;
62EAPI extern int ECORE_IMF_EVENT_PREEDIT_END;
63EAPI extern int ECORE_IMF_EVENT_PREEDIT_CHANGED;
64EAPI extern int ECORE_IMF_EVENT_COMMIT;
65EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING;
66
67typedef enum
68{
69 ECORE_IMF_EVENT_MOUSE_DOWN,
70 ECORE_IMF_EVENT_MOUSE_UP,
71 ECORE_IMF_EVENT_MOUSE_IN,
72 ECORE_IMF_EVENT_MOUSE_OUT,
73 ECORE_IMF_EVENT_MOUSE_MOVE,
74 ECORE_IMF_EVENT_MOUSE_WHEEL,
75 ECORE_IMF_EVENT_KEY_DOWN,
76 ECORE_IMF_EVENT_KEY_UP
77} Ecore_IMF_Event_Type;
78
79typedef enum
80{
81 ECORE_IMF_KEYBOARD_MODIFIER_NONE = 0, /**< No active modifiers */
82 ECORE_IMF_KEYBOARD_MODIFIER_CTRL = 1 << 0, /**< "Control" is pressed */
83 ECORE_IMF_KEYBOARD_MODIFIER_ALT = 1 << 1, /**< "Alt" is pressed */
84 ECORE_IMF_KEYBOARD_MODIFIER_SHIFT = 1 << 2, /**< "Shift" is pressed */
85 ECORE_IMF_KEYBOARD_MODIFIER_WIN = 1 << 3 /**< "Win" (between "Ctrl" and "Alt") is pressed */
86} Ecore_IMF_Keyboard_Modifiers;
87
88typedef enum
89{
90 ECORE_IMF_KEYBOARD_LOCK_NONE = 0, /**< No locks are active */
91 ECORE_IMF_KEYBOARD_LOCK_NUM = 1 << 0, /**< "Num" lock is active */
92 ECORE_IMF_KEYBOARD_LOCK_CAPS = 1 << 1, /**< "Caps" lock is active */
93 ECORE_IMF_KEYBOARD_LOCK_SCROLL = 1 << 2 /**< "Scroll" lock is active */
94} Ecore_IMF_Keyboard_Locks;
95
96typedef enum
97{
98 ECORE_IMF_MOUSE_NONE = 0, /**< A single click */
99 ECORE_IMF_MOUSE_DOUBLE_CLICK = 1 << 0, /**< A double click */
100 ECORE_IMF_MOUSE_TRIPLE_CLICK = 1 << 1 /**< A triple click */
101} Ecore_IMF_Mouse_Flags;
102
103typedef enum
104{
105 ECORE_IMF_INPUT_MODE_ALPHA = 1 << 0,
106 ECORE_IMF_INPUT_MODE_NUMERIC = 1 << 1,
107 ECORE_IMF_INPUT_MODE_SPECIAL = 1 << 2,
108 ECORE_IMF_INPUT_MODE_HEXA = 1 << 3,
109 ECORE_IMF_INPUT_MODE_TELE = 1 << 4,
110 ECORE_IMF_INPUT_MODE_FULL = (ECORE_IMF_INPUT_MODE_ALPHA | ECORE_IMF_INPUT_MODE_NUMERIC | ECORE_IMF_INPUT_MODE_SPECIAL),
111 ECORE_IMF_INPUT_MODE_INVISIBLE = 1 << 29,
112 ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30
113} Ecore_IMF_Input_Mode;
114
115typedef enum
116{
117 ECORE_IMF_PREEDIT_TYPE_NONE,
118 ECORE_IMF_PREEDIT_TYPE_SUB1,
119 ECORE_IMF_PREEDIT_TYPE_SUB2,
120 ECORE_IMF_PREEDIT_TYPE_SUB3
121} Ecore_IMF_Preedit_Type;
122
123typedef enum
124{
125 ECORE_IMF_AUTOCAPITAL_TYPE_NONE,
126 ECORE_IMF_AUTOCAPITAL_TYPE_WORD,
127 ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE,
128 ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER
129} Ecore_IMF_Autocapital_Type;
130
131typedef enum
132{
133 ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
134 ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
135 ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
136 ECORE_IMF_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
137 ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
138 ECORE_IMF_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
139 ECORE_IMF_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
140 ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
141 ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID
142} Ecore_IMF_Input_Panel_Layout;
143
144typedef enum
145{
146 ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */
147 ECORE_IMF_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */
148} Ecore_IMF_Input_Panel_Lang;
149
150struct _Ecore_IMF_Event_Preedit_Start
151{
152 Ecore_IMF_Context *ctx;
153};
154
155struct _Ecore_IMF_Event_Preedit_End
156{
157 Ecore_IMF_Context *ctx;
158};
159
160struct _Ecore_IMF_Event_Preedit_Changed
161{
162 Ecore_IMF_Context *ctx;
163};
164
165struct _Ecore_IMF_Event_Commit
166{
167 Ecore_IMF_Context *ctx;
168 char *str;
169};
170
171struct _Ecore_IMF_Event_Delete_Surrounding
172{
173 Ecore_IMF_Context *ctx;
174 int offset;
175 int n_chars;
176};
177
178struct _Ecore_IMF_Event_Mouse_Down
179{
180 int button; /**< The button which has been pressed */
181 struct {
182 int x, y;
183 } output;
184 struct {
185 int x, y;
186 } canvas;
187 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
188 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
189 Ecore_IMF_Mouse_Flags flags; /**< The flags corresponding the mouse click (single, double or triple click) */
190 unsigned int timestamp; /**< The timestamp when the event occurred */
191};
192
193struct _Ecore_IMF_Event_Mouse_Up
194{
195 int button; /**< The button which has been pressed */
196 struct {
197 int x, y;
198 } output;
199 struct {
200 int x, y;
201 } canvas;
202 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
203 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
204 Ecore_IMF_Mouse_Flags flags; /**< The flags corresponding the mouse click (single, double or triple click) */
205 unsigned int timestamp; /**< The timestamp when the event occurred */
206};
207
208struct _Ecore_IMF_Event_Mouse_In
209{
210 int buttons;
211 struct {
212 int x, y;
213 } output;
214 struct {
215 int x, y;
216 } canvas;
217 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
218 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
219 unsigned int timestamp; /**< The timestamp when the event occurred */
220};
221
222struct _Ecore_IMF_Event_Mouse_Out
223{
224 int buttons;
225 struct {
226 int x, y;
227 } output;
228 struct {
229 int x, y;
230 } canvas;
231 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
232 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
233 unsigned int timestamp; /**< The timestamp when the event occurred */
234};
235
236struct _Ecore_IMF_Event_Mouse_Move
237{
238 int buttons;
239 struct {
240 struct {
241 int x, y;
242 } output;
243 struct {
244 int x, y;
245 } canvas;
246 } cur, prev;
247 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
248 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
249 unsigned int timestamp; /**< The timestamp when the event occurred */
250};
251
252struct _Ecore_IMF_Event_Mouse_Wheel
253{
254 int direction; /* 0 = default up/down wheel */
255 int z; /* ...,-2,-1 = down, 1,2,... = up */
256 struct {
257 int x, y;
258 } output;
259 struct {
260 int x, y;
261 } canvas;
262 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
263 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
264 unsigned int timestamp; /**< The timestamp when the event occurred */
265};
266
267struct _Ecore_IMF_Event_Key_Down
268{
269 const char *keyname; /**< The string name of the key pressed */
270 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
271 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
272 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
273 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
274 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 */
275 unsigned int timestamp; /**< The timestamp when the event occurred */
276};
277
278struct _Ecore_IMF_Event_Key_Up
279{
280 const char *keyname; /**< The string name of the key pressed */
281 Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
282 Ecore_IMF_Keyboard_Locks locks; /**< The keyboard locks active when the event has been emitted */
283 const char *key; /**< The logical key : (eg shift+1 == exclamation) */
284 const char *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
285 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 */
286 unsigned int timestamp; /**< The timestamp when the event occurred */
287};
288
289union _Ecore_IMF_Event
290{
291 Ecore_IMF_Event_Mouse_Down mouse_down;
292 Ecore_IMF_Event_Mouse_Up mouse_up;
293 Ecore_IMF_Event_Mouse_In mouse_in;
294 Ecore_IMF_Event_Mouse_Out mouse_out;
295 Ecore_IMF_Event_Mouse_Move mouse_move;
296 Ecore_IMF_Event_Mouse_Wheel mouse_wheel;
297 Ecore_IMF_Event_Key_Down key_down;
298 Ecore_IMF_Event_Key_Up key_up;
299};
300
301struct _Ecore_IMF_Preedit_Attr
302{
303 Ecore_IMF_Preedit_Type preedit_type;
304 unsigned int start_index;
305 unsigned int end_index;
306};
307
308struct _Ecore_IMF_Context_Class
309{
310 void (*add) (Ecore_IMF_Context *ctx);
311 void (*del) (Ecore_IMF_Context *ctx);
312 void (*client_window_set) (Ecore_IMF_Context *ctx, void *window);
313 void (*client_canvas_set) (Ecore_IMF_Context *ctx, void *canvas);
314 void (*show) (Ecore_IMF_Context *ctx);
315 void (*hide) (Ecore_IMF_Context *ctx);
316 void (*preedit_string_get) (Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
317 void (*focus_in) (Ecore_IMF_Context *ctx);
318 void (*focus_out) (Ecore_IMF_Context *ctx);
319 void (*reset) (Ecore_IMF_Context *ctx);
320 void (*cursor_position_set) (Ecore_IMF_Context *ctx, int cursor_pos);
321 void (*use_preedit_set) (Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
322 void (*input_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
323 Eina_Bool (*filter_event) (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
324 void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos);
325 void (*prediction_allow_set)(Ecore_IMF_Context *ctx, Eina_Bool prediction);
326 void (*autocapital_type_set)(Ecore_IMF_Context *ctx, Ecore_IMF_Autocapital_Type autocapital_type);
327 void (*control_panel_show) (Ecore_IMF_Context *ctx);
328 void (*control_panel_hide) (Ecore_IMF_Context *ctx);
329 void (*input_panel_layout_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout);
330 Ecore_IMF_Input_Panel_Layout (*input_panel_layout_get) (Ecore_IMF_Context *ctx);
331 void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
332 Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Context *ctx);
333 void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h);
334};
335
336struct _Ecore_IMF_Context_Info
337{
338 const char *id; /* ID */
339 const char *description; /* Human readable description */
340 const char *default_locales; /* Languages for which this context is the default, separated by : */
341 const char *canvas_type; /* The canvas type used by the input method. Eg.: evas */
342 int canvas_required; /* Whether the canvas usage is required for this input method */
343};
344
345EAPI int ecore_imf_init(void);
346EAPI int ecore_imf_shutdown(void);
347
348EAPI 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));
349
350EAPI Eina_List *ecore_imf_context_available_ids_get(void);
351EAPI Eina_List *ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type);
352EAPI const char *ecore_imf_context_default_id_get(void);
353EAPI const char *ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type);
354EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const char *id);
355
356EAPI Ecore_IMF_Context *ecore_imf_context_add(const char *id);
357EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Context *ctx);
358EAPI void ecore_imf_context_del(Ecore_IMF_Context *ctx);
359EAPI void ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window);
360EAPI void *ecore_imf_context_client_window_get(Ecore_IMF_Context *ctx);
361EAPI void ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas);
362EAPI void *ecore_imf_context_client_canvas_get(Ecore_IMF_Context *ctx);
363EAPI void ecore_imf_context_show(Ecore_IMF_Context *ctx);
364EAPI void ecore_imf_context_hide(Ecore_IMF_Context *ctx);
365EAPI void ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
366EAPI void ecore_imf_context_preedit_string_with_attributes_get(Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos);
367EAPI void ecore_imf_context_focus_in(Ecore_IMF_Context *ctx);
368EAPI void ecore_imf_context_focus_out(Ecore_IMF_Context *ctx);
369EAPI void ecore_imf_context_reset(Ecore_IMF_Context *ctx);
370EAPI void ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos);
371EAPI void ecore_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int w, int h);
372EAPI void ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
373EAPI 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);
374EAPI void ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
375EAPI Ecore_IMF_Input_Mode ecore_imf_context_input_mode_get(Ecore_IMF_Context *ctx);
376EAPI Eina_Bool ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
377
378/* plugin specific functions */
379EAPI Ecore_IMF_Context *ecore_imf_context_new(const Ecore_IMF_Context_Class *ctxc);
380EAPI void ecore_imf_context_data_set(Ecore_IMF_Context *ctx, void *data);
381EAPI void *ecore_imf_context_data_get(Ecore_IMF_Context *ctx);
382EAPI Eina_Bool ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
383EAPI void ecore_imf_context_preedit_start_event_add(Ecore_IMF_Context *ctx);
384EAPI void ecore_imf_context_preedit_end_event_add(Ecore_IMF_Context *ctx);
385EAPI void ecore_imf_context_preedit_changed_event_add(Ecore_IMF_Context *ctx);
386EAPI void ecore_imf_context_commit_event_add(Ecore_IMF_Context *ctx, const char *str);
387EAPI void ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int offset, int n_chars);
388EAPI void ecore_imf_context_prediction_allow_set(Ecore_IMF_Context *ctx, Eina_Bool prediction);
389EAPI Eina_Bool ecore_imf_context_prediction_allow_get(Ecore_IMF_Context *ctx);
390EAPI void ecore_imf_context_autocapital_type_set(Ecore_IMF_Context *ctx, Ecore_IMF_Autocapital_Type autocapital_type);
391EAPI Ecore_IMF_Autocapital_Type ecore_imf_context_autocapital_type_get(Ecore_IMF_Context *ctx);
392
393EAPI void ecore_imf_context_control_panel_show(Ecore_IMF_Context *ctx);
394EAPI void ecore_imf_context_control_panel_hide(Ecore_IMF_Context *ctx);
395
396EAPI void ecore_imf_context_input_panel_show(Ecore_IMF_Context *ctx);
397EAPI void ecore_imf_context_input_panel_hide(Ecore_IMF_Context *ctx);
398EAPI void ecore_imf_context_input_panel_layout_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout);
399EAPI Ecore_IMF_Input_Panel_Layout ecore_imf_context_input_panel_layout_get(Ecore_IMF_Context *ctx);
400EAPI void ecore_imf_context_input_panel_language_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
401EAPI Ecore_IMF_Input_Panel_Lang ecore_imf_context_input_panel_language_get(Ecore_IMF_Context *ctx);
402EAPI void ecore_imf_context_input_panel_enabled_set(Ecore_IMF_Context *ctx, Eina_Bool enable);
403EAPI Eina_Bool ecore_imf_context_input_panel_enabled_get(Ecore_IMF_Context *ctx);
404
405/* The following entry points must be exported by each input method module
406 */
407
408/*
409 * int imf_module_init (const Ecore_IMF_Context_Info **info);
410 * void imf_module_exit (void);
411 * Ecore_IMF_Context *imf_module_create (void);
412 */
413
414#ifdef __cplusplus
415}
416#endif
417
418#endif