From 2a3e66a7641d8ca93fef3687772c6f32055102b0 Mon Sep 17 00:00:00 2001 From: "Eduardo Lima (Etrunko)" Date: Fri, 1 Apr 2016 12:14:48 -0300 Subject: [PATCH] Ignore case in key event If a new accelerator that involves the shift + another key (such as "A") is added, key press event will never match that accelerator, because the key value will be the one corresponding capital letter, while the stored value will be the lowercase letter, as a result of the call to gkt_accelerator_parse(). Signed-off-by: Eduardo Lima (Etrunko) --- src/fe-gtk/fkeys.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/fe-gtk/fkeys.c b/src/fe-gtk/fkeys.c index dc4b41bc..fa60bdf2 100644 --- a/src/fe-gtk/fkeys.c +++ b/src/fe-gtk/fkeys.c @@ -305,6 +305,7 @@ key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess) struct key_binding *kb; int n; GSList *list; + guint upper, lower; /* where did this event come from? */ list = sess_list; @@ -333,9 +334,12 @@ key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess) list = keybind_list; while (list) { + upper = lower = 0; + gdk_keyval_convert_case(evt->keyval, &upper, &lower); kb = (struct key_binding*)list->data; - if (kb->keyval == evt->keyval && kb->mod == key_modifier_get_valid (evt->state)) + if ((kb->keyval == evt->keyval || kb->keyval == upper || kb->keyval == lower) && + kb->mod == key_modifier_get_valid (evt->state)) { if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) return 0;