#endif
static Eina_Bool
-key_down_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
+key_down_filter_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
- if (!ev || !ev->keyname) return EINA_TRUE;
+ if (!ev || !ev->keyname) return EINA_TRUE; /* the event is kept */
Ecore_IMF_Context *active_ctx = get_using_ctx ();
- if (!active_ctx) return EINA_TRUE;
+ if (!active_ctx) return EINA_TRUE; /* the event is kept */
if ((_input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW ||
_input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW) &&
LOGD ("%s key is pressed.\n", ev->keyname);
#ifdef ENABLE_HIDE_PANEL_KEY
- return EINA_FALSE;
+ return EINA_FALSE; /* the event is removed from the queue */
#else
Ecore_IMF_Event_Key_Down imf_event;
_ecore_event_to_ecore_imf_key_down_event(ev, &imf_event);
- if (ecore_imf_context_filter_event(active_ctx, ECORE_IMF_EVENT_KEY_DOWN, (Ecore_IMF_Event *)&imf_event)) {
- return EINA_FALSE;
+ Eina_Bool filter_ret = ecore_imf_context_filter_event(active_ctx, ECORE_IMF_EVENT_KEY_DOWN, (Ecore_IMF_Event *)&imf_event);
+ LOGD ("%s key is pressed. ret : %d\n", ev->keyname, filter_ret);
+ if (filter_ret) {
+ return EINA_FALSE; /* the event is removed from the queue */
}
- return EINA_TRUE;
-#endif
+#ifdef _TV
+ return EINA_TRUE; /* the event is kept */
+#else
+ return EINA_FALSE; /* the event is removed from the queue */
+#endif /* _TV */
+#endif /* ENABLE_HIDE_PANEL_KEY */
}
- return EINA_TRUE;
+ return EINA_TRUE; /* the event is kept */
}
static Eina_Bool
-key_up_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
+key_up_filter_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
- if (!ev || !ev->keyname) return EINA_TRUE;
+ if (!ev || !ev->keyname) return EINA_TRUE; /* the event is kept */
Ecore_IMF_Context *active_ctx = get_using_ctx ();
- if (!active_ctx) return EINA_TRUE;
+ if (!active_ctx) return EINA_TRUE; /* the event is kept */
if (_input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_HIDE ||
!check_hide_key(ev->keyname))
- return EINA_TRUE;
+ return EINA_TRUE; /* the event is kept */
LOGD ("%s key is released.\n", ev->keyname);
ecore_imf_context_reset(active_ctx);
_input_panel_hide(active_ctx, EINA_TRUE);
- return EINA_FALSE;
+ return EINA_FALSE; /* the event is removed from the queue */
#else
Ecore_IMF_Event_Key_Up imf_event;
_ecore_event_to_ecore_imf_key_up_event(ev, &imf_event);
- if (ecore_imf_context_filter_event(active_ctx, ECORE_IMF_EVENT_KEY_UP, (Ecore_IMF_Event *)&imf_event)) {
- return EINA_FALSE;
+ Eina_Bool filter_ret = ecore_imf_context_filter_event(active_ctx, ECORE_IMF_EVENT_KEY_UP, (Ecore_IMF_Event *)&imf_event);
+ LOGD ("%s key is released. ret : %d\n", ev->keyname, filter_ret);
+ if (filter_ret) {
+ return EINA_FALSE; /* the event is removed from the queue */
}
else {
ecore_imf_context_reset(active_ctx);
- return EINA_TRUE;
+#ifdef _TV
+ return EINA_TRUE; /* the event is kept */
+#else
+ _input_panel_hide(active_ctx, EINA_TRUE);
+
+ return EINA_FALSE; /* the event is removed from the queue */
+#endif /* _TV */
}
-#endif
+#endif /* ENABLE_HIDE_PANEL_KEY */
}
#ifdef _WEARABLE
_ecore_event_filter_cb(void *data, void *loop_data EINA_UNUSED, int type, void *event)
{
if (type == ECORE_EVENT_KEY_DOWN) {
- return key_down_cb(data, type, event);
+ return key_down_filter_cb(data, type, event);
}
else if (type == ECORE_EVENT_KEY_UP) {
- return key_up_cb(data, type, event);
+ return key_up_filter_cb(data, type, event);
}
#ifdef _WEARABLE
/* The IME needs to process Rotary event prior to client application */
MessageItemProcessKeyEvent *subclass = static_cast<MessageItemProcessKeyEvent*>(message);
uint32 ret = 0;
m_impl->signal_process_key_event(this, subclass->get_key_ref(), ret);
- if (ret == 0)
- if (!m_impl->si.null ())
- {
- ret = m_impl->si->process_key_event (subclass->get_key_ref());
- LOGD("imengine(%s) process key %d return %d", m_impl->si->get_factory_uuid().c_str(),
- subclass->get_key_ref().code, ret);
+ if (ret == 0) {
+ if (!m_impl->si.null ()) {
+ if (!(subclass->get_key_ref().get_key_string().compare("KeyRelease+XF86Back") == 0 ||
+ subclass->get_key_ref().get_key_string().compare("XF86Back") == 0)) {
+ ret = m_impl->si->process_key_event (subclass->get_key_ref());
+ LOGD("imengine(%s) process key %d return %d", m_impl->si->get_factory_uuid().c_str(),
+ subclass->get_key_ref().code, ret);
+ }
}
+ }
m_impl->process_key_event_done (subclass->get_key_ref(), ret, subclass->get_serial_ref());
break;
}