Code cleanup

This commit is contained in:
Christoffer Martinsson 2023-06-05 11:34:56 +02:00
parent ad6359a2ad
commit 69fd50b6b7

View File

@ -10,13 +10,11 @@
#include <Arduino.h>
#include <Keypad.h>
const uint8_t USB_LED_NUM_LOCK = 0;
const uint8_t USB_LED_CAPS_LOCK = 1;
const uint8_t USB_LED_SCROLL_LOCK = 2;
const uint8_t USB_LED_CAPS_LOCK = 1; // Caps lock LED definition from HID spec
const uint16_t KEY_OFFSET = 0xAA00; // Offset to apply for not interfere with already defined keyboard keys
const uint16_t KEY_FN = 1 + KEY_OFFSET; // Function layer 1 button
const uint16_t KEY_WIN_LATCH = 2 + KEY_OFFSET; // Function layer 2 button
const uint16_t KEY_FN = 1 + KEY_OFFSET; // Function layer button reference
const uint16_t KEY_GUI_LATCH = 2 + KEY_OFFSET; // GUI latching (ex: Win) button reference
const uint8_t NBR_OF_BUTTONS = 42; // Number of buttons used (42 in this case)
@ -87,7 +85,7 @@ Button buttons[NBR_OF_BUTTONS] =
/* 5 */ {KEY_R, KEY_F4, KEY_F15, IDLE, NO_KEY, false},
/* 6 */ {KEY_T, KEY_F5, KEY_F16, IDLE, NO_KEY, false},
/* 7 */ {KEY_Y, KEY_F6, KEY_TILDE, IDLE, NO_KEY, false},
/* 8 */ {KEY_U, KEY_F7, KEY_WIN_LATCH, IDLE, NO_KEY, false},
/* 8 */ {KEY_U, KEY_F7, KEY_GUI_LATCH, IDLE, NO_KEY, false},
/* 9 */ {KEY_I, KEY_F8, KEY_LEFT_GUI, IDLE, NO_KEY, false},
/* 10 */ {KEY_O, KEY_F9, NO_KEY, IDLE, NO_KEY, false},
/* 11 */ {KEY_P, KEY_F10, KEY_CAPS_LOCK, IDLE, NO_KEY, false},
@ -146,7 +144,7 @@ uint8_t set_key(uint16_t keycode, uint8_t kstate)
{
if (keycode == NO_KEY || keycode == KEY_FN) return 0;
if (keycode == KEY_WIN_LATCH)
if (keycode == KEY_GUI_LATCH)
{
win_latched = true;
return 1;
@ -183,7 +181,7 @@ uint8_t set_key(uint16_t keycode, uint8_t kstate)
/**
* process_keypad
*
* @return uint8_t 1 if key(s) processed, 0 if not.
* @return uint8_t 1 if key(s) processed, 0 if not.
*/
uint8_t process_keys()
{
@ -195,13 +193,14 @@ uint8_t process_keys()
for (int i = 0; i < MAX_SIMULTANIOUS_KEYS; i++)
{
/* Process key press/release */
/* Update button table if key pressed/releaseed */
if ((kp_keypad.key[i].kstate == PRESSED || kp_keypad.key[i].kstate == RELEASED) && (kp_keypad.key[i].stateChanged == true))
{
buttons[kp_keypad.key[i].kchar - 1].run_keycode = true;
buttons[kp_keypad.key[i].kchar - 1].kstate = kp_keypad.key[i].kstate;
}
/* Skip if key is not pressed */
if (kp_keypad.key[i].kstate == IDLE || kp_keypad.key[i].kstate == RELEASED) continue;
/* Count number of corner keys pressed */
@ -214,27 +213,21 @@ uint8_t process_keys()
if (buttons[kp_keypad.key[i].kchar - 1].keycode == KEY_FN) fn_mode++;
}
/* Enter bootloader if all four corner-buttons is pressed together */
if (corner_pressed == 4)
{
/* Release all keys and reboot to bootloader */
Keyboard.releaseAll();
status_led.on();
status_led.update();
delay(200); // Wait for usb to settle before rebooting
_reboot_Teensyduino_();
_reboot_Teensyduino_();
}
/* Execute key commands */
for (int i = 0; i < NBR_OF_BUTTONS; i++)
{
/* Check if key should be processed */
/* Check if key is ready to be set. Else skip to next button */
if (buttons[i].run_keycode == false) continue;
/* Reset run_keycode flag */
buttons[i].run_keycode = false;
/* Check if key pressed or released */
if (buttons[i].kstate == RELEASED)
{
set_key(buttons[i].last_keycode, RELEASED);
@ -282,7 +275,7 @@ void loop()
if (current_timestamp >= indicator_timestamp)
{
indicator_timestamp = current_timestamp + 200;
/* Set status indication */
if (keyboard_leds & (1 << USB_LED_CAPS_LOCK))
{
@ -296,7 +289,7 @@ void loop()
{
status_led.off();
}
status_led.update();
}
}