diff options
Diffstat (limited to 'dmenu-wl.c')
| -rw-r--r-- | dmenu-wl.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -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); } } |