From 784f7000f29498e6c111afa78a53950989ee94b6 Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Wed, 5 Nov 2025 20:15:24 -0500 Subject: more keybinds and fixes --- keybind.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'keybind.c') diff --git a/keybind.c b/keybind.c index ec10c58..0a23e5d 100644 --- a/keybind.c +++ b/keybind.c @@ -56,6 +56,24 @@ key_repeat_t select_previous(client_state* state) { return KEY_REPEAT; } +key_repeat_t select_first(client_state* state) { + if (state->selected_filtered_item != -1) { + state->selected_filtered_item = 0; + rect_t prompt, input, options; + calculate_layout(state, &prompt, &input, &options, true, false); + } + return KEY_NO_REPEAT; +} + +key_repeat_t select_last(client_state* state) { + if (state->selected_filtered_item != -1) { + state->selected_filtered_item = array_size(state->filtered_items) - 1; + rect_t prompt, input, options; + calculate_layout(state, &prompt, &input, &options, true, false); + } + return KEY_NO_REPEAT; +} + key_repeat_t goto_end(client_state* state) { state->cursor_index = array_size(state->input_buffer); return KEY_NO_REPEAT; @@ -66,6 +84,16 @@ key_repeat_t goto_start(client_state* state) { return KEY_NO_REPEAT; } +key_repeat_t forward_char_or_select_next(client_state* state) { + if (state->cursor_index < array_size(state->input_buffer)) return forward_char(state); + else return select_next(state); +} + +key_repeat_t backward_char_or_select_previous(client_state* state) { + if (state->cursor_index > 0) return backward_char(state); + else return select_previous(state); +} + key_repeat_t forward_char(client_state* state) { if (state->cursor_index < array_size(state->input_buffer)) { state->cursor_index++; -- cgit v1.2.3