From 998cc7ba6c8838a5d67aedce9f9ee96316aaebab Mon Sep 17 00:00:00 2001 From: Jacopo De Simoi Date: Fri, 26 Dec 2014 11:34:54 -0500 Subject: [PATCH] Be more lenient with compose+shift --- xcape.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/xcape.c b/xcape.c index 12f48c6..be3288f 100644 --- a/xcape.c +++ b/xcape.c @@ -403,21 +403,32 @@ void intercept (XPointer user_data, XRecordInterceptData *data) || (km->UseKeyCode == True && key_code == km->from_kc)) { - handle_key (self, km, mouse_pressed, key_event); - } - else if (km->pressed - && (key_event == KeyPress || key_event == ButtonPress)) - { - km->used = True; + if ((km->UseKeyCode == False + && XkbKeycodeToKeysym (self->ctrl_conn, key_code, 0, 0) + == km->from_ks) + || (km->UseKeyCode == True + && key_code == km->from_kc)) + { + handle_key (self, km, mouse_pressed, key_event); + } + else if (km->pressed && (key_event == KeyPress || key_event == ButtonPress)) + { + /* We should check if the pressed key is a modifier before marking the key as used. */ + if (key_code != 50) /* hack; try if it works */ + { + km->used = True; + } + } } } } exit: - XUnlockDisplay (self->ctrl_conn); + XUnlockDisplay (self->ctrl_conn); XRecordFreeData (data); } + KeyMap_t *parse_token (Display *dpy, char *token, Bool debug) { KeyMap_t *km = NULL;