]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c
Modified Atreus extend and Ergodox.
[qmk_firmware.git] / keyboards / ergodox_ez / keymaps / replicaJunction / keymap.c
1 #include "ergodox_ez.h"
2 #include "debug.h"
3 #include "action_layer.h"
4
5 /*
6  * Keyboard: Ergodox
7  * Keymap:   replicaJunction
8  * Version:  1.1
9  *
10  * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus.
11  * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now
12  * have both keyboards, so I've designed these layouts in an effort to make switching between the
13  * two as easy as possible.
14  *
15  * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
16  * here: https://colemakmods.github.io/mod-dh/
17  */
18
19 #define _CO 0 // Colemak
20 #define _DV 1 // Dvorak
21 #define _QW 2 // QWERTY
22 #define _ME 3 // media keys
23 #define _NU 4 // numpad
24 #define _EX 5 // extend
25 #define _GA 6 // mouse overlay for gaming
26
27 #define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at
28
29 // Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers
30 #define PREVENT_STUCK_MODIFIERS
31
32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 /*
34       * Keymap: Colemak-ModDH
35       *
36       * ,--------------------------------------------------.           ,--------------------------------------------------.
37       * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
38       * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
39       * |   \    |   Q  |   W  |   F  |   P  |   B  | Home |           | BkSp |   J  |   L  |   U  |   Y  |   ;  |   -    |
40       * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
41       * | Tab    |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  |   '    |
42       * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
43       * | LShft  |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   ,  |   /  | RShft  |
44       * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
45       *   | LGui |   [  |   ]  |CtlShf|      |                                       | _EX  |   -  |   '  | Right|   \  |
46       *   `----------------------------------'                                       `----------------------------------'
47       *                                        ,-------------.       ,-------------.
48       *                                        | LCtrl| LAlt |       | Left | Right|
49       *                                 ,------|------|------|       |------+------+------.
50       *                                 | Ctl/ | Alt/ | Home |       |  Up  |      | _NU/ |
51       *                                 | BkSp |  Del |------|       |------| Enter| Space|
52       *                                 |      |      | _NU  |       | Down |      |      |
53       *                                 `--------------------'       `--------------------'
54       */
55
56 [_CO] = KEYMAP(
57         // left hand
58         KC_GRV, KC_1,   KC_2,      KC_3,            KC_4,   KC_5,   KC_ESC,
59         KC_BSLS,KC_Q,   KC_W,      KC_F,            KC_P,   KC_B,   KC_HOME,
60         KC_TAB, KC_A,   KC_R,      KC_S,            KC_T,   KC_G,
61         KC_LSFT,KC_Z,   KC_X,      KC_C,            KC_D,   KC_V,   ALL_T(KC_NO),
62         KC_LGUI,KC_LBRC,KC_RBRC,   LCTL(KC_LSFT),   MO(_NU),
63
64                                                                 KC_LCTL,        KC_LALT,
65                                                                                 KC_HOME,
66                                                 CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
67         // right hand
68              KC_ESC,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
69              KC_BSPC,  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_MINS,
70                        KC_M,   KC_N,   KC_E,   KC_I,   KC_O,   KC_QUOT,
71              KC_BSLS,  KC_K,   KC_H,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
72                                MO(_EX),KC_MINS,KC_QUOT,KC_RGHT,KC_BSLS,
73
74         KC_LEFT, KC_RGHT,
75         KC_UP,
76         KC_DOWN, KC_ENT, LT(_NU,KC_SPC)
77     ),
78
79     /*
80       * Keymap: Dvorak layout
81       *
82       * The right index backspace is a nod to my TypeMatrix keyboard, which has
83       * Backspace in the center.
84       *
85       * ,--------------------------------------------------.           ,--------------------------------------------------.
86       * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   /    |
87       * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
88       * |   \    |   '  |   ,  |   .  |   P  |   Y  | Home |           | BkSp |   F  |   G  |   C  |   R  |   L  |   =    |
89       * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
90       * | Tab    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
91       * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
92       * | LShft  |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShft  |
93       * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
94       *   | LGui |   [  |   ]  |CtlShf| _NU |                                       | Left |  Up  | Down | Right|   \  |
95       *   `----------------------------------'                                       `----------------------------------'
96       *                                        ,-------------.       ,-------------.
97       *                                        | LCtrl| LAlt |       | _ME | RAlt |
98       *                                 ,------|------|------|       |------+------+------.
99       *                                 | Ctl/ | Alt/ | Home |       | PgUp |      | _NU/ |
100       *                                 | BkSp |  Del |------|       |------| Enter| Space|
101       *                                 |      |      | _NU |       | PgDn |      |      |
102       *                                 `--------------------'       `--------------------'
103       */
104
105 // _DV
106 [_DV] = KEYMAP(
107         // left hand
108         KC_GRV, KC_1,   KC_2,      KC_3,            KC_4,   KC_5,   KC_ESC,
109         KC_BSLS,KC_QUOT,KC_COMM,   KC_DOT,          KC_P,   KC_Y,   KC_HOME,
110         KC_TAB, KC_A,   KC_O,      KC_E,            KC_U,   KC_I,
111         KC_LSFT,KC_SCLN,KC_Q,      KC_J,            KC_K,   KC_X,   ALL_T(KC_NO),
112         KC_LGUI,KC_LBRC,KC_RBRC,   LCTL(KC_LSFT),   MO(_NU),
113
114                                                                 KC_LCTL,        KC_LALT,
115                                                                                 KC_HOME,
116                                                 CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
117         // right hand
118              KC_ESC,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_SLSH,
119              KC_BSPC,  KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_EQL,
120                        KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_MINS,
121              KC_BSLS,  KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,   KC_RSFT,
122                                KC_LEFT,KC_UP,  KC_DOWN,KC_RGHT,KC_BSLS,
123
124         MO(_ME), KC_RALT,
125         KC_PGUP,
126         KC_PGDN,  KC_ENT, LT(_NU,KC_SPC)
127     ),
128
129     /*
130      * Keymap: QWERTY layout.
131      *
132      * This is optimized for gaming, not typing, so there aren't as many macros
133      * as the Dvorak layer. Some of the keys have also been moved to "game-
134      * like" locations, such as making the spacebar available to the left thumb,
135      * and repositioning the arrow keys at the bottom right corner.
136      *
137      * ,--------------------------------------------------.           ,--------------------------------------------------.
138      * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   -    |
139      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
140      * | LShift |   Q  |   W  |   E  |   R  |   T  | +L1  |           | BkSp |   Y  |   U  |   I  |   O  |   P  |   ]    |
141      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
142      * | Tab    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
143      * |--------+------+------+------+------+------| FN2  |           | ~L1  |------+------+------+------+------+--------|
144      * | LShft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  Up  | RShft  |
145      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
146      *   | LCtrl|   `  |  \   |CtlShf| _NU  |                                       | _NU  |  /  | Left  | Down | Right|
147      *   `----------------------------------'                                       `----------------------------------'
148      *                                        ,-------------.       ,-------------.
149      *                                        | LCtrl| LAlt |       | _ME | ~_GA|
150      *                                 ,------|------|------|       |------+------+------.
151      *                                 |      |      | Home |       | PgUp |      | _NU/ |
152      *                                 | Space| LAlt |------|       |------| Enter| Space|
153      *                                 |      |      | End  |       | PgDn |      |      |
154      *                                 `--------------------'       `--------------------'
155      */
156 [_QW] = KEYMAP(  // Layer1: QWERTY
157         // left hand
158         KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
159         KC_LSFT,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
160         KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
161         KC_LSFT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
162         KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT),  MO(_NU),
163
164                                         KC_LCTL,KC_LALT,
165                                                 KC_HOME,
166                                         KC_SPC, KC_LALT, KC_END,
167         // right hand
168         KC_ESC,  KC_6,  KC_7,   KC_8,   KC_9,   KC_0,   KC_RBRC,
169         KC_BSPC, KC_Y,  KC_U,   KC_I,   KC_O,   KC_P,   KC_EQL,
170                  KC_H,  KC_J,   KC_K,   KC_L,   KC_SCLN,KC_MINS,
171         KC_END,  KC_N,  KC_M,   KC_COMM,KC_DOT, KC_UP  ,KC_RSFT,
172                         MO(_NU),KC_UP,  KC_LEFT,KC_DOWN,KC_RGHT,
173
174         MO(_ME),TG(_GA),
175         KC_PGUP,
176         KC_PGDN,KC_ENT,LT(_NU,KC_SPC)
177     ),
178
179 /*
180      * Keymap: Numbers and symbols
181      *
182      * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases.
183      * That's why the Num Lock key exists on this layer - just in case.
184      *
185      * This layer also contains the layout switches.
186      *
187      * ,--------------------------------------------------.           ,--------------------------------------------------.
188      * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
189      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
190      * |        |   !  |   @  |   {  |   }  |   &  |      |           |      |   /  |   7  |   8  |   9  |   *  |        |
191      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
192      * |        |   #  |   $  |   (  |   )  |   `  |------|           |------|   |  |   4  |   5  |   6  |   -  |        |
193      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
194      * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   \  |   1  |   2  |   3  |   +  |        |
195      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
196      *   | RESET|QWERTY|Dvorak|Colemk|      |                                       |   0  |   .  |   =  |      |      |
197      *   `----------------------------------'                                       `----------------------------------'
198      *                                        ,-------------.       ,-------------.
199      *                                        |NumLck|      |       |      |      |
200      *                                 ,------|------|------|       |------+------+------.
201      *                                 |      |      |      |       |      |      |      |
202      *                                 |      |      |------|       |------|      |      |
203      *                                 |      |      |      |       |      |      |      |
204      *                                 `--------------------'       `--------------------'
205      */
206 [_NU] = KEYMAP(
207         // left hand
208         _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______,
209         _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_AMPR, _______,
210         _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
211         _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______,
212         RESET,   DF(_QW), DF(_DV), DF(_CO), _______,
213
214                                                 KC_NLCK,_______,
215                                                         _______,
216                                         _______,_______,_______,
217         // right hand
218         _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
219         _______, KC_SLSH, KC_P7,   KC_P8,   KC_P9,   KC_PAST, _______,
220                  KC_PIPE, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, _______,
221         _______, KC_BSLS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, _______,
222                           KC_P0,   KC_PDOT, KC_EQL,  _______, _______,
223
224        _______, _______,
225        _______,
226        _______, _______, _______
227     ),
228
229     /*
230      * Keymap: Extend
231      *
232      * ,--------------------------------------------------.           ,--------------------------------------------------.
233      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
234      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
235      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
236      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
237      * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
238      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
239      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
240      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
241      *   |      |      |      |      |      |                                       |      |      |      |      |      |
242      *   `----------------------------------'                                       `----------------------------------'
243      *                                        ,-------------.       ,-------------.
244      *                                        |      |      |       |      |      |
245      *                                 ,------|------|------|       |------+------+------.
246      *                                 |      |      |      |       |      |      |      |
247      *                                 |      |      |------|       |------|      |      |
248      *                                 |      |      |      |       |      |      |      |
249      *                                 `--------------------'       `--------------------'
250      */
251 [_EX] = KEYMAP(
252         // left hand
253         _______, _______, _______, _______, _______, _______, _______,
254         _______, _______, _______, _______, _______, _______, _______,
255         _______, _______, _______, _______, _______, _______,
256         _______, _______, _______, _______, _______, _______, _______,
257         _______, _______, _______, _______, _______,
258
259                                                 _______,_______,
260                                                         _______,
261                                         _______,_______,_______,
262         // right hand
263         _______,  _______, _______, _______, _______, _______, _______,
264         _______,  KC_PGUP, KC_HOME, KC_UP,   KC_END,  _______, _______,
265                   KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
266         _______,  _______, _______, _______, _______, _______, _______,
267                            _______, _______, _______, _______, _______,
268         _______, _______,
269         _______,
270         _______, _______, _______
271     ),
272
273     /*
274      * Keymap: Gaming
275      *
276      * This is mostly a mouse overlay for the right hand while the left hand uses the QWERTY layout.
277      *
278      * ,--------------------------------------------------.           ,--------------------------------------------------.
279      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
280      * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
281      * |        |      |      |      |      |      |      |           |      |      |WhlUp | MsUp |WhlDn |      |        |
282      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
283      * |        |      |      |      |      |      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
284      * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
285      * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
286      * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
287      *   |      |      |      |      |      |                                       |MClick|      |      |      |      |
288      *   `----------------------------------'                                       `----------------------------------'
289      *                                        ,-------------.       ,-------------.
290      *                                        |      |      |       |      | ~_GA|
291      *                                 ,------|------|------|       |------+------+------.
292      *                                 |      |      |      |       |      |      |      |
293      *                                 |      |      |------|       |------|RClick|LClick|
294      *                                 |      |      |      |       |      |      |      |
295      *                                 `--------------------'       `--------------------'
296      */
297 [_GA] = KEYMAP(
298         // left hand
299         _______, _______, _______, _______, _______, _______, _______,
300         _______, _______, _______, _______, _______, _______, _______,
301         _______, _______, _______, _______, _______, _______,
302         _______, _______, _______, _______, _______, _______, _______,
303         _______, _______, _______, _______, _______,
304
305                                         _______,_______,
306                                                 _______,
307                                         _______,_______,_______,
308
309         // right hand
310         _______,  _______, _______, _______, _______, _______, _______,
311         _______,  _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
312                   _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
313         _______,  _______, _______, _______, _______, _______, _______,
314                            KC_BTN3, _______, _______, _______, _______,
315         _______, _______,
316         _______,
317         _______, KC_BTN2, KC_BTN1
318     ),
319 };
320
321 const uint16_t PROGMEM fn_actions[] = {
322     [1] = ACTION_LAYER_TAP_TOGGLE(_NU)                // FN1 - Momentary Layer 1 (Numbers and symbols)
323 };
324
325 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
326 {
327   // MACRODOWN only works in this function
328       switch(id) {
329         case 0:
330         if (record->event.pressed) {
331           register_code(KC_RSFT);
332         } else {
333           unregister_code(KC_RSFT);
334         }
335         break;
336       }
337     return MACRO_NONE;
338 };
339
340 // Runs just one time when the keyboard initializes.
341 void matrix_init_user(void) {
342
343 };
344
345 // Runs constantly in the background, in a loop.
346 void matrix_scan_user(void) {
347
348     // uint8_t layer = biton32(layer_state);
349
350     ergodox_board_led_off();
351     ergodox_right_led_1_off();
352     ergodox_right_led_2_off();
353     ergodox_right_led_3_off();
354
355     switch (layer_state) {
356         case _CO:
357             ergodox_right_led_1_on();
358             break;
359         case _QW:
360             ergodox_right_led_2_on();
361         case _NU:
362             ergodox_right_led_3_on();
363             break;
364         case _GA:
365             ergodox_right_led_1_on();
366             ergodox_right_led_2_on();
367         default:
368             // none
369             break;
370     }
371
372 };