commit 21f42a86d7be1046a7ddc99487ab98d41fef2c8f
parent df1aaa4d159066f26ed4ff235fde9f60501c0618
Author: Devin J. Pohly <djpohly@gmail.com>
Date: Sat, 11 Apr 2020 19:41:32 -0500
make key mappings configurable in config.h
Diffstat:
| M | dwl.c | | | 19 | +++++++++---------- |
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/dwl.c b/dwl.c
@@ -26,6 +26,8 @@
#include <wlr/util/log.h>
#include <xkbcommon/xkbcommon.h>
+#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(