]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/kc60/keymaps/noroadsleft/keymap.c
Keymap: Add noroadsleft keymap for KC60 (#3876)
[qmk_firmware.git] / keyboards / kc60 / keymaps / noroadsleft / keymap.c
1 #include QMK_KEYBOARD_H
2 #include <sendstring_dvorak.h>
3 //#include <sendstring_colemak.h>
4 #include <print.h>
5
6
7 /**********************
8 ** LAYER DEFINITIONS **
9 **********************/
10 enum layers_keymap {
11   // BASE LAYERS
12   _QWERTY = 0,
13   _DVORAK,
14   _COLEMAK,
15   _MAC,
16   _QUAKE2,
17   _QUAKE2_DVORAK,
18   _QUAKE2_CONSOLE,
19
20   // FUNCTION LAYERS
21   _FUNCWIN,
22   _FUNCMAC,
23   _FUNCQ2,
24
25   // OTHER LAYERS
26   _NUMPAD,
27   _MACROS,
28   _SYSTEM
29 };
30
31 // LAYER SHORT CODES
32 #define _QW _QWERTY
33 #define _DV _DVORAK
34 #define _CM _COLEMAK
35 #define _MC _MAC
36 #define _Q2 _QUAKE2
37 #define _QD _QUAKE2_DVORAK
38 #define _QC _QUAKE2_CONSOLE
39 #define _FW _FUNCWIN
40 #define _FM _FUNCMAC
41 #define _FQ _FUNCQ2
42 #define _NP _NUMPAD
43 #define _MA _MACROS
44 #define _SY _SYSTEM
45
46
47 // KEYCODE DEFINITIONS
48 #define NO_CHNG KC_TRNS // Note for me for keys I need to leave as Pass-through
49
50 #define FW_CAPS LT(_FUNCWIN, KC_CAPS) // _FUNCWIN when held, Caps Lock when tapped
51 #define FM_CAPS LT(_FUNCMAC, KC_CAPS) // _FUNCMAC when held, Caps Lock when tapped
52 #define Q2_CAPS LT(_FUNCQ2, KC_CAPS)  // _FUNCQ2 when held, Caps Lock when tapped
53
54 #define WN_SALL LCTL(DV_A)       // Windows/Linux Select All
55 #define WN_UNDO LCTL(DV_Z)       // Windows/Linux Undo
56 #define WN_CUT  LCTL(DV_X)       // Windows/Linux Cut
57 #define WN_COPY LCTL(DV_C)       // Windows/Linux Copy
58 #define WN_PSTE LCTL(DV_V)       // Windows/Linux Paste
59
60 #define MC_PSCR LGUI(LSFT(KC_3)) // MacOS Print Screen (Command + Shift + 3)
61 #define MC_HOME LGUI(KC_LEFT)    // MacOS Home (Command + Left Arrow)
62 #define MC_END  LGUI(KC_RGHT)    // MacOS End (Command + Right Arrow)
63 #define MC_SALL LGUI(KC_A)       // MacOS Select All
64 //#define MC_UNDO LGUI(KC_Z)       // MacOS Undo // replaced by macro
65 #define MC_CUT  LGUI(KC_X)       // MacOS Cut
66 #define MC_COPY LGUI(KC_C)       // MacOS Copy
67 //#define MC_PSTE LGUI(KC_V)       // MacOS Paste // replaced by macro
68
69
70 // MACRO DEFINITIONS
71 enum custom_keycodes {
72   F_CAPS = SAFE_RANGE,
73   T_L3DED,
74   G_PUSH,
75   G_FTCH,
76   G_COMM,
77   G_RST,
78   G_C10R,
79   G_BRCH,
80   SIGNA,
81   GO_Q2,
82   Q2_ON,
83   Q2_OFF,
84   Q2_ESC,
85   Q2_GRV,
86   MC_UNDO,
87   MC_PSTE
88 };
89
90
91 // define modifiers
92 #define MODS_SHIFT_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
93 #define MODS_CTRL_MASK   (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
94 #define MODS_ALT_MASK    (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
95 #define MODS_GUI_MASK    (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))
96
97
98 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
99   uint8_t modifiers = get_mods();
100   switch(keycode) {
101     // these are our macros!
102     case F_CAPS:
103       /*
104         Objective: write a macro that checks the current layers that are
105         enabled, and activates the appropriate function layer.
106       */
107       if ( biton32(layer_state) == _MAC ) {
108         if (record->event.pressed) {
109           layer_on(_FUNCMAC);
110         } else {
111           layer_off(_FUNCMAC);
112         }
113       } else {
114         if (record->event.pressed) {
115           layer_on(_FUNCWIN);
116         } else {
117           layer_off(_FUNCWIN);
118         }
119       };
120       return false;
121       break;
122     case T_L3DED:
123       if (record->event.pressed) {
124         SEND_STRING("lavak3DED ");
125       };
126       return false;
127       break;
128     case G_PUSH:
129       if (record->event.pressed) {
130         SEND_STRING("git push origin ");
131       };
132       return false;
133       break;
134     case G_FTCH:
135       if (record->event.pressed) {
136         SEND_STRING("git fetch upstream");
137       };
138       return false;
139       break;
140     case G_COMM:
141       if (record->event.pressed) {
142         SEND_STRING("git commit -m \"\"" SS_TAP(X_LEFT));
143         layer_off(_MACROS);
144       };
145       return false;
146       break;
147     case G_RST:
148       if (record->event.pressed) {
149         SEND_STRING("git histt -n 10" SS_TAP(X_ENTER) "git reset --soft ");
150         layer_off(_MACROS);
151       };
152       return false;
153       break;
154     case G_C10R:
155       if (record->event.pressed) {
156         SEND_STRING("cf/");
157         layer_off(_MACROS);
158       };
159       return false;
160       break;
161     case G_BRCH:
162       if (record->event.pressed) {
163         SEND_STRING("$(git branch-name)");
164         layer_off(_MACROS);
165       };
166       return false;
167       break;
168     case SIGNA:
169       if (record->event.pressed) {
170         SEND_STRING("\\- @noroadsleft" SS_TAP(X_ENTER));
171         layer_off(_MACROS);
172       };
173       return false;
174       break;
175     case GO_Q2:
176       if (record->event.pressed) {
177         //default_layer_set(_QWERTY);
178         layer_move(_QWERTY); // TO(_QWERTY);
179         layer_on(_QUAKE2);
180         //layer_off(_SYSTEM);
181       };
182       return false;
183       break;
184     case Q2_ON:
185       if (record->event.pressed) {
186         SEND_STRING(SS_TAP(X_ENTER));
187         layer_on(_DVORAK);
188         layer_on(_QUAKE2_DVORAK);
189       };
190       return false;
191       break;
192     case Q2_OFF:
193       if (record->event.pressed) {
194         SEND_STRING(SS_TAP(X_ENTER));
195         layer_move(_QWERTY); // TO(_QWERTY);
196         layer_on(_QUAKE2);
197       };
198       return false;
199       break;
200     case Q2_ESC:
201       if (record->event.pressed) {
202         SEND_STRING(SS_TAP(X_ESCAPE));
203         layer_move(_QWERTY); // TO(_QWERTY);
204         layer_on(_QUAKE2);
205       };
206       return false;
207       break;
208     case Q2_GRV:
209       if (record->event.pressed) {
210         SEND_STRING(SS_TAP(X_GRAVE));
211         layer_on(_DVORAK);
212         layer_on(_QUAKE2_DVORAK);
213         layer_on(_QUAKE2_CONSOLE);
214       };
215       return false;
216       break;
217     case MC_UNDO:
218       if (record->event.pressed) {
219         if ( modifiers & MODS_SHIFT_MASK ) {
220           SEND_STRING( SS_DOWN(X_LSHIFT) SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) SS_UP(X_LSHIFT) );
221         } else {
222           SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) );
223         }
224       };
225       return false;
226       break;
227     case MC_PSTE:
228       if (record->event.pressed) {
229         if ( modifiers & MODS_SHIFT_MASK ) {
230           SEND_STRING( SS_DOWN(X_LSHIFT) SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_V) SS_UP(X_LALT) SS_UP(X_LGUI) SS_UP(X_LSHIFT) );
231         } else {
232           SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_V) SS_UP(X_LGUI) );
233         }
234       };
235       return false;
236       break;
237   } // switch()
238   return true;
239 };
240
241
242 // KEYMAPS
243 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
244
245   /****************
246   ** BASE LAYERS **
247   ****************/
248
249   /* QWERTY */
250   [_QWERTY] = LAYOUT_60_ansi(
251     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
252     KC_GESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, \
253     KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, \
254     FW_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,           \
255     KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,                   \
256     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, MO(_FW), KC_RCTL  \
257   ),
258
259   /* Dvorak */
260   [_DVORAK] = LAYOUT_60_ansi(
261     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
262     KC_GESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC, \
263     KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL,  KC_BSLS, \
264     FW_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, KC_ENT,           \
265     KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT,                   \
266     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, MO(_FW), KC_RCTL  \
267   ),
268
269   /* Colemak */
270   [_COLEMAK] = LAYOUT_60_ansi(
271     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
272     KC_GESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, \
273     KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \
274     FW_CAPS, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, KC_ENT,           \
275     KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,                   \
276     KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, MO(_FW), KC_RCTL  \
277   ),
278
279   /****************
280   ** OS OVERLAYS **
281   ****************/
282
283   /* Mac */
284   [_MAC] = LAYOUT_60_ansi(
285     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
286     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
287     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
288     FM_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          \
289     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   \
290     _______, _______, _______,                   _______,                                     _______, _______, MO(_FM), _______  \
291   ),
292
293   /*********************
294   ** QUAKE 2 OVERLAYS **
295   *********************/
296
297   /* Quake 2 */
298   [_QUAKE2] = LAYOUT_60_ansi(
299     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
300     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
301     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
302     Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ON,            \
303     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   \
304     _______, _______, _______,                   _______,                                     _______, _______, MO(_FQ), _______  \
305   ),
306
307   [_QUAKE2_DVORAK] = LAYOUT_60_ansi(
308     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
309     Q2_ESC,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
310     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
311     Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_OFF,           \
312     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   \
313     _______, _______, _______,                   _______,                                     _______, _______, MO(_FQ), _______  \
314   ),
315
316   [_QUAKE2_CONSOLE] = LAYOUT_60_ansi(
317     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
318     Q2_ESC,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
319     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
320     Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,           \
321     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   \
322     _______, _______, _______,                   _______,                                     _______, _______, MO(_FQ), _______  \
323   ),
324
325   /********************
326   ** FUNCTION LAYERS **
327   ********************/
328
329   /* Windows Fn layer */
330   [_FUNCWIN] = LAYOUT_60_ansi(
331     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
332     KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,  \
333     _______, KC_CALC, KC_APP,  _______, _______, _______, KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
334     NO_CHNG, WN_SALL, _______, _______, _______, _______, KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT,          \
335     _______, WN_UNDO, WN_CUT,  WN_COPY, WN_PSTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TG(_SY), _______,                   \
336     _______, _______, _______,                   TG(_NP),                                     _______, TG(_MA), NO_CHNG, _______  \
337   ),
338
339   /* MacOS Fn layer */
340   [_FUNCMAC] = LAYOUT_60_ansi(
341     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
342     KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,  \
343     _______, _______, _______, _______, _______, _______, KC_INS,  MC_HOME, KC_UP,   MC_END,  KC_PGUP, MC_PSCR, _______, _______, \
344     NO_CHNG, MC_SALL, _______, _______, _______, _______, KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______,          \
345     _______, MC_UNDO, MC_CUT,  MC_COPY, MC_PSTE, _______, _______, _______, _______, _______, TG(_SY), _______,                   \
346     _______, _______, _______,                   TG(_NP),                                     _______, _______, NO_CHNG, _______  \
347   ),
348
349   /* Quake 2 Fn layer */
350   [_FUNCQ2] = LAYOUT_60_ansi(
351     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
352     Q2_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,  \
353     _______, _______, _______, _______, _______, _______, KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
354     NO_CHNG, _______, _______, _______, _______, _______, KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_ENT,           \
355     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_SY), _______,                   \
356     _______, _______, _______,                   _______,                                     _______, _______, NO_CHNG, _______  \
357   ),
358
359   /*****************
360   ** OTHER LAYERS **
361   *****************/
362
363   /* Numpad layer */
364   [_NUMPAD] = LAYOUT_60_ansi(
365     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
366     _______, _______, _______, _______, _______, _______, _______, KC_P7,   KC_P8,   KC_P9,   _______, _______, _______, _______, \
367     _______, _______, _______, _______, KC_E,    KC_F,    _______, KC_P4,   KC_P5,   KC_P6,   KC_PAST, KC_PSLS, KC_PEQL, _______, \
368     _______, _______, _______, _______, KC_C,    KC_D,    _______, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, KC_PMNS, KC_PENT,          \
369     _______, _______, _______, _______, KC_A,    KC_B,    _______, KC_P0,   _______, KC_PDOT, _______, _______,                   \
370     _______, _______, _______,                   TG(_NP),                                     _______, _______, NO_CHNG, _______  \
371   ),
372
373   /* Macro layer */
374   [_MACROS] = LAYOUT_60_ansi(
375     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
376     TG(_MA), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
377     _______, _______, _______, G_PUSH,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
378     _______, _______, G_RST,   G_FTCH,  G_COMM,  _______, _______, _______, _______, T_L3DED, _______, _______, _______,          \
379     _______, _______, _______, G_C10R,  _______, G_BRCH,  SIGNA,   _______, _______, _______, _______, _______,                   \
380     _______, _______, _______,                   _______,                                     _______, _______, NO_CHNG, _______  \
381   ),
382
383   /* System layer */
384   [_SYSTEM] = LAYOUT_60_ansi(
385     //       2        3        4        5        6        7        8        9        10       11       12       13       14       15       16
386     TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2,   XXXXXXX, XXXXXXX, XXXXXXX, RESET,   XXXXXXX, DEBUG,   XXXXXXX, XXXXXXX, XXXXXXX, \
387     XXXXXXX, XXXXXXX, TG(_MC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
388     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          \
389     XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC,  BL_TOGG, BL_INC,  BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   \
390     XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX,                                     XXXXXXX, XXXXXXX, NO_CHNG, XXXXXXX  \
391   ),
392
393 };