From 4f6ee2b6abed1de775dea65412fdc30fcffaea98 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Wed, 22 Mar 2023 21:16:37 +0100 Subject: add selection move --- dmenu-wl.c | 18 +++++++++++++++--- 1 file 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); } } -- cgit v1.2.3-70-g09d2