#define MVK_Shift_Lock 0xffe6
#define MVK_Shift_Enable 0x9fe7
#define MVK_Shift_Disable 0x9fe8
+#define ISE_DEFAULT_FLUSH_EVENT_CMD 1001
static ISELanguageManager _language_manager;
extern KEYBOARD_STATE g_keyboard_state;
#define AUTOMATA_BASE_ENCODING "UCS-2"
#define SYSTEM_OUTPUT_ENCODING "UTF8"
+static inline int get_lang_id(const sclchar* language);
+
int iconv_string(const char *from, const char *to, const char *src, char *dst, size_t inleftsize, size_t outleftsize)
{
size_t dstlen;
{
SCLEventReturnType ret = SCL_EVENT_PASS_ON;
const sclchar * cur_lang = _language_manager.get_current_language();
+ const sclchar * cur_keyboard_ise_uuid = "";
+ int lang_id = get_lang_id(cur_lang);
+ if (lang_id != -1)
+ cur_keyboard_ise_uuid = get_lang_table()[lang_id].keyboard_ise_uuid;
+ if (event_desc.key_modifier == KEY_MODIFIER_LONGKEY)
+ g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
switch (event_desc.key_type) {
case KEY_TYPE_CHAR:
ret = process_key_type_char(event_desc);
break;
case KEY_TYPE_STRING:
+ g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
if (strcmp(_language_manager.get_current_language(), "Korean") == 0) {
process_korean_automata(false, SIPKEY_ERROR);
}
break;
case KEY_TYPE_MODECHANGE:
{
+ g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
if (strcmp(_language_manager.get_current_language(), "Korean") == 0) {
process_korean_automata(false, SIPKEY_ERROR);
}
if (event_desc.key_event == MVK_space) {
if (_language_manager.get_enabled_languages_num() > 1) {
if (event_desc.key_modifier == KEY_MODIFIER_DIRECTION_LEFT) {
+ g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
/* If flick event upon space key was detected, perform a language change and don't proceed anymore */
_language_manager.select_previous_language();
g_keyboard_state.disable_force_latin = TRUE;
ret = SCL_EVENT_DONE;
}
if (event_desc.key_modifier == KEY_MODIFIER_DIRECTION_RIGHT) {
+ g_core.send_imengine_event(-1, cur_keyboard_ise_uuid, ISE_DEFAULT_FLUSH_EVENT_CMD, 0);
/* If flick event upon space key was detected, perform a language change and don't proceed anymore */
_language_manager.select_next_language();
g_keyboard_state.disable_force_latin = TRUE;
return ret;
}
-static inline int get_lang_id(const sclchar* language) {
+static inline int get_lang_id(const sclchar* language)
+{
if (language == NULL) return -1;
for (int loop = 0;loop < get_lang_table_size();loop++) {