#define MOD_CAPS_MASK 0x02
#define MOD_CONTROL_MASK 0x04
#define MOD_ALT_MASK 0x08
+#define MOD_SUPER_MASK 0x20
#define MOD_NUM_MASK 0x100
#define MOD_Mod5_MASK 0x80
xkb_mod_mask_t shift_mask;
xkb_mod_mask_t caps_mask;
xkb_mod_mask_t num_mask;
+ xkb_mod_mask_t super_mask;
uint32_t serial;
uint32_t content_purpose;
imcontext->shift_mask = modifiers_get_mask(map, XKB_MOD_NAME_SHIFT);
imcontext->control_mask = modifiers_get_mask(map, XKB_MOD_NAME_CTRL);
imcontext->alt_mask = modifiers_get_mask(map, XKB_MOD_NAME_ALT);
+ imcontext->super_mask = modifiers_get_mask(map, XKB_MOD_NAME_LOGO);
imcontext->caps_mask = modifiers_get_mask(map, XKB_MOD_NAME_CAPS);
imcontext->num_mask = modifiers_get_mask(map, XKB_MOD_NAME_NUM);
}
if (modifiers & imcontext->alt_mask)
e->modifiers |= ECORE_EVENT_MODIFIER_ALT;
+ if (modifiers & imcontext->super_mask)
+ e->modifiers |= ECORE_EVENT_MODIFIER_WIN;
+
if (modifiers & MOD_Mod5_MASK)
e->modifiers |= MOD_Mod5_MASK;
imcontext->shift_mask = MOD_SHIFT_MASK;
imcontext->control_mask = MOD_CONTROL_MASK;
imcontext->alt_mask = MOD_ALT_MASK;
+ imcontext->super_mask = MOD_SUPER_MASK;
imcontext->caps_mask = MOD_CAPS_MASK;
imcontext->num_mask = MOD_NUM_MASK;
modifiers |= imcontext->control_mask;
if (ecore_key_ev.modifiers & ECORE_EVENT_MODIFIER_ALT)
modifiers |= imcontext->alt_mask;
+ if (ecore_key_ev.modifiers & ECORE_EVENT_MODIFIER_WIN)
+ modifiers |= imcontext->super_mask;
if (ecore_key_ev.modifiers & ECORE_EVENT_LOCK_CAPS)
modifiers |= imcontext->caps_mask;
if (ecore_key_ev.modifiers & ECORE_EVENT_LOCK_NUM)
g_last_key_event_serial = serial;
double start_time = ecore_time_get();
- 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, keycode=%u", ecore_key_ev.modifiers, modifiers, imcontext->shift_mask, imcontext->control_mask, imcontext->alt_mask, imcontext->caps_mask, imcontext->num_mask, ecore_key_ev.keycode);
+ SECURE_LOGD ("ev:modifiers=0x%x, modifiers=0x%x, shift_mask=0x%x, control_mask=0x%0x, alt_mask=0x%x, super_mask=0x%x, caps_mask=0x%x, num_mask=0x%x, keycode=%u", ecore_key_ev.modifiers, modifiers, imcontext->shift_mask, imcontext->control_mask, imcontext->alt_mask, imcontext->super_mask, imcontext->caps_mask, imcontext->num_mask, ecore_key_ev.keycode);
//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 MOD_CAPS_MASK 0x02
#define MOD_CONTROL_MASK 0x04
#define MOD_ALT_MASK 0x08
+#define MOD_SUPER_MASK 0x20
#define MOD_NUM_MASK 0x100
#define MOD_Mod5_MASK 0x80
1 << xkb_map_mod_get_index (wsc_ctx->keymap, "Mod1");
wsc_ctx->shift_mask =
1 << xkb_map_mod_get_index (wsc_ctx->keymap, "Shift");
+ wsc_ctx->super_mask =
+ 1 << xkb_map_mod_get_index (wsc_ctx->keymap, "Super");
LOGD ("create _keysym2keycode");
_init_keysym2keycode (wsc_ctx);
wsc_ctx->modifiers |= SCIM_KEY_AltMask;
if (mask & wsc_ctx->shift_mask)
wsc_ctx->modifiers |= SCIM_KEY_ShiftMask;
+ if (mask & wsc_ctx->super_mask)
+ wsc_ctx->modifiers |= SCIM_KEY_SuperMask;
wl_input_method_context_modifiers (context, serial,
mods_depressed, mods_depressed,
key.mask |= SCIM_KEY_AltMask;
if (modifiers & MOD_CONTROL_MASK)
key.mask |= SCIM_KEY_ControlMask;
+ if (modifiers & MOD_SUPER_MASK)
+ key.mask |= SCIM_KEY_SuperMask;
if (modifiers & MOD_CAPS_MASK)
key.mask |= SCIM_KEY_CapsLockMask;
modifiers |= MOD_ALT_MASK;
if (key.is_control_down ())
modifiers |= MOD_CONTROL_MASK;
+ if (key.is_super_down ())
+ modifiers |= MOD_SUPER_MASK;
_keyname_to_keysym (key.code, &modifiers);