|
|
|
@ -396,6 +396,12 @@ void intercept (XPointer user_data, XRecordInterceptData *data) |
|
|
|
mouse_pressed = False; |
|
|
|
mouse_pressed = False; |
|
|
|
} |
|
|
|
} |
|
|
|
for (km = self->map; km != NULL; km = km->next) |
|
|
|
for (km = self->map; km != NULL; km = km->next) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ((km->UseKeyCode == False |
|
|
|
|
|
|
|
&& XkbKeycodeToKeysym (self->ctrl_conn, key_code, 0, 0) |
|
|
|
|
|
|
|
== km->from_ks) |
|
|
|
|
|
|
|
|| (km->UseKeyCode == True |
|
|
|
|
|
|
|
&& key_code == km->from_kc)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ((km->UseKeyCode == False |
|
|
|
if ((km->UseKeyCode == False |
|
|
|
&& XkbKeycodeToKeysym (self->ctrl_conn, key_code, 0, 0) |
|
|
|
&& XkbKeycodeToKeysym (self->ctrl_conn, key_code, 0, 0) |
|
|
|
@ -405,19 +411,24 @@ void intercept (XPointer user_data, XRecordInterceptData *data) |
|
|
|
{ |
|
|
|
{ |
|
|
|
handle_key (self, km, mouse_pressed, key_event); |
|
|
|
handle_key (self, km, mouse_pressed, key_event); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (km->pressed |
|
|
|
else if (km->pressed && (key_event == KeyPress || key_event == ButtonPress)) |
|
|
|
&& (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; |
|
|
|
km->used = True; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
exit: |
|
|
|
exit: |
|
|
|
XUnlockDisplay (self->ctrl_conn); |
|
|
|
XUnlockDisplay (self->ctrl_conn); |
|
|
|
XRecordFreeData (data); |
|
|
|
XRecordFreeData (data); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KeyMap_t *parse_token (Display *dpy, char *token, Bool debug) |
|
|
|
KeyMap_t *parse_token (Display *dpy, char *token, Bool debug) |
|
|
|
{ |
|
|
|
{ |
|
|
|
KeyMap_t *km = NULL; |
|
|
|
KeyMap_t *km = NULL; |
|
|
|
|