aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/ergodox_infinity/keymaps/halfkeyboard/keymap.c356
1 files changed, 356 insertions, 0 deletions
diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/keymap.c b/keyboards/ergodox_infinity/keymaps/halfkeyboard/keymap.c
new file mode 100644
index 000000000..0bf0a86a6
--- /dev/null
+++ b/keyboards/ergodox_infinity/keymaps/halfkeyboard/keymap.c
@@ -0,0 +1,356 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#define QWERTY 0 // qwerty layer
7#define HALFQWERTY 1 // mirrored qwerty layer
8#define DVORAK 2 // dvorak layer
9#define HALFDVORAK 3 // mirrored dvorak layer
10#define SYMB 5 // symbols
11#define MDIA 6 // media keys
12
13enum custom_keycodes {
14 PLACEHOLDER = SAFE_RANGE, // can always be here
15 EPRM,
16 VRSN,
17 RGB_SLD
18};
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21/* Keymap 0: qwerty
22 *
23 * ,--------------------------------------------------. ,--------------------------------------------------.
24 * | ESC | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | BSPC |
25 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
26 * | TAB | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
27 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
28 * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; |ENTER |
29 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
30 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
31 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
32 * |LCTRL|ALT |CTL-TAB|CTLShTab| LGui| | RGui| UP | DOWN | ALT | RCTRL |
33 * `----------------------------------' `----------------------------------'
34 * ,-------------. ,-------------.
35 * | Alt | LGui | | RGui |Alt |
36 * ,------|------|------| |------+--------+------.
37 * | | | Home | | PgUp | | |
38 * | Space|Backsp|------| |------| Tab |Enter |
39 * |mirror|ace | End | | PgDn | |mirror|
40 * `--------------------' `----------------------'
41 */
42// If it accepts an argument (i.e, is a function), it doesn't need KC_.
43// Otherwise, it needs KC_*
44[QWERTY] = LAYOUT_ergodox( // layer 0 : default
45 // left hand
46 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
47 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
48 KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
49 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, BL_ON,
50 KC_LCTRL, KC_LALT, LCTL(KC_TAB), LCTL(LSFT(KC_TAB)), KC_LGUI,
51 KC_LALT, TG(DVORAK),
52 KC_HOME,
53 LT(HALFQWERTY, KC_SPACE),KC_BSPC,KC_END,
54 // right hand
55 KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
56 TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
57 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
58 MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, KC_SLASH, KC_RSFT,
59 KC_RGUI, KC_UP,KC_DOWN,KC_RALT, KC_RCTRL,
60 TG(DVORAK), KC_RALT,
61 KC_PGUP,
62 KC_PGDN,KC_TAB, LT(HALFQWERTY, KC_ENT)
63 ),
64/* Keymap 1: mirrored qwerty
65 *
66 * ,--------------------------------------------------. ,--------------------------------------------------.
67 * | BSPC | 0 | 9 | 8 | 7 | 6 | LEFT | | RIGHT| 5 | 4 | 3 | 2 | 1 | ESC |
68 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
69 * | \ | P | O | I | U | Y | L1 | | L1 | T | R | E | W | Q | TAB |
70 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
71 * | ENTER | ; | L | K | J | H |------| |------| G | F | D | S | A | BSPC |
72 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
73 * | LShift | / | . | , | M | N | | | | B | V | C | X | Z | RShift |
74 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
75 * |LCTRL|ALT |CTL-TAB|CTLShTab| LGui| | RGui| UP | DOWN | ALT | RCTRL |
76 * `----------------------------------' `----------------------------------'
77 * ,-------------. ,-------------.
78 * | Alt | LGui | | RGui |Alt |
79 * ,------|------|------| |------+--------+------.
80 * | | | Home | | PgUp | | |
81 * | Space|Backsp|------| |------| Tab |Enter |
82 * |mirror|ace | End | | PgDn | |mirror|
83 * `--------------------' `----------------------'
84 */
85// If it accepts an argument (i.e, is a function), it doesn't need KC_.
86// Otherwise, it needs KC_*
87[HALFQWERTY] = LAYOUT_ergodox( // layer 0 : default
88 // left hand
89 KC_BSPC, KC_0, KC_9, KC_8, KC_7, KC_6, KC_LEFT,
90 KC_TAB, KC_P, KC_O, KC_I, KC_U, KC_Y, TG(SYMB),
91 KC_BSPC, KC_SCLN, KC_L, KC_K, KC_J, KC_H,
92 KC_LSFT, KC_SLASH, KC_DOT, KC_COMM,KC_M, KC_N, KC_TRANSPARENT,
93 KC_LCTRL, KC_LALT, LCTL(KC_TAB), LCTL(LSFT(KC_TAB)), KC_LGUI,
94 KC_LALT, KC_TRANSPARENT,
95 KC_HOME,
96 KC_TRANSPARENT,KC_BSPC,KC_END,
97 // right hand
98 KC_RGHT, KC_5, KC_4, KC_3, KC_2, KC_1, KC_BSPC,
99 TG(SYMB), KC_T, KC_R, KC_E, KC_W, KC_Q, KC_BSLS,
100 KC_G, KC_F, KC_D, KC_S, KC_A, KC_ENT,
101 MEH_T(KC_NO),KC_B, KC_V, KC_C, KC_X, KC_Z, KC_RSFT,
102 KC_RGUI, KC_UP,KC_DOWN,KC_RALT, KC_RCTRL,
103 KC_TRANSPARENT, KC_RALT,
104 KC_PGUP,
105 KC_PGDN,KC_TAB, KC_TRANSPARENT
106 ),
107/* Keymap 3: dvorak
108 *
109 * ,--------------------------------------------------. ,--------------------------------------------------.
110 * | ESC | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | BSPC |
111 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
112 * | TAB | ' | , | . | P | Y | L1 | | L1 | F | G | C | R | L | / |
113 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
114 * | BkSp | A | O | E | U | I |------| |------| D | H | T | S | - |ENTER |
115 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
116 * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift |
117 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
118 * |LCTRL|ALT |CTL-TAB|CTLShTab| LGui| | RGui| UP | DOWN | ALT | RCTRL |
119 * `----------------------------------' `----------------------------------'
120 * ,-------------. ,-------------.
121 * | Alt | LGui | | RGui |Alt |
122 * ,------|------|------| |------+--------+------.
123 * | | | Home | | PgUp | | |
124 * | Space|Backsp|------| |------| Tab |Enter |
125 * |mirror|ace | End | | PgDn | |mirror|
126 * `--------------------' `----------------------'
127 */
128// If it accepts an argument (i.e, is a function), it doesn't need KC_.
129// Otherwise, it needs KC_*
130[DVORAK] = LAYOUT_ergodox( // layer 0 : default
131 // left hand
132 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
133 KC_TAB, KC_QUOTE, KC_COMM,KC_DOT, KC_P, KC_Y, TG(SYMB),
134 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
135 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO),
136 KC_LCTRL, KC_LALT, LCTL(KC_TAB), LCTL(LSFT(KC_TAB)), KC_LGUI,
137 KC_LALT, KC_TRANSPARENT,
138 KC_HOME,
139 LT(HALFDVORAK, KC_SPACE),KC_BSPC,KC_END,
140 // right hand
141 KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
142 TG(SYMB), KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS,
143 KC_D, KC_H, KC_T, KC_S, KC_MINUS, KC_ENT,
144 MEH_T(KC_NO),KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
145 KC_RGUI, KC_UP,KC_DOWN,KC_RALT, KC_RCTRL,
146 KC_TRANSPARENT, KC_RALT,
147 KC_PGUP,
148 KC_PGDN,KC_TAB, LT(HALFDVORAK, KC_ENT)
149 ),
150/* Keymap 3: mirrored dvorak
151 *
152 * ,--------------------------------------------------. ,--------------------------------------------------.
153 * | BSPC | 0 | 9 | 8 | 7 | 6 | LEFT | | RIGHT| 5 | 4 | 3 | 2 | 1 | ESC |
154 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
155 * | TAB | L | R | C | G | F | L1 | | L1 | Y | P | . | , | ' | / |
156 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
157 * | BkSp | - | S | T | H | D |------| |------| I | U | E | O | A |ENTER |
158 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
159 * | LShift | Z | V | W | M | B | | | | X | K | J | Q | ; | RShift |
160 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
161 * |LCTRL|ALT |CTL-TAB|CTLShTab| LGui| | RGui| UP | DOWN | ALT | RCTRL |
162 * `----------------------------------' `----------------------------------'
163 * ,-------------. ,-------------.
164 * | Alt | LGui | | RGui |Alt |
165 * ,------|------|------| |------+--------+------.
166 * | | | Home | | PgUp | | |
167 * | Space|Backsp|------| |------| Tab |Enter |
168 * |mirror|ace | End | | PgDn | |mirror|
169 * `--------------------' `----------------------'
170 */
171// If it accepts an argument (i.e, is a function), it doesn't need KC_.
172// Otherwise, it needs KC_*
173[HALFDVORAK] = LAYOUT_ergodox( // layer 0 : default
174 // left hand
175 KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
176 KC_SLASH, KC_L, KC_R, KC_C, KC_G, KC_F, TG(SYMB),
177 KC_ENT, KC_S, KC_N, KC_T, KC_H, KC_D,
178 KC_LSFT, KC_Z, KC_V, KC_W, KC_M, KC_B, ALL_T(KC_NO),
179 KC_LCTRL, KC_LALT, LCTL(KC_TAB), LCTL(LSFT(KC_TAB)), KC_LGUI,
180 KC_LALT, KC_TRANSPARENT,
181 KC_HOME,
182 KC_TRANSPARENT,KC_BSPC,KC_END,
183 // right hand
184 KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC,
185 TG(SYMB), KC_Y, KC_P, KC_DOT, KC_COMM,KC_P, KC_TAB,
186 KC_I, KC_U, KC_E, KC_O, KC_A, KC_ENT,
187 MEH_T(KC_NO),KC_X, KC_K, KC_J, KC_Q, KC_SCLN, KC_RSFT,
188 KC_RGUI, KC_UP,KC_DOWN,KC_RALT, KC_RCTRL,
189 KC_TRANSPARENT, KC_RALT,
190 KC_PGUP,
191 KC_PGDN,KC_TAB, KC_TRANSPARENT
192 ),
193/* Keymap 5: Symbol Layer
194 *
195 * ,---------------------------------------------------. ,--------------------------------------------------.
196 * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
197 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
198 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
199 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
200 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
201 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
202 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
203 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
204 * | EPRM | | | | | | | . | 0 | = | |
205 * `-----------------------------------' `----------------------------------'
206 * ,-------------. ,-------------.
207 * |Animat| | |Toggle|Solid |
208 * ,------|------|------| |------+------+------.
209 * |Bright|Bright| | | |Hue- |Hue+ |
210 * |ness- |ness+ |------| |------| | |
211 * | | | | | | | |
212 * `--------------------' `--------------------'
213 */
214// SYMBOLS
215[SYMB] = LAYOUT_ergodox(
216 // left hand
217 VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
218 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
219 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
220 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
221 EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
222 RGB_MOD,KC_TRNS,
223 KC_TRNS,
224 RGB_VAD,RGB_VAI,KC_TRNS,
225 // right hand
226 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
227 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
228 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
229 KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
230 KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
231 RGB_TOG, RGB_SLD,
232 KC_TRNS,
233 KC_TRNS, RGB_HUD, RGB_HUI
234),
235/* Keymap 6: Media and mouse keys
236 *
237 * ,--------------------------------------------------. ,--------------------------------------------------.
238 * | | | | | | | | | | | | | | | |
239 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
240 * | | | | MsUp | | | | | | | | | | | |
241 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
242 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
243 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
244 * | | | | | | | | | | | | Prev | Next | | |
245 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
246 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
247 * `----------------------------------' `----------------------------------'
248 * ,-------------. ,-------------.
249 * | | | | | |
250 * ,------|------|------| |------+------+------.
251 * | | | | | | |Brwser|
252 * | | |------| |------| |Back |
253 * | | | | | | | |
254 * `--------------------' `--------------------'
255 */
256// MEDIA AND MOUSE
257[MDIA] = LAYOUT_ergodox(
258 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
259 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
260 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
261 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
262 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
263 KC_TRNS, KC_TRNS,
264 KC_TRNS,
265 KC_TRNS, KC_TRNS, KC_TRNS,
266 // right hand
267 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
268 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
269 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
270 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
271 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
272 KC_TRNS, KC_TRNS,
273 KC_TRNS,
274 KC_TRNS, KC_TRNS, KC_WBAK
275),
276};
277
278const uint16_t PROGMEM fn_actions[] = {
279 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
280
281};
282
283const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
284{
285 // MACRODOWN only works in this function
286 switch(id) {
287 case 0:
288 if (record->event.pressed) {
289 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
290 }
291 break;
292 case 1:
293 if (record->event.pressed) { // For resetting EEPROM
294 eeconfig_init();
295 }
296 break;
297 }
298 return MACRO_NONE;
299};
300
301bool process_record_user(uint16_t keycode, keyrecord_t *record) {
302 switch (keycode) {
303 // dynamically generate these.
304 case EPRM:
305 if (record->event.pressed) {
306 eeconfig_init();
307 }
308 return false;
309 break;
310 case VRSN:
311 if (record->event.pressed) {
312 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
313 }
314 return false;
315 break;
316 case RGB_SLD:
317 if (record->event.pressed) {
318 #ifdef RGBLIGHT_ENABLE
319 rgblight_mode(1);
320 #endif
321 }
322 return false;
323 break;
324 }
325 return true;
326}
327
328// Runs just one time when the keyboard initializes.
329void matrix_init_user(void) {
330
331};
332
333
334// Runs constantly in the background, in a loop.
335void matrix_scan_user(void) {
336
337 uint8_t layer = biton32(layer_state);
338
339 ergodox_board_led_off();
340 ergodox_right_led_1_off();
341 ergodox_right_led_2_off();
342 ergodox_right_led_3_off();
343 switch (layer) {
344 // TODO: Make this relevant to the ErgoDox EZ.
345 case 1:
346 ergodox_right_led_1_on();
347 break;
348 case 2:
349 ergodox_right_led_2_on();
350 break;
351 default:
352 // none
353 break;
354 }
355
356};