1 #include QMK_KEYBOARD_H
4 #include "keymap_german.h"
6 #include "keymap_nordic.h"
9 PLACEHOLDER = SAFE_RANGE, // can always be here
11 // Programmer's Dvorak "macros" :
12 // To be paired with get_mods to enable both
13 // Shift functionality and Programmer's Dvorak
15 DVP_ESC, // Grave escape basically i think
49 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50 // Programmer's Dvorak layer
52 DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_AT,
53 KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, MO(4),
54 MO(3), KC_A, KC_O, KC_E, KC_U, KC_I,
55 KC_LSHIFT, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_HYPR,
56 KC_LCTL, KC_LALT, KC_LGUI, LCTL(KC_C), LCTL(KC_V),
58 KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, MO(4), KC_END,
60 DVP_EQUAL, DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH,
61 TT(4), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
62 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS,
63 KC_MEH, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(3),
64 KC_DELETE, KC_BSLASH, KC_RGUI, KC_RCTL, LCTL(KC_F),
66 KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
68 // Gaming QWERTY layer
70 KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F14,
71 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F23,
72 MO(3), KC_A, KC_S, KC_D, KC_F, KC_G,
73 KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F24,
74 KC_LCTL, KC_F8, KC_LALT, KC_F14, KC_F13,
76 KC_HOME, TO(0), KC_F15, KC_SPACE, KC_LCTL, KC_LALT,
78 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL,
79 KC_F24, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
80 KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE,
81 KC_F17, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT,
82 KC_DELETE, KC_F19, KC_LGUI, KC_F21, KC_F22,
84 KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
87 KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_C,
88 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TO(0),
89 MO(3), KC_1, KC_2, KC_3, KC_4, KC_5,
90 KC_LSHIFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
91 KC_LCTL, KC_F8, KC_LALT, KC_I, KC_S,
93 KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
95 KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO, KC_NO,
96 TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO, KC_NO,
97 KC_KP_4, KC_KP_5, KC_KP_6, KC_EQUAL, KC_NO, KC_NO,
98 KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_NO, KC_NO,
99 KC_KP_0, KC_KP_DOT, KC_NO, KC_NO, KC_NO,
101 TO(0), KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
104 [3] = LAYOUT_ergodox(
105 KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT,
106 KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_NO, TT(4),
107 KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_TRANSPARENT,
108 KC_LSHIFT, LALT(KC_Z), KC_TRANSPARENT, KC_TRANSPARENT, KC_F12, KC_TRANSPARENT, ALL_T(KC_NO),
109 KC_LCTL, KC_LALT, KC_LGUI, KC_CAPSLOCK, LSFT(KC_F12),
111 KC_PSCREEN, KC_PGUP, KC_PGDOWN, KC_SPACE, KC_LSHIFT, KC_INSERT,
113 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
114 KC_NO, KC_HOME, KC_TRANSPARENT, KC_PSCREEN, KC_SLCK, KC_TRANSPARENT, KC_TRANSPARENT,
115 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT,
116 MEH_T(KC_NO), KC_CALCULATOR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_RSHIFT,
117 KC_DELETE, KC_INSERT, KC_TRANSPARENT, KC_F19, KC_RCTL,
119 TO(2),KC_TRANSPARENT,KC_TRANSPARENT,LALT(KC_F10),KC_ENTER,KC_BSPACE
121 // Keypad, Lighting, and Mouse emulation layer
123 [4] = LAYOUT_ergodox(
124 KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO,
125 KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0),
126 KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
127 KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5),
128 KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,
130 KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
132 KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, KC_NO, RGB_VAI,
133 TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_NO, RGB_VAD,
134 KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NO, RGB_HUI,
135 KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_SLD, RGB_HUD,
136 KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_MOD, RGB_TOG,
138 KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
142 // Keypad, Lighting, and Mouse emulation layer
144 KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO,
145 KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0),
146 KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
147 KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5),
148 KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,
150 KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END,
152 KC_NO, KC_I, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, RGB_VAI,
153 TO(0), KC_G, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, RGB_VAD,
154 SHFT_COMMA, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, RGB_HUI,
155 KC_NO, SHFT_DOT, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, RGB_HUD,
156 KC_NO, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, RGB_TOG,
158 KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE
164 void led_set_keymap(uint8_t usb_led) {
168 void matrix_init_user (void) {
173 bool left_shift_down = false;
174 bool right_shift_down = false;
176 bool numlock = false;
178 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
182 if (record->event.pressed)
184 left_shift_down = true;
189 left_shift_down = false;
195 if (record->event.pressed)
197 right_shift_down = true;
202 right_shift_down = false;
208 if (record->event.pressed)
215 if (left_shift_down || right_shift_down)
217 if(record->event.pressed)
223 if(record->event.pressed)
224 SEND_STRING(SS_DOWN(X_ESCAPE));
226 SEND_STRING(SS_UP(X_ESCAPE));
232 if (left_shift_down || right_shift_down)
234 if(record->event.pressed)
242 if(record->event.pressed)
250 if(record->event.pressed)
255 if(record->event.pressed)
260 if (left_shift_down || right_shift_down)
262 if(record->event.pressed)
265 unregister_code(KC_LSHIFT);
267 unregister_code(KC_RSHIFT);
270 unregister_code(KC_7);
273 register_code(KC_LSHIFT);
275 register_code(KC_RSHIFT);
280 if(record->event.pressed)
289 if (left_shift_down || right_shift_down)
291 if(record->event.pressed)
294 unregister_code(KC_LSHIFT);
296 unregister_code(KC_RSHIFT);
299 unregister_code(KC_5);
302 register_code(KC_LSHIFT);
304 register_code(KC_RSHIFT);
309 if(record->event.pressed)
316 if (left_shift_down || right_shift_down)
318 if(record->event.pressed)
321 unregister_code(KC_LSHIFT);
323 unregister_code(KC_RSHIFT);
326 unregister_code(KC_3);
329 register_code(KC_LSHIFT);
331 register_code(KC_RSHIFT);
336 if(record->event.pressed)
343 if (left_shift_down || right_shift_down)
345 if(record->event.pressed)
348 unregister_code(KC_LSHIFT);
350 unregister_code(KC_RSHIFT);
353 unregister_code(KC_1);
356 register_code(KC_LSHIFT);
358 register_code(KC_RSHIFT);
363 if(record->event.pressed)
370 if (left_shift_down || right_shift_down)
372 if(record->event.pressed)
375 unregister_code(KC_LSHIFT);
377 unregister_code(KC_RSHIFT);
379 register_code(KC_LSHIFT);
381 unregister_code(KC_6);
382 unregister_code(KC_LSHIFT);
385 register_code(KC_LSHIFT);
387 register_code(KC_RSHIFT);
392 if(record->event.pressed)
400 if (left_shift_down || right_shift_down)
402 if(record->event.pressed)
405 unregister_code(KC_LSHIFT);
407 unregister_code(KC_RSHIFT);
410 unregister_code(KC_9);
413 register_code(KC_LSHIFT);
415 register_code(KC_RSHIFT);
420 if(record->event.pressed)
427 if (left_shift_down || right_shift_down)
429 if(record->event.pressed)
432 unregister_code(KC_LSHIFT);
434 unregister_code(KC_RSHIFT);
437 unregister_code(KC_0);
440 register_code(KC_LSHIFT);
442 register_code(KC_RSHIFT);
447 if(record->event.pressed)
454 if (left_shift_down || right_shift_down)
456 if(record->event.pressed)
459 unregister_code(KC_LSHIFT);
461 unregister_code(KC_RSHIFT);
464 unregister_code(KC_2);
467 register_code(KC_LSHIFT);
469 register_code(KC_RSHIFT);
474 if(record->event.pressed)
481 if (left_shift_down || right_shift_down)
483 if(record->event.pressed)
486 unregister_code(KC_LSHIFT);
488 unregister_code(KC_RSHIFT);
491 unregister_code(KC_4);
494 register_code(KC_LSHIFT);
496 register_code(KC_RSHIFT);
501 if(record->event.pressed)
508 if (left_shift_down || right_shift_down)
510 if(record->event.pressed)
513 unregister_code(KC_LSHIFT);
515 unregister_code(KC_RSHIFT);
518 unregister_code(KC_6);
521 register_code(KC_LSHIFT);
523 register_code(KC_RSHIFT);
528 if(record->event.pressed)
535 if (left_shift_down || right_shift_down)
537 if(record->event.pressed)
540 unregister_code(KC_LSHIFT);
542 unregister_code(KC_RSHIFT);
545 unregister_code(KC_8);
548 register_code(KC_LSHIFT);
550 register_code(KC_RSHIFT);
555 if(record->event.pressed)
562 if (left_shift_down || right_shift_down)
564 if(record->event.pressed)
567 unregister_code(KC_LSHIFT);
569 unregister_code(KC_RSHIFT);
571 register_code(KC_GRAVE);
572 unregister_code(KC_GRAVE);
575 register_code(KC_LSHIFT);
577 register_code(KC_RSHIFT);
582 if(record->event.pressed)
590 if (left_shift_down || right_shift_down)
592 if(record->event.pressed)
595 unregister_code(KC_LSHIFT);
597 unregister_code(KC_RSHIFT);
599 register_code(KC_GRAVE);
600 unregister_code(KC_GRAVE);
603 register_code(KC_LSHIFT);
605 register_code(KC_RSHIFT);
610 if(record->event.pressed)
616 if (left_shift_down || right_shift_down)
618 if(record->event.pressed)
621 unregister_code(KC_LSHIFT);
623 unregister_code(KC_RSHIFT);
625 register_code(KC_GRAVE);
626 unregister_code(KC_GRAVE);
629 register_code(KC_LSHIFT);
631 register_code(KC_RSHIFT);
636 if(record->event.pressed)
642 if (left_shift_down || right_shift_down)
644 if(record->event.pressed)
647 unregister_code(KC_LSHIFT);
649 unregister_code(KC_RSHIFT);
651 register_code(KC_GRAVE);
652 unregister_code(KC_GRAVE);
655 register_code(KC_LSHIFT);
657 register_code(KC_RSHIFT);
662 if(record->event.pressed)
668 if (left_shift_down || right_shift_down)
670 if(record->event.pressed)
673 unregister_code(KC_LSHIFT);
675 unregister_code(KC_RSHIFT);
677 register_code(KC_GRAVE);
678 unregister_code(KC_GRAVE);
681 register_code(KC_LSHIFT);
683 register_code(KC_RSHIFT);
688 if(record->event.pressed)
694 if (left_shift_down || right_shift_down)
696 if(record->event.pressed)
699 unregister_code(KC_LSHIFT);
701 unregister_code(KC_RSHIFT);
703 register_code(KC_GRAVE);
704 unregister_code(KC_GRAVE);
707 register_code(KC_LSHIFT);
709 register_code(KC_RSHIFT);
714 if(record->event.pressed)
721 if (left_shift_down || right_shift_down)
723 if(record->event.pressed)
726 unregister_code(KC_LSHIFT);
728 unregister_code(KC_RSHIFT);
730 register_code(KC_GRAVE);
731 unregister_code(KC_GRAVE);
734 register_code(KC_LSHIFT);
736 register_code(KC_RSHIFT);
741 if(record->event.pressed)
749 if (record->event.pressed) {
756 if (record->event.pressed) {
757 #ifdef RGBLIGHT_ENABLE
760 rgblight_setrgb(0xff,0x00,0x00);
767 if (record->event.pressed) {
768 #ifdef RGBLIGHT_ENABLE
771 rgblight_setrgb(0x00,0x80,0x00);
778 if (record->event.pressed) {
779 #ifdef RGBLIGHT_ENABLE
782 rgblight_setrgb(0x00,0x00,0xff);
789 if (record->event.pressed) {
790 #ifdef RGBLIGHT_ENABLE
793 rgblight_setrgb(0xff,0xff,0xff);
800 if (record->event.pressed) {
801 #ifdef RGBLIGHT_ENABLE
804 rgblight_setrgb(0x80,0x00,0x80);
814 uint32_t layer_state_set_user(uint32_t state) {
816 uint8_t layer = biton32(state);
818 // ergodox_board_led_off();
819 ergodox_right_led_1_off();
820 ergodox_right_led_2_off();
821 ergodox_right_led_3_off();
826 ergodox_right_led_1_on();
829 ergodox_right_led_2_on();
832 ergodox_right_led_3_on();
835 ergodox_right_led_1_on();
836 ergodox_right_led_3_on();