From 33a461e97be2e7389ac9ba8c73dffbc7b7a92e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Mon, 5 Apr 2021 19:54:41 +0300 Subject: [PATCH] [FL-1100] Input dump: Handle all input events and dump them to console (#401) --- applications/examples/input_dump.c | 61 +++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/applications/examples/input_dump.c b/applications/examples/input_dump.c index 9644f7464..0a81a573d 100644 --- a/applications/examples/input_dump.c +++ b/applications/examples/input_dump.c @@ -23,6 +23,42 @@ void input_dump_input_callback(InputEvent* input_event, void* ctx) { osMessageQueuePut(event_queue, &event, 0, 0); } +static const char* input_dump_get_key_name(InputKey key) { + switch(key) { + case InputKeyOk: + return "Ok"; + case InputKeyBack: + return "Back"; + case InputKeyLeft: + return "Left"; + case InputKeyRight: + return "Right"; + case InputKeyUp: + return "Up"; + case InputKeyDown: + return "Down"; + default: + return "Unknown"; + } +} + +static const char* input_dump_get_type_name(InputType type) { + switch(type) { + case InputTypePress: + return "Press"; + case InputTypeRelease: + return "Release"; + case InputTypeShort: + return "Short"; + case InputTypeLong: + return "Long"; + case InputTypeRepeat: + return "Repeat"; + default: + return "Unknown"; + } +} + int32_t application_input_dump(void* p) { osMessageQueueId_t event_queue = osMessageQueueNew(8, sizeof(InputDumpEvent), NULL); @@ -36,23 +72,28 @@ int32_t application_input_dump(void* p) { Gui* gui = furi_record_open("gui"); gui_add_view_port(gui, view_port, GuiLayerFullscreen); - printf("Example app [input dump]\r\n"); + printf("[input_dump] waiting for input events\r\n"); InputDumpEvent event; while(1) { furi_check(osMessageQueueGet(event_queue, &event, NULL, osWaitForever) == osOK); - if(event.input.type == InputTypeLong && event.input.key == InputKeyBack) { - view_port_enabled_set(view_port, false); - gui_remove_view_port(gui, view_port); - view_port_free(view_port); - osMessageQueueDelete(event_queue); - return 0; - } else if(event.input.type == InputTypePress || event.input.type == InputTypeRelease) { - printf( - "event: %02x %s\r\n", event.input.key, event.input.type ? "pressed" : "released"); + printf( + "[input_dump] key: %s type: %s\r\n", + input_dump_get_key_name(event.input.key), + input_dump_get_type_name(event.input.type)); + + if(event.input.type == InputTypeLong && event.input.key == InputKeyBack) { + break; } } + printf("[input_dump] shutting down, byebye!\r\n"); + + view_port_enabled_set(view_port, false); + gui_remove_view_port(gui, view_port); + view_port_free(view_port); + osMessageQueueDelete(event_queue); + return 0; }