aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/mpiechotka/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/mpiechotka/keymap.c')
-rw-r--r--layouts/community/ergodox/mpiechotka/keymap.c127
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
6enum { 5enum 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
13enum { 12enum 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
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 20const 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
195const uint16_t PROGMEM fn_actions[] = { 194bool 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);
203const 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.
247void 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.
252void matrix_scan_user(void) { 241void 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}