From abb1cd473bbba40925b45ca3296efe5c6afa9112 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 6 Jan 2020 11:25:42 +0100 Subject: [PATCH] Fix some keys no sent to telemetry screens handler (#7263) Fix some keys no sent to telemetry screens handler --- radio/src/gui/128x64/view_telemetry.cpp | 72 +++++++++++-------------- radio/src/main.cpp | 15 ------ 2 files changed, 30 insertions(+), 57 deletions(-) diff --git a/radio/src/gui/128x64/view_telemetry.cpp b/radio/src/gui/128x64/view_telemetry.cpp index 84a0cbf77..f6d5d7301 100644 --- a/radio/src/gui/128x64/view_telemetry.cpp +++ b/radio/src/gui/128x64/view_telemetry.cpp @@ -216,58 +216,46 @@ enum NavigationDirection { #define incrTelemetryScreen() direction = down #if defined(NAVIGATION_XLITE) -#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_LEFT) -#define EVT_KEY_NEXT_VIEW EVT_KEY_LONG(KEY_RIGHT) + #define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && IS_SHIFT_PRESSED()) + #define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && IS_SHIFT_PRESSED()) #elif defined(NAVIGATION_X7) -#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE) -#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE) + #define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_PAGE)) + #define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGE)) +#elif defined(NAVIGATION_9X) + #define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_UP)) + #define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_DOWN)) #else -#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_FIRST(KEY_UP) -#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_DOWN) + #define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_UP)) + #define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_DOWN)) #endif void menuViewTelemetryFrsky(event_t event) { enum NavigationDirection direction = none; - switch (event) { - case EVT_KEY_FIRST(KEY_EXIT): + if (event == EVT_KEY_FIRST(KEY_EXIT) && TELEMETRY_SCREEN_TYPE(s_frsky_view) != TELEMETRY_SCREEN_TYPE_SCRIPT) { + killEvents(event); + chainMenu(menuMainView); + } #if defined(LUA) - case EVT_KEY_LONG(KEY_EXIT): + else if (event == EVT_KEY_LONG(KEY_EXIT)) { + killEvents(event); + chainMenu(menuMainView); + } #endif - killEvents(event); - chainMenu(menuMainView); - break; - - case EVT_KEY_PREVIOUS_VIEW: -#if defined(PCBXLITE) - if (IS_SHIFT_PRESSED()) { - decrTelemetryScreen(); - } -#else - if (IS_KEY_LONG(EVT_KEY_PREVIOUS_VIEW)) { - killEvents(event); - } - decrTelemetryScreen(); -#endif - break; - - case EVT_KEY_NEXT_VIEW: -#if defined(PCBXLITE) - if (IS_SHIFT_PRESSED()) { - incrTelemetryScreen(); - } -#else - incrTelemetryScreen(); -#endif - break; - - case EVT_KEY_LONG(KEY_ENTER): - killEvents(event); - POPUP_MENU_ADD_ITEM(STR_RESET_TELEMETRY); - POPUP_MENU_ADD_ITEM(STR_RESET_FLIGHT); - POPUP_MENU_START(onMainViewMenu); - break; + else if (EVT_KEY_PREVIOUS_VIEW(event)) { + killEvents(event); + decrTelemetryScreen(); + } + else if (EVT_KEY_NEXT_VIEW(event)) { + killEvents(event); + incrTelemetryScreen(); + } + else if (event == EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + POPUP_MENU_ADD_ITEM(STR_RESET_TELEMETRY); + POPUP_MENU_ADD_ITEM(STR_RESET_FLIGHT); + POPUP_MENU_START(onMainViewMenu); } for (int i=0; i<=TELEMETRY_SCREEN_TYPE_MAX; i++) { diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 3f5dbd1ab..3aee248ef 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -381,21 +381,6 @@ void handleGui(event_t event) { } else if (luaTask(event, RUN_TELEM_FG_SCRIPT, true)) { // the telemetry screen is active - // prevent events from keys MENU, UP, DOWN, ENT(short) and EXIT(short) from reaching the normal menus, - // so Lua telemetry script can fully use them - if (event) { - uint8_t key = EVT_KEY_MASK(event); -#if defined(PCBXLITE) - // SHIFT + LEFT/RIGHT LONG used to change telemetry screen on XLITE - if ((!IS_KEY_LONG(event) && key == KEY_RIGHT && IS_SHIFT_PRESSED()) || (!IS_KEY_LONG(event) && key == KEY_LEFT && IS_SHIFT_PRESSED()) || (!IS_KEY_LONG(event) && key == KEY_EXIT)) { -#else - // no need to filter out MENU and ENT(short), because they are not used by menuViewTelemetryFrsky() - if (key == KEY_PLUS || key == KEY_MINUS || (!IS_KEY_LONG(event) && key == KEY_EXIT)) { -#endif - // TRACE("Telemetry script event 0x%02x killed", event); - event = 0; - } - } menuHandlers[menuLevel](event); } else