Refactor binding accessor

Change the primary binding accessor to `get_binding_from_xcb_event`.

This function gets a binding from a generic xcb event of type KeyPress,
KeyRelease, ButtonPress, or ButtonRelease by determining the input type
(keyboard or mouse), the modifiers pressed from the filtered event
`state`, managing the proper fall back in case mode switch is enabled,
and finally querying the bindings for a binding that matches the event.

The logic of querying keyboard bindings is not intended to be altered by
this change.

The general accessor has been slightly modified to work with mouse
bindings and made private because it is only used in bindings.c
This commit is contained in:
Tony Crisci
2014-05-02 10:22:40 -04:00
committed by Michael Stapelberg
parent c3d46c9145
commit 5fc1b5d02d
4 changed files with 91 additions and 64 deletions

View File

@ -31,11 +31,11 @@ Binding *configure_binding(const char *bindtype, const char *modifiers, const ch
void grab_all_keys(xcb_connection_t *conn, bool bind_mode_switch);
/**
* Returns a pointer to the keyboard Binding with the specified modifiers and
* keycode or NULL if no such binding exists.
* Returns a pointer to the Binding that matches the given xcb event or NULL if
* no such binding exists.
*
*/
Binding *get_keyboard_binding(uint16_t modifiers, bool key_release, xcb_keycode_t keycode);
Binding *get_binding_from_xcb_event(xcb_generic_event_t *event);
/**
* Translates keysymbols to keycodes for all bindings which use keysyms.