diff options
Diffstat (limited to 'layouts/community/ergodox/mpiechotka/keymap.c')
-rw-r--r-- | layouts/community/ergodox/mpiechotka/keymap.c | 127 |
1 files changed, 57 insertions, 70 deletions
diff --git a/layouts/community/ergodox/mpiechotka/keymap.c b/layouts/community/ergodox/mpiechotka/keymap.c index 6a89e38a3..a83725519 100644 --- a/layouts/community/ergodox/mpiechotka/keymap.c +++ b/layouts/community/ergodox/mpiechotka/keymap.c | |||
@@ -1,21 +1,20 @@ | |||
1 | #include QMK_KEYBOARD_H | 1 | #include QMK_KEYBOARD_H |
2 | #include "debug.h" | 2 | |
3 | #include "action_layer.h" | ||
4 | #include "keymap_colemak.h" | 3 | #include "keymap_colemak.h" |
5 | 4 | ||
6 | enum { | 5 | enum layer_names { |
7 | BASE = 0, | 6 | BASE = 0, |
8 | BASE_CM, | 7 | BASE_CM, |
9 | SYMB, | 8 | SYMB, |
10 | MACR | 9 | MACR |
11 | }; | 10 | }; |
12 | 11 | ||
13 | enum { | 12 | enum custom_keycodes { |
14 | LWIN = 1, | 13 | LWIN = SAFE_RANGE, |
15 | PC1, | 14 | KC_PC1, |
16 | PC2, | 15 | KC_PC2, |
17 | PC3, | 16 | KC_PC3, |
18 | PC4 | 17 | KC_PC4 |
19 | }; | 18 | }; |
20 | 19 | ||
21 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 20 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
@@ -50,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
50 | KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, | 49 | KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, |
51 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, | 50 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, |
52 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, | 51 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, |
53 | KC_LALT, F(LWIN), | 52 | KC_LALT, LWIN, |
54 | KC_HOME, | 53 | KC_HOME, |
55 | SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), | 54 | SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), |
56 | // right hand | 55 | // right hand |
@@ -94,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
94 | KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, | 93 | KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, |
95 | KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, KC_EQL, | 94 | KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, KC_EQL, |
96 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, | 95 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, |
97 | KC_LALT, F(LWIN), | 96 | KC_LALT, LWIN, |
98 | KC_HOME, | 97 | KC_HOME, |
99 | SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), | 98 | SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), |
100 | // right hand | 99 | // right hand |
@@ -174,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
174 | [MACR] = LAYOUT_ergodox( | 173 | [MACR] = LAYOUT_ergodox( |
175 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | 174 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, |
176 | KC_NO, DF(BASE), DF(BASE_CM), KC_NO, KC_NO, KC_NO, KC_NO, | 175 | KC_NO, DF(BASE), DF(BASE_CM), KC_NO, KC_NO, KC_NO, KC_NO, |
177 | KC_NO, F(PC1), F(PC2), F(PC3), F(PC4), KC_NO, | 176 | KC_NO, KC_PC1, KC_PC2, KC_PC3, KC_PC4, KC_NO, |
178 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | 177 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, |
179 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | 178 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, |
180 | KC_TRNS,KC_TRNS, | 179 | KC_TRNS,KC_TRNS, |
@@ -192,72 +191,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
192 | ), | 191 | ), |
193 | }; | 192 | }; |
194 | 193 | ||
195 | const uint16_t PROGMEM fn_actions[] = { | 194 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
196 | [LWIN] = ACTION_MACRO(LWIN), | 195 | switch (keycode) { |
197 | [PC1] = ACTION_MACRO(PC1), | 196 | case LWIN: |
198 | [PC2] = ACTION_MACRO(PC2), | 197 | if (record->event.pressed) { |
199 | [PC3] = ACTION_MACRO(PC3), | 198 | tap_code(KC_RSFT); |
200 | [PC4] = ACTION_MACRO(PC4) | 199 | register_code(KC_LGUI); |
201 | }; | 200 | } else { |
202 | 201 | unregister_code(KC_LGUI); | |
203 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | 202 | } |
204 | { | 203 | return false; |
205 | switch(id) { | 204 | case KC_PC1: |
206 | case 0: | 205 | if (record->event.pressed) { |
207 | if (record->event.pressed) { | 206 | tap_code_delay(KC_SLCK, 50); |
208 | register_code(KC_RSFT); | 207 | wait_ms(50); |
209 | } else { | 208 | tap_code_delay(KC_1, 50); |
210 | unregister_code(KC_RSFT); | 209 | tap_code(KC_ENT); |
211 | } | 210 | } |
212 | break; | 211 | return false; |
213 | case LWIN: | 212 | case KC_PC2: |
214 | if (record->event.pressed) { | 213 | if (record->event.pressed) { |
215 | register_code(KC_RSFT); | 214 | tap_code_delay(KC_SLCK, 50); |
216 | unregister_code(KC_RSFT); | 215 | wait_ms(50); |
217 | register_code(KC_LGUI); | 216 | tap_code_delay(KC_2, 50); |
218 | } else { | 217 | tap_code(KC_ENT); |
219 | unregister_code(KC_LGUI); | 218 | } |
220 | } | 219 | return false; |
221 | break; | 220 | case KC_PC3: |
222 | case PC1: | 221 | if (record->event.pressed) { |
223 | if (!record->event.pressed) { | 222 | tap_code_delay(KC_SLCK, 50); |
224 | return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END); | 223 | wait_ms(50); |
225 | } | 224 | tap_code_delay(KC_3, 50); |
226 | break; | 225 | tap_code(KC_ENT); |
227 | case PC2: | 226 | } |
228 | if (!record->event.pressed) { | 227 | return false; |
229 | return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END); | 228 | case KC_PC4: |
230 | } | 229 | if (record->event.pressed) { |
231 | break; | 230 | tap_code_delay(KC_SLCK, 50); |
232 | case PC3: | 231 | wait_ms(50); |
233 | if (!record->event.pressed) { | 232 | tap_code_delay(KC_4, 50); |
234 | return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END); | 233 | tap_code(KC_ENT); |
235 | } | 234 | } |
236 | break; | 235 | return false; |
237 | case PC4: | ||
238 | if (!record->event.pressed) { | ||
239 | return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END); | ||
240 | } | ||
241 | break; | ||
242 | } | 236 | } |
243 | return MACRO_NONE; | 237 | return true; |
244 | } | 238 | } |
245 | 239 | ||
246 | // Runs just one time when the keyboard initializes. | ||
247 | void matrix_init_user(void) { | ||
248 | |||
249 | }; | ||
250 | |||
251 | // Runs constantly in the background, in a loop. | 240 | // Runs constantly in the background, in a loop. |
252 | void matrix_scan_user(void) { | 241 | void matrix_scan_user(void) { |
253 | |||
254 | uint8_t layer = biton32(layer_state); | ||
255 | |||
256 | ergodox_board_led_off(); | 242 | ergodox_board_led_off(); |
257 | ergodox_right_led_1_off(); | 243 | ergodox_right_led_1_off(); |
258 | ergodox_right_led_2_off(); | 244 | ergodox_right_led_2_off(); |
259 | ergodox_right_led_3_off(); | 245 | ergodox_right_led_3_off(); |
260 | switch (layer) { | 246 | |
247 | switch (get_highest_layer(layer_state)) { | ||
261 | // TODO: Make this relevant to the ErgoDox EZ. | 248 | // TODO: Make this relevant to the ErgoDox EZ. |
262 | case SYMB: | 249 | case SYMB: |
263 | ergodox_right_led_1_on(); | 250 | ergodox_right_led_1_on(); |
@@ -269,4 +256,4 @@ void matrix_scan_user(void) { | |||
269 | // none | 256 | // none |
270 | break; | 257 | break; |
271 | } | 258 | } |
272 | }; | 259 | } |