From 15f161d5425435416cb4b27dbe46b9f157972c88 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 20 Apr 2015 15:31:41 -0400 Subject: [PATCH] swap key -> keyname when attempting to bind lparen/rparen keys this is impossible to grab on X, so ensure the generated binding is usable fix T2059 --- src/modules/conf_bindings/e_int_config_keybindings.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/conf_bindings/e_int_config_keybindings.c b/src/modules/conf_bindings/e_int_config_keybindings.c index b2a837ee1..abe50b614 100644 --- a/src/modules/conf_bindings/e_int_config_keybindings.c +++ b/src/modules/conf_bindings/e_int_config_keybindings.c @@ -860,6 +860,7 @@ _grab_key_down_cb(void *data, const Eina_List *l = NULL; unsigned int mod = E_BINDING_MODIFIER_NONE; unsigned int n, found = 0; + const char *key = ev->key; if (!e_bindings_key_allowed(ev->key)) return ECORE_CALLBACK_PASS_ON; @@ -873,6 +874,10 @@ _grab_key_down_cb(void *data, if (ev->modifiers & ECORE_EVENT_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN; + /* swap for un-shifted key; binding '(' or ')' is impossible */ + if ((ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) && + (eina_streq(ev->key, "parenleft") || eina_streq(ev->key, "parenright"))) + ev->key = ev->keyname; if (cfdata->locals.add) found = !!e_util_binding_match(cfdata->binding.key, ev, &n, NULL); else if (cfdata->locals.cur && cfdata->locals.cur[0]) @@ -988,6 +993,7 @@ _grab_key_down_cb(void *data, e_widget_ilist_selected_set(cfdata->gui.o_binding_list, n); } e_object_del(E_OBJECT(cfdata->locals.eg)); + ev->key = key; } return ECORE_CALLBACK_PASS_ON; }