From 21f42a86d7be1046a7ddc99487ab98d41fef2c8f Mon Sep 17 00:00:00 2001 From: "Devin J. Pohly" Date: Sat, 11 Apr 2020 19:41:32 -0500 Subject: make key mappings configurable in config.h --- dwl.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'dwl.c') diff --git a/dwl.c b/dwl.c index a66d98d..24eeca3 100644 --- a/dwl.c +++ b/dwl.c @@ -26,6 +26,8 @@ #include #include +#define LENGTH(X) (sizeof X / sizeof X[0]) + /* For brevity's sake, struct members are annotated where they are used. */ enum dwl_cursor_mode { DWL_CURSOR_PASSTHROUGH, @@ -193,17 +195,14 @@ static bool handle_keybinding(struct dwl_server *server, uint32_t mods, xkb_keys * processing keys, rather than passing them on to the client for its own * processing. */ - switch (sym) { - case XKB_KEY_Escape: - quit(server, NULL); - break; - case XKB_KEY_F1: - focusnext(server, NULL); - break; - default: - return false; + bool handled = false; + for (int i = 0; i < LENGTH(keys); i++) { + if (sym == keys[i].keysym && mods == keys[i].mod && keys[i].func) { + keys[i].func(server, &keys[i].arg); + handled = true; + } } - return true; + return handled; } static void keyboard_handle_key( -- cgit v1.2.3