aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common
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/common
parent40d15065276c7a253a95de57944966343ad563b6 (diff)
downloadqmk_firmware-f0b30e0027cb890c7510fa22e5824a43c0d9e86f.tar.gz
qmk_firmware-f0b30e0027cb890c7510fa22e5824a43c0d9e86f.zip
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/common')
-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 aae5cbfa5..f41665b06 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -133,7 +133,8 @@ void process_hand_swap(keyevent_t *event) {
133 bool do_swap = event->pressed ? swap_hands : swap_state[pos.row] & (col_bit); 133 bool do_swap = event->pressed ? swap_hands : swap_state[pos.row] & (col_bit);
134 134
135 if (do_swap) { 135 if (do_swap) {
136 event->key = hand_swap_config[pos.row][pos.col]; 136 event->key.row = pgm_read_byte(&hand_swap_config[pos.row][pos.col].row);
137 event->key.col = pgm_read_byte(&hand_swap_config[pos.row][pos.col].col);
137 swap_state[pos.row] |= col_bit; 138 swap_state[pos.row] |= col_bit;
138 } else { 139 } else {
139 swap_state[pos.row] &= ~(col_bit); 140 swap_state[pos.row] &= ~(col_bit);
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index 9a991de1c..6c8456178 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -78,7 +78,7 @@ extern bool disable_action_cache;
78/* Code for handling one-handed key modifiers. */ 78/* Code for handling one-handed key modifiers. */
79#ifdef SWAP_HANDS_ENABLE 79#ifdef SWAP_HANDS_ENABLE
80extern bool swap_hands; 80extern bool swap_hands;
81extern const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS]; 81extern const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS];
82# if (MATRIX_COLS <= 8) 82# if (MATRIX_COLS <= 8)
83typedef uint8_t swap_state_row_t; 83typedef uint8_t swap_state_row_t;
84# elif (MATRIX_COLS <= 16) 84# elif (MATRIX_COLS <= 16)