diff --git a/src/simpgmspace.cpp b/src/simpgmspace.cpp index 86bc398e9..ec8a3e5ae 100644 --- a/src/simpgmspace.cpp +++ b/src/simpgmspace.cpp @@ -85,11 +85,8 @@ sem_t *eeprom_write_sem; pin |= mask; \ break; #define KEY_CASE(key, pin, mask) \ - case -1-key: \ - pin |= mask; \ - break; \ - case 1+key: \ - pin &= ~mask; \ + case key: \ + if (state) pin &= ~mask; else pin |= mask;\ break; #else #define SWITCH_CASE(swtch, pin, mask) \ @@ -100,15 +97,12 @@ sem_t *eeprom_write_sem; pin |= mask; \ break; #define KEY_CASE(key, pin, mask) \ - case 1+key: \ - pin |= mask; \ - break; \ - case -1-key: \ - pin &= ~mask; \ + case key: \ + if (state) pin |= mask; else pin &= ~mask;\ break; #endif -void simuSetKey(int8_t key) +void simuSetKey(uint8_t key, bool state) { switch (key) { KEY_CASE(KEY_MENU, GPIO_BUTTON_MENU, PIN_BUTTON_MENU) diff --git a/src/simpgmspace.h b/src/simpgmspace.h index bd622a730..20035cad1 100644 --- a/src/simpgmspace.h +++ b/src/simpgmspace.h @@ -312,7 +312,7 @@ extern uint8_t main_thread_running; #define SIMU_SLEEP(x) do { if (!main_thread_running) return; sleep(x/*ms*/); } while (0) -void simuSetKey(int8_t key); +void simuSetKey(uint8_t key, bool state); void simuSetSwitch(int8_t swtch); void StartMainThread(bool tests=true); diff --git a/src/simu.cpp b/src/simu.cpp index 7af2fc0fa..b900400f0 100644 --- a/src/simu.cpp +++ b/src/simu.cpp @@ -286,10 +286,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) #endif for (unsigned int i=0; igetKeyState(keys1[i])) - simuSetKey(1+keys1[i+1]); - else - simuSetKey(-1-keys1[i+1]); + simuSetKey(keys1[i+1], getApp()->getKeyState(keys1[i])); } #if defined(PCBACT)