From: Jihoon Kim Date: Tue, 31 Dec 2013 09:07:36 +0000 (+0900) Subject: ibusimmodule: support CAPS LOCK and NUM LOCK X-Git-Tag: v1.9.0-alpha1~291 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6a5c7dc7a383245c0b29c80f1ba5c3527eed3183;p=platform%2Fupstream%2Fefl.git ibusimmodule: support CAPS LOCK and NUM LOCK When ibus immodule was used, caps lock and num lock had been not working. --- diff --git a/src/modules/ecore_imf/ibus/ibus_imcontext.c b/src/modules/ecore_imf/ibus/ibus_imcontext.c index 66b0df4..7d6ce8e 100644 --- a/src/modules/ecore_imf/ibus/ibus_imcontext.c +++ b/src/modules/ecore_imf/ibus/ibus_imcontext.c @@ -117,6 +117,22 @@ _ecore_imf_modifier_to_ibus_modifier(unsigned int modifier) return state; } +static unsigned int +_ecore_imf_locks_to_ibus_modifier(unsigned int locks) +{ + unsigned int state = 0; + + /**< "Num lock" is pressed */ + if (locks & ECORE_IMF_KEYBOARD_LOCK_NUM) + state |= IBUS_MOD2_MASK; + + /**< "Caps lock" is pressed */ + if (locks & ECORE_IMF_KEYBOARD_LOCK_CAPS) + state |= IBUS_LOCK_MASK; + + return state; +} + static void _ecore_imf_ibus_key_event_put(int keysym, int state) { @@ -297,7 +313,8 @@ ecore_imf_context_ibus_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type keycode = ecore_x_keysym_keycode_get(ev->key); keysym = XStringToKeysym(ev->key); - state = _ecore_imf_modifier_to_ibus_modifier(ev->modifiers) | IBUS_RELEASE_MASK; + state = _ecore_imf_modifier_to_ibus_modifier(ev->modifiers) | + _ecore_imf_locks_to_ibus_modifier(ev->locks) | IBUS_RELEASE_MASK; if (_sync_mode_use) { @@ -327,7 +344,9 @@ ecore_imf_context_ibus_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type keycode = ecore_x_keysym_keycode_get(ev->key); keysym = XStringToKeysym(ev->key); - state = _ecore_imf_modifier_to_ibus_modifier(ev->modifiers); + state = _ecore_imf_modifier_to_ibus_modifier(ev->modifiers) | + _ecore_imf_locks_to_ibus_modifier(ev->locks); + if (_sync_mode_use) { retval = ibus_input_context_process_key_event(ibusimcontext->ibuscontext,