2 #include "e_mod_main.h"
3 #include "e_mod_config.h"
6 /* local function prototypes */
7 static void _il_kbd_stop(void);
8 static void _il_kbd_start(void);
9 static Eina_Bool _il_kbd_cb_exit(void *data, int type, void *event);
12 static E_Kbd_Int *ki = NULL;
13 static Ecore_Exe *_kbd_exe = NULL;
14 static Ecore_Event_Handler *_kbd_exe_exit_handler = NULL;
16 EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume Keyboard" };
19 e_modapi_init(E_Module *m)
21 if (!il_kbd_config_init(m)) return NULL;
23 e_module_delayed_set(m, 1);
28 e_modapi_shutdown(E_Module *m __UNUSED__)
31 il_kbd_config_shutdown();
36 e_modapi_save(E_Module *m __UNUSED__)
38 return il_kbd_config_save();
42 il_kbd_cfg_update(void)
51 if (ki) e_kbd_int_free(ki);
53 if (_kbd_exe) ecore_exe_interrupt(_kbd_exe);
55 if (_kbd_exe_exit_handler) ecore_event_handler_del(_kbd_exe_exit_handler);
56 _kbd_exe_exit_handler = NULL;
62 if (il_kbd_cfg->use_internal)
64 ki = e_kbd_int_new(il_kbd_cfg->mod_dir,
65 il_kbd_cfg->mod_dir, il_kbd_cfg->mod_dir);
67 else if (il_kbd_cfg->run_keyboard)
69 E_Exec_Instance *inst;
70 Efreet_Desktop *desktop;
72 desktop = efreet_util_desktop_file_id_find(il_kbd_cfg->run_keyboard);
78 kbds = efreet_util_desktop_category_list("Keyboard");
81 EINA_LIST_FOREACH(kbds, l, d)
85 dname = ecore_file_file_get(d->orig_path);
88 if (!strcmp(dname, il_kbd_cfg->run_keyboard))
91 efreet_desktop_ref(desktop);
96 EINA_LIST_FREE(kbds, d)
97 efreet_desktop_free(d);
104 zone = e_util_zone_current_get(e_manager_current_get());
105 inst = e_exec(zone, desktop, NULL, NULL, "illume-keyboard");
108 _kbd_exe = inst->exe;
109 _kbd_exe_exit_handler =
110 ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
111 _il_kbd_cb_exit, NULL);
113 efreet_desktop_free(desktop);
119 _il_kbd_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event)
121 Ecore_Exe_Event_Del *ev;
124 if (ev->exe == _kbd_exe) _kbd_exe = NULL;
125 return ECORE_CALLBACK_PASS_ON;