refactor keyboard to 1-count keys so that 0 can indicate no key

main
radex 2024-02-21 21:07:44 +01:00
parent fb540562b7
commit 5febbecb99
Signed by: radex
SSH Key Fingerprint: SHA256:hvqRXAGG1h89yqnS+cyFTLKQbzjWD4uXIqw7Y+0ws30
3 changed files with 33 additions and 33 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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]);