summaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-05-09 23:21:09 -0700
committerGitHub <noreply@github.com>2021-05-09 23:21:09 -0700
commitf0b30e0027cb890c7510fa22e5824a43c0d9e86f (patch)
tree40cc00ca9150bb593dac9c1c8bc6ced190904674 /tmk_core
parent40d15065276c7a253a95de57944966343ad563b6 (diff)
Make Swap Hands use PROGMEM (#12284)
This converts the array that the Swap Hands feature uses to use PROGMEM, and to read from that array, as such. Since this array never changes at runtime, there is no reason to keep it in memory. Especially for AVR boards, as memory is a precious resource.
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/common/action.c3
-rw-r--r--tmk_core/common/action.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index aae5cbfa5f..f41665b06c 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -133,7 +133,8 @@ void process_hand_swap(keyevent_t *event) {
bool do_swap = event->pressed ? swap_hands : swap_state[pos.row] & (col_bit);
if (do_swap) {
- event->key = hand_swap_config[pos.row][pos.col];
+ event->key.row = pgm_read_byte(&hand_swap_config[pos.row][pos.col].row);
+ event->key.col = pgm_read_byte(&hand_swap_config[pos.row][pos.col].col);
swap_state[pos.row] |= col_bit;
} else {
swap_state[pos.row] &= ~(col_bit);
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index 9a991de1c2..6c84561785 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -78,7 +78,7 @@ extern bool disable_action_cache;
/* Code for handling one-handed key modifiers. */
#ifdef SWAP_HANDS_ENABLE
extern bool swap_hands;
-extern const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS];
+extern const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS];
# if (MATRIX_COLS <= 8)
typedef uint8_t swap_state_row_t;
# elif (MATRIX_COLS <= 16)