1
0
forked from me/IronOS

Compare commits

...

1 Commits

Author SHA1 Message Date
Ben V. Brown
c8f49d173a Add key auto-repeat 2017-07-12 22:18:13 +10:00
2 changed files with 10 additions and 6 deletions

View File

@@ -26,9 +26,9 @@ inline void resetLastButtonPress() {
} }
inline void resetButtons() { inline void resetButtons() {
lastKeyPress = millis();
keyState = 0; keyState = 0;
} }
inline uint32_t getLastMovement() { inline uint32_t getLastMovement() {
return lastMovement; return lastMovement;
} }
@@ -39,7 +39,10 @@ inline uint16_t getButtons() {
inline uint16_t getRawButtons() { inline uint16_t getRawButtons() {
return rawKeys; return rawKeys;
} }
inline void restoreButtons()
{
keyState=getRawButtons();
}
/*IRQ prototypes*/ /*IRQ prototypes*/
void NMI_Handler(void); void NMI_Handler(void);

View File

@@ -22,13 +22,14 @@ uint32_t temporaryTempStorage = 0;
void ProcessUI() { void ProcessUI() {
uint8_t Buttons = getButtons(); //read the buttons status uint8_t Buttons = getButtons(); //read the buttons status
static uint32_t lastModeChange = 0; static uint32_t lastModeChange = 0;
if (millis() - getLastButtonPress() < 30) if (getRawButtons() && ((millis() - getLastButtonPress()) > 1000)) {
lastKeyPress = millis() - 600;
Buttons = getRawButtons();
} else if (millis() - getLastButtonPress() < 80) {
Buttons = 0; Buttons = 0;
else if (Buttons != 0) { } else if (Buttons != 0) {
resetLastButtonPress();
resetButtons(); resetButtons();
} }
//rough prevention for de-bouncing and allocates settling time
switch (operatingMode) { switch (operatingMode) {
case STARTUP: case STARTUP: