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 | } |
