{
Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event_info;
LOGD ("[evas key down] keyname : '%s', key : '%s', string : '%s', compose : '%s'\n", ev->keyname, ev->key, ev->string, ev->compose);
+ LOGD ("[evas key down] capslock : %d, num lock : %d\n", evas_key_lock_is_set(ev->locks, "Caps_Lock"), evas_key_lock_is_set(ev->locks, "Num_Lock"));
}
static void
{
Evas_Event_Key_Up *ev = (Evas_Event_Key_Up *)event_info;
LOGD ("[evas key up] keyname : '%s', key : '%s', string : '%s', compose : '%s'\n", ev->keyname, ev->key, ev->string, ev->compose);
+ LOGD ("[evas key up] capslock : %d, num lock : %d\n", evas_key_lock_is_set(ev->locks, "Caps_Lock"), evas_key_lock_is_set(ev->locks, "Num_Lock"));
}
#ifndef WAYLAND
#define WAIT_FOR_FILTER_DONE_SECOND 2
#define MOD_SHIFT_MASK 0x01
-#define MOD_ALT_MASK 0x02
+#define MOD_CAPS_MASK 0x02
#define MOD_CONTROL_MASK 0x04
+#define MOD_ALT_MASK 0x08
+#define MOD_NUM_MASK 0x80
#define MOD_Mod5_MASK 0x80
static Eina_Bool _clear_hide_timer();
xkb_mod_mask_t control_mask;
xkb_mod_mask_t alt_mask;
xkb_mod_mask_t shift_mask;
+ xkb_mod_mask_t caps_mask;
+ xkb_mod_mask_t num_mask;
uint32_t serial;
uint32_t content_purpose;
imcontext->shift_mask = modifiers_get_mask(map, "Shift");
imcontext->control_mask = modifiers_get_mask(map, "Control");
imcontext->alt_mask = modifiers_get_mask(map, "Mod1");
+ imcontext->caps_mask = modifiers_get_mask(map, "Lock");
+ imcontext->num_mask = modifiers_get_mask(map, "Mod2");
}
static void
if (modifiers & MOD_Mod5_MASK)
e->modifiers |= MOD_Mod5_MASK;
+ if (modifiers & imcontext->caps_mask)
+ e->modifiers |= ECORE_EVENT_LOCK_CAPS;
+
+ if (modifiers & imcontext->num_mask)
+ e->modifiers |= ECORE_EVENT_LOCK_NUM;
+
//Save "wl_text_input::keysym" keysym to list if list is not empty,
//if not, send keysym to ecore loop as key event.
//This code let key event which will be filtered by IME one by one.
imcontext->ctx = ctx;
imcontext->input_panel_layout = ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL;
imcontext->keysym_list = NULL;
+
imcontext->shift_mask = MOD_SHIFT_MASK;
imcontext->control_mask = MOD_CONTROL_MASK;
imcontext->alt_mask = MOD_ALT_MASK;
+ imcontext->caps_mask = MOD_CAPS_MASK;
+ imcontext->num_mask = MOD_NUM_MASK;
imcontext->text_input =
wl_text_input_manager_create_text_input(imcontext->text_input_manager);
modifiers |= imcontext->control_mask;
if (ecore_key_ev.modifiers & ECORE_EVENT_MODIFIER_ALT)
modifiers |= imcontext->alt_mask;
+ if (ecore_key_ev.modifiers & ECORE_EVENT_LOCK_CAPS)
+ modifiers |= imcontext->caps_mask;
+ if (ecore_key_ev.modifiers & ECORE_EVENT_LOCK_NUM)
+ modifiers |= imcontext->num_mask;
- LOGD ("ev:modifiers=%d, modifiers=%d, shift_mask=%d, control_mask=%d, alt_mask=%d", ecore_key_ev.modifiers, modifiers, imcontext->shift_mask, imcontext->control_mask, imcontext->alt_mask);
+ SECURE_LOGD ("ev:modifiers=0x%x, modifiers=0x%x, shift_mask=0x%x, control_mask=0x%0x, alt_mask=0x%x, caps_mask=0x%x, num_mask=0x%x", ecore_key_ev.modifiers, modifiers, imcontext->shift_mask, imcontext->control_mask, imcontext->alt_mask, imcontext->caps_mask, imcontext->num_mask);
//Send key event to IME.
wl_text_input_filter_key_event(imcontext->text_input, serial, ecore_key_ev.timestamp, ecore_key_ev.key,
type == ECORE_IMF_EVENT_KEY_UP? WL_KEYBOARD_KEY_STATE_RELEASED : WL_KEYBOARD_KEY_STATE_PRESSED,
#define WAYLAND_MODULE_CLIENT_ID (0)
#define MOD_SHIFT_MASK 0x01
-#define MOD_ALT_MASK 0x02
+#define MOD_CAPS_MASK 0x02
#define MOD_CONTROL_MASK 0x04
+#define MOD_ALT_MASK 0x08
+#define MOD_NUM_MASK 0x80
#define MOD_Mod5_MASK 0x80
//////////////////////////////wayland_panel_agent_module begin//////////////////////////////////////////////////
if (modifiers & MOD_CONTROL_MASK)
key.mask |= SCIM_KEY_ControlMask;
+ if (modifiers & MOD_CAPS_MASK)
+ key.mask |= SCIM_KEY_CapsLockMask;
+ if (modifiers & MOD_NUM_MASK)
+ key.mask |= SCIM_KEY_NumLockMask;
+
if (!press) {
key.mask |= SCIM_KEY_ReleaseMask;
} else {