Fix some keys no sent to telemetry screens handler (#7263)

Fix some keys no sent to telemetry screens handler
This commit is contained in:
3djc
2020-01-06 11:25:42 +01:00
committed by Bertrand Songis
parent 838bd2f6a0
commit abb1cd473b
2 changed files with 30 additions and 57 deletions
+30 -42
View File
@@ -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++) {
-15
View File
@@ -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