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.
2.2 KiB
Swap-Hands Action
The swap-hands action allows support for one-handed typing without
requiring a separate layer. Set SWAP_HANDS_ENABLE in the
Makefile and define a hand_swap_config entry in your
keymap. Now whenever the ACTION_SWAP_HANDS command key is
pressed the keyboard is mirrored. For instance, to type “Hello, World”
on QWERTY you would type ^Ge^s^s^w^c W^wr^sd
Configuration
The configuration table is a simple 2-dimensional array to map from
column/row to new column/row. Example hand_swap_config for
Planck:
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
{{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
};Note that the array indices are reversed same as the matrix and the
values are of type keypos_t which is
{col, row} and all values are zero-based. In the example
above, hand_swap_config[2][4] (third row, fifth column)
would return {7, 2} (third row, eighth column). Yes, this
is confusing.
Swap Keycodes
| Key | Description |
|---|---|
SH_T(key) |
Sends key with a tap; momentary swap when held. |
SH_ON |
Turns on swapping and leaves it on. |
SH_OFF |
Turn off swapping and leaves it off. Good for returning to a known state. |
SH_MON |
Swaps hands when pressed, returns to normal when released (momentary). |
SH_MOFF |
Momentarily turns off swap. |
SH_TG |
Toggles swap on and off with every key press. |
SH_TT |
Toggles with a tap; momentary when held. |
SH_OS |
One shot swap hands: toggles while pressed or until next key press. |