From 5f8ddf88e43492d4df4f8bf85f912332d6466c48 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 4 Sep 2012 10:39:40 +0000 Subject: [PATCH] DBLKEYS again --- src/board_ersky9x.h | 8 ++++---- src/menus.cpp | 40 ++++++++++++++++++++-------------------- src/open9x.h | 12 ++++++------ 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/board_ersky9x.h b/src/board_ersky9x.h index 7b3f9390c..bc087294a 100644 --- a/src/board_ersky9x.h +++ b/src/board_ersky9x.h @@ -80,9 +80,9 @@ extern uint8_t maxTemperature ; // Raw temp reading extern uint32_t read_keys(); #define KEYS_PRESSED() (~read_keys()) -#define DBLKEYS_PRESSED_RGT_LFT(i) (in & (0x20 + 0x40)) -#define DBLKEYS_PRESSED_UP_DWN(i) (in & (0x10 + 0x08)) -#define DBLKEYS_PRESSED_RGT_UP(i) (in & (0x20 + 0x10)) -#define DBLKEYS_PRESSED_LFT_DWN(i) (in & (0x40 + 0x08)) +#define DBLKEYS_PRESSED_RGT_LFT(i) ((in & (0x20 + 0x40)) == (0x20 + 0x40)) +#define DBLKEYS_PRESSED_UP_DWN(i) ((in & (0x10 + 0x08)) == (0x10 + 0x08)) +#define DBLKEYS_PRESSED_RGT_UP(i) ((in & (0x20 + 0x10)) == (0x20 + 0x10)) +#define DBLKEYS_PRESSED_LFT_DWN(i) ((in & (0x40 + 0x08)) == (0x40 + 0x08)) #endif diff --git a/src/menus.cpp b/src/menus.cpp index 227a7de0d..dda0ab943 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -75,27 +75,27 @@ int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, ui #if defined(DBLKEYS) uint8_t in = KEYS_PRESSED(); - if (DBLKEYS_PRESSED_RGT_LFT(in)) { - newval = -val; - killEvents(KEY_LEFT); - killEvents(KEY_RIGHT); + if ((event&EVT_KEY_MASK) && s_editMode) { + bool dblkey = true; + if (DBLKEYS_PRESSED_RGT_LFT(in)) + newval = -val; + else if (DBLKEYS_PRESSED_RGT_UP(in)) + newval = (i_max > 100 ? 100 : i_max); + else if (DBLKEYS_PRESSED_LFT_DWN(in)) + newval = (i_min < -100 ? -100 : i_min); + else if (DBLKEYS_PRESSED_UP_DWN(in)) + newval = 0; + else + dblkey = false; + + if (dblkey) { + killEvents(KEY_UP); + killEvents(KEY_DOWN); + killEvents(KEY_RIGHT); + killEvents(KEY_LEFT); + event = 0; + } } - else if (s_editMode && DBLKEYS_PRESSED_RGT_UP(in)) { - newval = (i_max > 100 ? 100 : i_max); - killEvents(KEY_RIGHT); - killEvents(KEY_UP); - } - else if (s_editMode && DBLKEYS_PRESSED_LFT_DWN(in)) { - newval = (i_min < -100 ? -100 : i_min); - killEvents(KEY_LEFT); - killEvents(KEY_DOWN); - } - else if (s_editMode && DBLKEYS_PRESSED_UP_DWN(in)) { - newval = 0; - killEvents(KEY_UP); - killEvents(KEY_DOWN); - } - else #endif if (event==EVT_KEY_FIRST(KEY_RIGHT) || event==EVT_KEY_REPT(KEY_RIGHT) || (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP)))) { diff --git a/src/open9x.h b/src/open9x.h index c02ede732..207586415 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -253,10 +253,10 @@ inline uint8_t KEYS_PRESSED() return in; } -#define DBLKEYS_PRESSED_RGT_LFT(i) (in & ((1<