]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/xyverz/keymap.c
Merge remote-tracking branch 'origin/master' into amj60
[qmk_firmware.git] / keyboards / ergodox / keymaps / xyverz / keymap.c
1 /*
2  * PLEASE NOTE: This keymap will NOT work with the Infinity ErgoDox due to the fact that the mappings are
3  * based on the Matrix Layout in the ez.h file. If you want to use this for the infinity, you'll need to 
4  * figure out where the keys are in the matrix and redo the layout arrays below.
5  * 
6  * About this keymap:
7  * 
8  * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak
9  * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner
10  * keys. I've decided to continue using this layout with my ErgoDox.
11  *
12  * The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional
13  * keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
14  *
15  * I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck
16  * layouts.
17  * 
18  * For a better explanation of the layout matrices shown below, take a look at ../../ez/ez.h where the
19  * keymap is defined, beginning on line 81.
20  *
21  */
22
23 #include "ergodox.h"
24 #include "debug.h"
25 #include "action_layer.h"
26 #include "eeconfig.h"
27
28 extern keymap_config_t keymap_config;
29
30 #define _DV 0 // Dvorak layer
31 #define _QW 1 // Qwerty layer
32 #define _CM 2 // Colemak layer
33 #define _MD 3 // Media Layer
34 #define _KP 4 // Keypad Layer
35
36 // Macro name shortcuts
37 #define DVORAK M(_DV)
38 #define QWERTY M(_QW)
39 #define COLEMAK M(_CM)
40
41 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42
43 [_DV] = {  // layer 0 : Dvorak
44 /*  
45  * ,--------------------------------------------------.           ,--------------------------------------------------.
46  * |   ]    |   1  |   2  |   3  |   4  |   5  | ESC  |           | ESC  |   6  |   7  |   8  |   9  |   0  |   [    |
47  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
48  * | Tab    |   '  |   ,  |   .  |   Y  |   Y  |      |           |      |   F  |   G  |   C  |   R  |   L  |   \    |
49  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
50  * | CapsLk |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
51  * |--------+------+------+------+------+------| _MD  |           | _KP  |------+------+------+------+------+--------|
52  * | LShift |   Z  |   X  |   C  |   V  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShift |
53  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
54  *   | LGUI |   `  |  INS | Left | Rght |                                       |  Up  |  Dn  |   /  |   =  | RGUI |
55  *   `----------------------------------'                                       `----------------------------------'
56  *                                        ,-------------.       ,-------------.
57  *                                        | LCtr | LAlt |       | Ralt | RCtr |
58  *                                 ,------|------|------|       |------+------+------.
59  *                                 |      |      | Home |       | PgUp |      |      |
60  *                                 | BkSp | Del  |------|       |------| Enter| Space|
61  *                                 |      |      | End  |       | PgDn |      |      |
62  *                                 `--------------------'       `--------------------'
63  *
64  */
65         // left hand
66         {KC_RBRC, KC_TAB,  KC_CAPS, KC_LSFT, KC_LGUI, KC_NO  },
67         {KC_1,    KC_QUOT, KC_A,    KC_SCLN, KC_GRV,  KC_END },
68         {KC_2,    KC_COMM, KC_O,    KC_Q,    KC_INS,  KC_DEL },
69         {KC_3,    KC_DOT,  KC_E,    KC_J,    KC_LEFT, KC_BSPC},
70         {KC_4,    KC_P,    KC_U,    KC_K,    KC_RGHT, KC_HOME},
71         {KC_5,    KC_Y,    KC_I,    KC_X,    KC_NO,   KC_LCTL},
72         {KC_ESC,  KC_NO,   KC_NO,   MO(_MD), KC_NO,   KC_LALT},
73
74         // right hand
75         {KC_ESC,  KC_NO,   KC_NO,   MO(_KP), KC_NO,   KC_RALT},
76         {KC_6,    KC_F,    KC_D,    KC_B,    KC_NO,   KC_RCTL},
77         {KC_7,    KC_G,    KC_H,    KC_M,    KC_UP,   KC_PGUP},
78         {KC_8,    KC_C,    KC_T,    KC_W,    KC_DOWN, KC_SPC },
79         {KC_9,    KC_R,    KC_N,    KC_V,    KC_SLSH, KC_ENT },
80         {KC_0,    KC_L,    KC_S,    KC_Z,    KC_EQL,  KC_PGDN},
81         {KC_LBRC, KC_BSLS, KC_MINS, KC_RSFT, KC_RGUI, KC_NO  }
82 },
83
84
85 [_QW] = {  // layer 1 : QWERTY
86 /* 
87  * ,--------------------------------------------------.           ,--------------------------------------------------.
88  * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |           | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
89  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
90  * | Tab    |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |   \    |
91  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
92  * | CapsLk |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
93  * |--------+------+------+------+------+------| _MD  |           | _KP  |------+------+------+------+------+--------|
94  * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift |
95  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
96  *   | LGUI |   `  |  INS | Left | Rght |                                       |  Up  |  Dn  |   [  |   ]  | RGUI |
97  *   `----------------------------------'                                       `----------------------------------'
98  *                                        ,-------------.       ,-------------.
99  *                                        | LCtr | LAlt |       | Ralt | RCtr |
100  *                                 ,------|------|------|       |------+------+------.
101  *                                 |      |      | Home |       | PgUp |      |      |
102  *                                 | BkSp | Del  |------|       |------| Enter| Space|
103  *                                 |      |      | End  |       | PgDn |      |      |
104  *                                 `--------------------'       `--------------------'
105  */
106         // left hand
107         {KC_EQL,  KC_TAB,  KC_CAPS, KC_LSFT, KC_LGUI, KC_NO  },
108         {KC_1,    KC_Q,    KC_A,    KC_Z,    KC_GRV,  KC_END },
109         {KC_2,    KC_W,    KC_S,    KC_X,    KC_INS,  KC_DEL },
110         {KC_3,    KC_E,    KC_D,    KC_C,    KC_LEFT, KC_BSPC},
111         {KC_4,    KC_R,    KC_F,    KC_V,    KC_RGHT, KC_HOME},
112         {KC_5,    KC_T,    KC_G,    KC_B,    KC_NO,   KC_LCTL},
113         {KC_ESC,  KC_NO,   KC_NO,   MO(_MD), KC_NO,   KC_LALT},
114
115         // right hand
116         {KC_ESC,  KC_NO,   KC_NO,   MO(_KP), KC_NO,   KC_RALT},
117         {KC_6,    KC_Y,    KC_H,    KC_N,    KC_NO,   KC_RCTL},
118         {KC_7,    KC_U,    KC_J,    KC_M,    KC_UP,   KC_PGUP},
119         {KC_8,    KC_I,    KC_K,    KC_COMM, KC_DOWN, KC_SPC },
120         {KC_9,    KC_O,    KC_L,    KC_DOT,  KC_LBRC, KC_ENT },
121         {KC_0,    KC_P,    KC_SCLN, KC_SLSH, KC_RBRC, KC_PGDN},
122         {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO  }
123   },
124
125
126 [_CM] = {  // layer 2 : Colemak
127 /* 
128  * ,--------------------------------------------------.           ,--------------------------------------------------.
129  * |   =    |   1  |   2  |   3  |   4  |   5  | ESC  |           | ESC  |   6  |   7  |   8  |   9  |   0  |   -    |
130  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
131  * | Tab    |   Q  |   W  |   F  |   P  |   G  |      |           |      |   J  |   L  |   U  |   Y  |   ;  |   \    |
132  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
133  * | BkSpc  |   A  |   R  |   S  |   T  |   D  |------|           |------|   H  |   N  |   E  |   I  |   O  |   '    |
134  * |--------+------+------+------+------+------| _MD  |           | _KP  |------+------+------+------+------+--------|
135  * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   K  |   M  |   ,  |   .  |   /  | RShift |
136  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
137  *   | LGUI |   `  |  INS | Left | Rght |                                       |  Up  |  Dn  |   [  |   ]  | RGUI |
138  *   `----------------------------------'                                       `----------------------------------'
139  *                                        ,-------------.       ,-------------.
140  *                                        | LCtr | LAlt |       | Ralt | RCtr |
141  *                                 ,------|------|------|       |------+------+------.
142  *                                 |      |      | Home |       | PgUp |      |      |
143  *                                 | BkSp | Del  |------|       |------| Enter| Space|
144  *                                 |      |      | End  |       | PgDn |      |      |
145  *                                 `--------------------'       `--------------------'
146  */
147         // left hand
148         {KC_EQL,  KC_TAB,  KC_BSPC, KC_LSFT, KC_LGUI, KC_NO  },
149         {KC_1,    KC_Q,    KC_A,    KC_Z,    KC_GRV,  KC_END },
150         {KC_2,    KC_W,    KC_R,    KC_X,    KC_INS,  KC_DEL },
151         {KC_3,    KC_F,    KC_S,    KC_C,    KC_LEFT, KC_BSPC},
152         {KC_4,    KC_P,    KC_T,    KC_V,    KC_RGHT, KC_HOME},
153         {KC_5,    KC_G,    KC_D,    KC_B,    KC_NO,   KC_LCTL},
154         {KC_ESC,  KC_NO,   KC_NO,   MO(_MD), KC_NO,   KC_LALT},
155
156         // right hand
157         {KC_ESC,  KC_NO,   KC_NO,   MO(_KP), KC_NO,   KC_RALT},
158         {KC_6,    KC_J,    KC_H,    KC_K,    KC_NO,   KC_RCTL},
159         {KC_7,    KC_L,    KC_N,    KC_M,    KC_UP,   KC_PGUP},
160         {KC_8,    KC_U,    KC_E,    KC_COMM, KC_DOWN, KC_SPC },
161         {KC_9,    KC_Y,    KC_I,    KC_DOT,  KC_LBRC, KC_ENT },
162         {KC_0,    KC_SCLN, KC_O,    KC_SLSH, KC_RBRC, KC_PGDN},
163         {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO  }
164   },
165
166
167 [_MD] = { // layer 3 : Media layer
168 /* 
169  * ,--------------------------------------------------.           ,--------------------------------------------------.
170  * | TEENSY |  F1  |  F2  |  F3  |  F4  |  F5  | F11  |           |  F12 |  F6  |  F7  |  F8  |  F9  |  F10 |        |
171  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
172  * |        |      | PrSc | ScLk | Paus |      |      |           |      |      | Mute | Vol- | Vol+ |      |        |
173  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
174  * |        |      |      |      |      |      |------|           |------| Stop | Prev | Play | Next | Sel  |        |
175  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
176  * |        |      |Dvorak|Qwerty|Colemk|      |      |           |      |      |      |      |      |      |        |
177  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
178  *   |      |      |      |      |      |                                       |      |      |      |      |      |
179  *   `----------------------------------'                                       `----------------------------------'
180  *                                        ,-------------.       ,-------------.
181  *                                        |      |      |       |      |      |
182  *                                 ,------|------|------|       |------+------+------.
183  *                                 |      |      |      |       |      |      |      |
184  *                                 |      |      |------|       |------|      |      |
185  *                                 |      |      |      |       |      |      |      |
186  *                                 `--------------------'       `--------------------'
187  */
188         // left hand
189         {RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO  },
190         {KC_F1,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
191         {KC_F2,   KC_PSCR, KC_TRNS, DVORAK,  KC_TRNS, KC_TRNS},
192         {KC_F3,   KC_SLCK, KC_TRNS, QWERTY,  KC_TRNS, KC_TRNS},
193         {KC_F4,   KC_PAUS, KC_TRNS, COLEMAK, KC_TRNS, KC_TRNS},
194         {KC_F5,   KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS},
195         {KC_F11,  KC_NO,   KC_NO,   KC_TRNS, KC_NO,   KC_TRNS},
196
197         // right hand
198         {KC_F12,  KC_NO,   KC_NO,   KC_TRNS, KC_NO,   KC_TRNS},
199         {KC_F6,   KC_TRNS, KC_MSTP, KC_TRNS, KC_NO,   KC_TRNS},
200         {KC_F7,   KC_MUTE, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS},
201         {KC_F8,   KC_VOLD, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS},
202         {KC_F9,   KC_VOLU, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS},
203         {KC_F10,  KC_TRNS, KC_MSEL, KC_TRNS, KC_TRNS, KC_TRNS},
204         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO  }
205   },
206
207
208 [_KP] = { // layer 4 : Keypad layer
209 /* 
210  * ,--------------------------------------------------.           ,--------------------------------------------------.
211  * | Power  |      |      |      |      |      |      |           |      |      | NmLk | KP / | KP * | KP - |        |
212  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
213  * | Sleep  |      |      |      |      |      |      |           |      |      | KP 7 | KP 8 | KP 9 | KP + |        |
214  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
215  * | Wake   |      |      |      |      |      |------|           |------|      | KP 4 | KP 5 | KP 6 | KP + |        |
216  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
217  * |        |      |      |      |      |      |      |           |      |      | KP 1 | KP 2 | KP 3 |KP Ent|        |
218  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
219  *   |      |      |      |      |      |                                       | KP 0 |      | KP . |KP Ent|      |
220  *   `----------------------------------'                                       `----------------------------------'
221  *                                        ,-------------.       ,-------------.
222  *                                        |      |      |       |      |      |
223  *                                 ,------|------|------|       |------+------+------.
224  *                                 |      |      |      |       |      |      |      |
225  *                                 |      |      |------|       |------|      |      |
226  *                                 |      |      |      |       |      |      |      |
227  *                                 `--------------------'       `--------------------'
228  */
229         // left hand
230         {KC_PWR,  KC_SLEP, KC_WAKE, KC_TRNS, KC_TRNS, KC_NO  },
231         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
232         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
233         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
234         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
235         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS},
236         {KC_TRNS, KC_NO,   KC_NO,   KC_TRNS, KC_NO,   KC_TRNS},
237
238         // right hand
239         {KC_TRNS, KC_NO,   KC_NO,   KC_TRNS, KC_NO,   KC_TRNS},
240         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS},
241         {KC_NLCK, KC_P7,   KC_P4,   KC_P1,   KC_P0,   KC_TRNS},
242         {KC_PSLS, KC_P8,   KC_P5,   KC_P2,   KC_NO,   KC_TRNS},
243         {KC_PAST, KC_P9,   KC_P6,   KC_P3,   KC_PDOT, KC_TRNS},
244         {KC_PMNS, KC_PPLS, KC_PPLS, KC_PENT, KC_PENT, KC_TRNS},
245         {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO,   KC_NO  }
246   },
247
248
249 };
250
251 const uint16_t PROGMEM fn_actions[] = {
252
253 };
254
255 void persistant_default_layer_set(uint16_t default_layer) {
256   eeconfig_update_default_layer(default_layer);
257   default_layer_set(default_layer);
258 }
259
260
261 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
262 {
263       switch(id) {
264         case _DV:
265           if (record->event.pressed) {
266             persistant_default_layer_set(1UL<<_DV);
267           }
268           break;
269         case _QW:
270           if (record->event.pressed) {
271             persistant_default_layer_set(1UL<<_QW);
272           }
273           break;
274         case _CM:
275           if (record->event.pressed) {
276             persistant_default_layer_set(1UL<<_CM);
277           }
278           break;
279       }
280     return MACRO_NONE;
281 };
282
283 // Runs just one time when the keyboard initializes.
284 void matrix_init_user(void) {
285
286 };
287
288 // Runs constantly in the background, in a loop.
289 void matrix_scan_user(void) {
290
291     uint8_t layer = biton32(layer_state);
292
293     ergodox_board_led_off();
294     ergodox_right_led_1_off();
295     ergodox_right_led_2_off();
296     ergodox_right_led_3_off();
297     switch (layer) {
298       // TODO: Make this relevant to the ErgoDox EZ.
299         case 1:
300             ergodox_right_led_1_on();
301             break;
302         case 2:
303             ergodox_right_led_2_on();
304             break;
305         default:
306             // none
307             break;
308     }
309
310 };