summaryrefslogtreecommitdiff
path: root/dmenu-wl.c
diff options
context:
space:
mode:
Diffstat (limited to 'dmenu-wl.c')
-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);
}
}