refactor keyboard to 1-count keys so that 0 can indicate no key
parent
fb540562b7
commit
5febbecb99
|
@ -19,10 +19,11 @@ row/col 0 1 2 3
|
|||
3 * 0 # D
|
||||
*/
|
||||
|
||||
const char *allKeys = "123A456B789C*0#D";
|
||||
const char *allKeys = " 123A456B789C*0#D";
|
||||
|
||||
const uint8_t digits[16] =
|
||||
{ 1, 2, 3, KEY_NONE,
|
||||
const uint8_t digits[17] =
|
||||
{ KEY_NONE,
|
||||
1, 2, 3, KEY_NONE,
|
||||
4, 5, 6, KEY_NONE,
|
||||
7, 8, 9, KEY_NONE,
|
||||
KEY_NONE, 0, KEY_NONE, KEY_NONE};
|
||||
|
@ -122,17 +123,15 @@ Key getPressedKey() {
|
|||
}
|
||||
|
||||
// return key
|
||||
return (rowPressed * 4) + colPressed;
|
||||
return (rowPressed * 4) + colPressed + 1;
|
||||
}
|
||||
|
||||
uint8_t getPressedDigit(Key key) {
|
||||
if (key == KEY_NONE) return KEY_NONE;
|
||||
return digits[key];
|
||||
}
|
||||
|
||||
Key handleDebugKeyboard(char key) {
|
||||
auto keyboardKey = handleKeyboard();
|
||||
if (keyboardKey != KEY_NONE) {
|
||||
if (auto keyboardKey = handleKeyboard()) {
|
||||
return keyboardKey;
|
||||
}
|
||||
|
||||
|
@ -146,37 +145,37 @@ Key handleDebugKeyboard(char key) {
|
|||
// Backspace -> #
|
||||
|
||||
if (key == '1') {
|
||||
return 0;
|
||||
} else if (key == '2') {
|
||||
return 1;
|
||||
} else if (key == '3') {
|
||||
} else if (key == '2') {
|
||||
return 2;
|
||||
} else if (key == 'a' || key == 'A') {
|
||||
} else if (key == '3') {
|
||||
return 3;
|
||||
} else if (key == '4') {
|
||||
} else if (key == 'a' || key == 'A') {
|
||||
return 4;
|
||||
} else if (key == '5') {
|
||||
} else if (key == '4') {
|
||||
return 5;
|
||||
} else if (key == '6') {
|
||||
} else if (key == '5') {
|
||||
return 6;
|
||||
} else if (key == 'b' || key == 'B') {
|
||||
} else if (key == '6') {
|
||||
return 7;
|
||||
} else if (key == '7') {
|
||||
} else if (key == 'b' || key == 'B') {
|
||||
return 8;
|
||||
} else if (key == '8') {
|
||||
} else if (key == '7') {
|
||||
return 9;
|
||||
} else if (key == '9') {
|
||||
} else if (key == '8') {
|
||||
return 10;
|
||||
} else if (key == 'c' || key == 'C') {
|
||||
} else if (key == '9') {
|
||||
return 11;
|
||||
} else if (key == '*' || key == '.') {
|
||||
} else if (key == 'c' || key == 'C') {
|
||||
return 12;
|
||||
} else if (key == '0') {
|
||||
} else if (key == '*' || key == '.') {
|
||||
return 13;
|
||||
} else if (key == '#' || (int) key == 8 /* Backspace */) {
|
||||
} else if (key == '0') {
|
||||
return 14;
|
||||
} else if (key == 'd' || key == 'D') {
|
||||
} else if (key == '#' || (int) key == 8 /* Backspace */) {
|
||||
return 15;
|
||||
} else if (key == 'd' || key == 'D') {
|
||||
return 16;
|
||||
}
|
||||
|
||||
return KEY_NONE;
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
#pragma once
|
||||
|
||||
/*
|
||||
Keys, in order:
|
||||
Keys, in order (counting from 1):
|
||||
123A 456B 789C *0#D
|
||||
|
||||
value 0 indicates no key
|
||||
*/
|
||||
typedef uint8_t Key;
|
||||
#define KEY_NONE 255
|
||||
#define KEY_A 3
|
||||
#define KEY_B 7
|
||||
#define KEY_C 11
|
||||
#define KEY_D 15
|
||||
#define KEY_ASTERISK 12
|
||||
#define KEY_HASH 14
|
||||
#define KEY_NONE 0
|
||||
#define KEY_A 4
|
||||
#define KEY_B 8
|
||||
#define KEY_C 12
|
||||
#define KEY_D 16
|
||||
#define KEY_ASTERISK 13
|
||||
#define KEY_HASH 15
|
||||
|
||||
extern const char *allKeys;
|
||||
|
||||
|
|
|
@ -84,8 +84,7 @@ void loop() {
|
|||
}
|
||||
}
|
||||
|
||||
auto key = handleDebugKeyboard(debugKey);
|
||||
if (key != KEY_NONE) {
|
||||
if (auto key = handleDebugKeyboard(debugKey)) {
|
||||
Serial.print("Key pressed: ");
|
||||
Serial.print(allKeys[key]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue