summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-03-22 21:16:37 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2023-03-22 21:16:37 +0100
commit4f6ee2b6abed1de775dea65412fdc30fcffaea98 (patch)
tree885bd70f93b1e0919a841bc78a1a5b40fb2f5311
parentbe8ab03c38ac94ea55507c26a88f7c716b3c461d (diff)
add selection move
-rw-r--r--dmenu-wl.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/dmenu-wl.c b/dmenu-wl.c
index 764d709..1fb7ef4 100644
--- a/dmenu-wl.c
+++ b/dmenu-wl.c
@@ -415,6 +415,18 @@ handle_keyboard_event()
if (client.keys.state == WL_KEYBOARD_KEY_STATE_PRESSED) {
switch (client.keys.sym) {
+ case XKB_KEY_Down:
+ if (options.selection->next_match)
+ options.selection = options.selection->next_match;
+ break;
+ case XKB_KEY_Up:
+ if (options.selection->previous_match)
+ options.selection = options.selection->previous_match;
+ break;
+ case XKB_KEY_Left:
+ break;
+ case XKB_KEY_Right:
+ break;
case XKB_KEY_KP_Enter: /* fallthrough */
case XKB_KEY_Return:
fputs(options.selection ? options.selection->name: input_field, stdout);
@@ -424,9 +436,8 @@ handle_keyboard_event()
running = 0;
break;
case XKB_KEY_Tab:
- if (options.selection) {
+ if (options.selection)
strncpy(input_field, options.selection->name, MAX_LINE_LENGTH);
- }
break;
case XKB_KEY_BackSpace:
if (strlen(input_field))
@@ -442,7 +453,8 @@ handle_keyboard_event()
}
if (running) {
- generate_matches();
+ if (genmatch)
+ generate_matches();
draw_dmenu(active_monitor);
}
}