]> git.sur5r.net Git - i3/i3/blob - src/key_press.c
Merge pull request #2112 from Airblader/feature-multiple-tree-render
[i3/i3] / src / key_press.c
1 #undef I3__FILE__
2 #define I3__FILE__ "key_press.c"
3 /*
4  * vim:ts=4:sw=4:expandtab
5  *
6  * i3 - an improved dynamic tiling window manager
7  * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
8  *
9  * key_press.c: key press handler
10  *
11  */
12 #include "all.h"
13
14 /*
15  * There was a KeyPress or KeyRelease (both events have the same fields). We
16  * compare this key code with our bindings table and pass the bound action to
17  * parse_command().
18  *
19  */
20 void handle_key_press(xcb_key_press_event_t *event) {
21     const bool key_release = (event->response_type == XCB_KEY_RELEASE);
22
23     last_timestamp = event->time;
24
25     DLOG("%s %d, state raw = 0x%x\n", (key_release ? "KeyRelease" : "KeyPress"), event->detail, event->state);
26
27     Binding *bind = get_binding_from_xcb_event((xcb_generic_event_t *)event);
28
29     /* if we couldn't find a binding, we are done */
30     if (bind == NULL)
31         return;
32
33     CommandResult *result = run_binding(bind, NULL);
34     command_result_free(result);
35 }