diff options
author | freqmod <freqmod@gmail.com> | 2021-08-17 20:48:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-18 04:48:00 +1000 |
commit | 705774f7bfe13face6a276cee276d43411bb1693 (patch) | |
tree | 4e6b031309978ffd4e61e0ecd9838eab3599f8c9 /quantum/process_keycode | |
parent | 4b96d5876eb01dfd8063949a2e5cb4b70e01786d (diff) | |
download | qmk_firmware-705774f7bfe13face6a276cee276d43411bb1693.tar.gz qmk_firmware-705774f7bfe13face6a276cee276d43411bb1693.zip |
Steno combinedkeys (#12538)
* Add support for steno keys that press adjacent keys simultaniously
* Add some docs for steno combined keys
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r-- | quantum/process_keycode/process_steno.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c index 57e279f21..a964aead3 100644 --- a/quantum/process_keycode/process_steno.c +++ b/quantum/process_keycode/process_steno.c | |||
@@ -65,6 +65,12 @@ static steno_mode_t mode; | |||
65 | 65 | ||
66 | static const uint8_t boltmap[64] PROGMEM = {TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R}; | 66 | static const uint8_t boltmap[64] PROGMEM = {TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R}; |
67 | 67 | ||
68 | #ifdef STENO_COMBINEDMAP | ||
69 | /* Used to look up when pressing the middle row key to combine two consonant or vowel keys */ | ||
70 | static const uint16_t combinedmap_first[] PROGMEM = {STN_S1, STN_TL, STN_PL, STN_HL, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, STN_A, STN_E}; | ||
71 | static const uint16_t combinedmap_second[] PROGMEM = {STN_S2, STN_KL, STN_WL, STN_RL, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, STN_O, STN_U}; | ||
72 | #endif | ||
73 | |||
68 | static void steno_clear_state(void) { | 74 | static void steno_clear_state(void) { |
69 | memset(state, 0, sizeof(state)); | 75 | memset(state, 0, sizeof(state)); |
70 | memset(chord, 0, sizeof(chord)); | 76 | memset(chord, 0, sizeof(chord)); |
@@ -167,6 +173,15 @@ bool process_steno(uint16_t keycode, keyrecord_t *record) { | |||
167 | } | 173 | } |
168 | return false; | 174 | return false; |
169 | 175 | ||
176 | #ifdef STENO_COMBINEDMAP | ||
177 | case QK_STENO_COMB ... QK_STENO_COMB_MAX: | ||
178 | { | ||
179 | uint8_t result; | ||
180 | result = process_steno(combinedmap_first[keycode-QK_STENO_COMB], record); | ||
181 | result &= process_steno(combinedmap_second[keycode-QK_STENO_COMB], record); | ||
182 | return result; | ||
183 | } | ||
184 | #endif | ||
170 | case STN__MIN ... STN__MAX: | 185 | case STN__MIN ... STN__MAX: |
171 | if (!process_steno_user(keycode, record)) { | 186 | if (!process_steno_user(keycode, record)) { |
172 | return false; | 187 | return false; |