aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/twey/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/twey/keymap.c')
-rw-r--r--layouts/community/ergodox/twey/keymap.c102
1 files changed, 58 insertions, 44 deletions
diff --git a/layouts/community/ergodox/twey/keymap.c b/layouts/community/ergodox/twey/keymap.c
index 70152864b..9ee318a5d 100644
--- a/layouts/community/ergodox/twey/keymap.c
+++ b/layouts/community/ergodox/twey/keymap.c
@@ -1,7 +1,7 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#include "debug.h" 2#include "debug.h"
3#include "action_layer.h" 3#include "action_layer.h"
4#include "keymap_plover.h" 4#include "keymap_steno.h"
5 5
6#define BASE 0 // default layer 6#define BASE 0 // default layer
7#define SYMB 1 // symbols 7#define SYMB 1 // symbols
@@ -35,14 +35,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35// Otherwise, it needs KC_* 35// Otherwise, it needs KC_*
36[BASE] = LAYOUT_ergodox( // layer 0 : default 36[BASE] = LAYOUT_ergodox( // layer 0 : default
37 // left hand 37 // left hand
38 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, M(0), 38 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(STEN),
39 KC_DELT, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC, 39 KC_DELT, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC,
40 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, 40 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
41 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_TAB, 41 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_TAB,
42 MO(SYMB), KC_NO, KC_GRV, KC_LEFT,KC_RGHT, 42 MO(SYMB), KC_NO, KC_GRV, KC_LEFT,KC_RGHT,
43 KC_PGUP,KC_PGDN, 43 KC_PGUP,KC_PGDN,
44 KC_NO, 44 KC_NO,
45 KC_LALT,KC_ENT ,KC_LGUI, 45 KC_LALT,KC_ENT ,M(0),
46 // right hand 46 // right hand
47 KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, 47 KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
48 KC_CAPS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, 48 KC_CAPS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
@@ -96,37 +96,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
96 KC_TRNS, KC_TRNS, KC_TRNS 96 KC_TRNS, KC_TRNS, KC_TRNS
97), 97),
98 98
99/* Keymap 2: Steno for Plover
100 *
101 * ,---------------------------------------------------. ,---------------------------------------------------.
102 * | | | # | # | # | # | | | | # | # | # | # | # | |
103 * |--------+------+------+------+-------+-------------| |-------+------+------+------+------+------+--------|
104 * | | | S | T | P | H | * | | * | F | P | L | T | D | |
105 * |--------+------+------+------+-------+------| | | |------+------+------+------+------+--------|
106 * | | | S | K | W | R |------| |-------| R | B | G | S | Z | |
107 * |--------+------+------+------+-------+------| * | | * |------+------+------+------+------+--------|
108 * | | | | | | | | | | | | | | | |
109 * `--------+------+------+------+-------+-------------' `--------------+------+------+------+------+--------'
110 * | L1 | | | Left | Right | | Up | Down | | | L1 |
111 * `-----------------------------------' `----------------------------------'
112 * ,--------------. ,---------------.
113 * | | | | | |
114 * ,------|-------|------| |-------+-------+------.
115 * | | | | | | | |
116 * | A | O |------| |-------| E | U |
117 * | | | | | | | |
118 * `---------------------' `----------------------'
119 */
120
121
99[STEN] = LAYOUT_ergodox( // layout: layer 2: Steno for Plover 122[STEN] = LAYOUT_ergodox( // layout: layer 2: Steno for Plover
100 // left hand 123 // left hand
101 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, 124 KC_NO, STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, KC_TRNS,
102 KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_STAR, 125 KC_NO, KC_NO, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1,
103 KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, 126 KC_NO, KC_NO, STN_S2, STN_KL, STN_WL, STN_RL,
104 KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, 127 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, STN_ST2,
105 KC_TRNS,KC_NO, KC_NO, KC_TRNS, KC_TRNS, 128 KC_TRNS,KC_NO, KC_NO, KC_TRNS, KC_TRNS,
106 KC_NO, KC_NO, 129 KC_NO, KC_NO,
107 KC_NO, 130 KC_NO,
108 PV_A, PV_O, KC_NO, 131 STN_A, STN_O, KC_TRNS,
109 // right hand 132 // right hand
110 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 133 KC_NO, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, KC_NO,
111 PV_STAR, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, 134 STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, KC_NO,
112 PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, 135 STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, KC_NO,
113 PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, 136 STN_ST4, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
114 KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, 137 KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS,
115 KC_NO, KC_NO, 138 KC_NO, KC_NO,
116 KC_NO, 139 KC_NO,
117 KC_TRNS,PV_E, PV_U 140 KC_TRNS, STN_E, STN_U
118), 141),
119 142
120/* Keymap 3: Media and mouse keys 143/* Keymap 3: Media and mouse keys
121 * 144 *
122 * ,--------------------------------------------------. ,--------------------------------------------------. 145 * ,--------------------------------------------------. ,--------------------------------------------------.
123 * | | | | | | | | | | | | | | | | 146 * | | | | | | | STEN | | | | | | | | |
124 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 147 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
125 * | | | | MsUp | | | | | | | Back | | Frwd | | | 148 * | | | | MsUp | | | | | | | Back | | Frwd | | |
126 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 149 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
127 * | | |MsLeft|MsDown|MsRght| |------| |------| | Prev | Play | Next | | | 150 * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Mclk | Rclk | | |
128 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 151 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
129 * | | | | | | | | | | | | | | | | 152 * | | | | | | | | | | | Prev | Play | Next | | |
130 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 153 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
131 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | 154 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
132 * `----------------------------------' `----------------------------------' 155 * `----------------------------------' `----------------------------------'
@@ -144,15 +167,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
144 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, 167 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, 168 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
146 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 169 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
147 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, 170 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
148 KC_TRNS, KC_TRNS, 171 KC_TRNS, KC_TRNS,
149 KC_TRNS, 172 KC_TRNS,
150 KC_TRNS, KC_TRNS, KC_TRNS, 173 KC_TRNS, KC_TRNS, KC_TRNS,
151 // right hand 174 // right hand
152 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 175 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
153 KC_TRNS, KC_TRNS, KC_WBAK, KC_TRNS, KC_WFWD, KC_TRNS, KC_TRNS, 176 KC_TRNS, KC_TRNS, KC_WBAK, KC_TRNS, KC_WFWD, KC_TRNS, KC_TRNS,
154 KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, 177 KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
155 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 178 KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS,
156 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, 179 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
157 KC_TRNS, KC_TRNS, 180 KC_TRNS, KC_TRNS,
158 KC_TRNS, 181 KC_TRNS,
@@ -164,43 +187,34 @@ const uint16_t PROGMEM fn_actions[] = {
164 [1] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN1 - Momentary Layer 3 (Media) 187 [1] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN1 - Momentary Layer 3 (Media)
165}; 188};
166 189
167void toggle_steno(int pressed) 190// press `key`, but deactivate `layer` whilst it's held
191void press_without(int pressed, int key, uint8_t layer)
168{ 192{
169 uint8_t layer = biton32(layer_state); 193 static bool was_on;
170
171 if (pressed) { 194 if (pressed) {
172 if (layer != STEN) layer_on(STEN); else layer_off(STEN); 195 was_on = layer_state_is(layer);
173 196 layer_off(layer);
174 register_code(PV_LP); 197 register_code(key);
175 register_code(PV_LH);
176 register_code(PV_LR);
177 register_code(PV_O);
178 register_code(PV_RL);
179 register_code(PV_RG);
180 } else { 198 } else {
181 unregister_code(PV_LP); 199 if (was_on) layer_on(layer);
182 unregister_code(PV_LH); 200 unregister_code(key);
183 unregister_code(PV_LR);
184 unregister_code(PV_O);
185 unregister_code(PV_RL);
186 unregister_code(PV_RG);
187 } 201 }
188} 202}
189 203
190const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 204const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
191{ 205{
192 // MACRODOWN only works in this function 206 // MACRODOWN only works in this function
193 switch(id) { 207 switch(id) {
194 case 0: 208 case 0:
195 toggle_steno(record->event.pressed); 209 press_without(record->event.pressed, KC_LGUI, STEN);
196 break; 210 break;
197 } 211 }
198 return MACRO_NONE; 212 return MACRO_NONE;
199}; 213};
200 214
201// Runs just one time when the keyboard initializes. 215// Runs just one time when the keyboard initializes.
202void matrix_init_user(void) { 216void matrix_init_user(void) {
203 217 steno_set_mode(STENO_MODE_BOLT);
204}; 218};
205 219
206// Runs constantly in the background, in a loop. 220// Runs constantly in the background, in a loop.
@@ -209,7 +223,7 @@ void matrix_scan_user(void) {
209 uint32_t layer0 = layer_state & (1UL << 0), 223 uint32_t layer0 = layer_state & (1UL << 0),
210 layer1 = layer_state & (1UL << 1), 224 layer1 = layer_state & (1UL << 1),
211 layer2 = layer_state & (1UL << 2), 225 layer2 = layer_state & (1UL << 2),
212 layer3 = layer_state & (1UL << 3); 226 layer3 = layer_state & (1UL << 3);
213 227
214 ergodox_board_led_off(); 228 ergodox_board_led_off();
215 ergodox_right_led_1_off(); 229 ergodox_right_led_1_off();