imf_event->locks = _ecore_key_modifiers_to_ecore_imf_locks(ecore_event->modifiers);
}
+static Eina_Bool check_nograb_backkey()
+{
+ char *nograb_backkey = getenv ("ISF_KEY_NOGRAB_BACKKEY");
+ if (nograb_backkey) {
+ if (atoi (nograb_backkey) != 0)
+ return EINA_TRUE; /* the event is kept */
+ }
+
+ return EINA_FALSE;
+}
+
static Eina_Bool
key_down_filter_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
if (!active_ctx) return EINA_TRUE; /* the event is kept */
+ if (check_nograb_backkey()) 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) &&
check_hide_key(ev->keyname)) {
if (!active_ctx) return EINA_TRUE; /* the event is kept */
+ if (check_nograb_backkey()) 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; /* the event is kept */