From 021ea4bba9a86d7d2826692ae8e3929f19882395 Mon Sep 17 00:00:00 2001 From: That-One-Nerd Date: Wed, 25 Jun 2025 21:59:33 -0400 Subject: [PATCH] Keys. Did barely anything this evening. --- src/main.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 886a044..9202ff5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include "main.h" @@ -40,6 +41,7 @@ int main(void) return 0; } +static const char* list_symbols = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int display_list(const list_item* list, const list_config& config) { size_t item_count = 0; @@ -52,12 +54,32 @@ int display_list(const list_item* list, const list_config& config) if (item_count == 0) return -1; // No list to display. uint8_t max_on_screen = MIN(config.end_row - config.start_row, 10 - config.start_row) + 1; - uint24_t offset = 0; + + uint24_t index = 0, + offset = 0; + +_render: for (size_t i = 0, j = offset; i < max_on_screen && j < item_count; i++, j++) { + // TODO: print prefix os_SetCursorPos(config.start_row + i, 0); os_PutStrLine(list[j].display_name); } + uint16_t key = os_GetKey(); + switch (key) + { + case k_Up: + if (index > 0) index--; + if (index <= offset) offset = index; + break; + + case k_Down: + if (index < item_count) index++; + if (index >= offset) offset = index; + break; + } + goto _render; + return -1; }