aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornoroadsleft <18669334+noroadsleft@users.noreply.github.com>2018-09-30 22:06:29 -0700
committerDrashna Jaelre <drashna@live.com>2018-09-30 22:06:29 -0700
commita398d2cece1ee69006cf26e9a86fbf38e1acb0d1 (patch)
tree087735176c3164b5a9eb27938978d38a3e5a2c37
parenta6c85f1c2383616e875e7cdc6ce31873d6fb0ce3 (diff)
downloadqmk_firmware-a398d2cece1ee69006cf26e9a86fbf38e1acb0d1.tar.gz
qmk_firmware-a398d2cece1ee69006cf26e9a86fbf38e1acb0d1.zip
Keymap: Add noroadsleft keymap for KC60 (#3876)
* Add personal KC60 keymap * Update personal KC60 keymap * Keymap update 2018-05-30 01:53 UTC-7 * Added macro: T_PEEKR * Added macro for MacOS Select All; modified MacOS function layer * Added git branch-name macro * Added GitHub signature macro * Added readme files * Added Quake 2 and System layers * Refactored keymap readme * Refactored to add userspace files; added Colemak layer * Minor code cleanup; updated readme files * Reverted use of userspace Decided not to make use of the Userspace feature at this time. Reverted its addition, and updated the readme files where needed (they were linking to userspace files). * Updated per review comments by @drashna * Refactor buggy macros I'm still not sure these work properly * Fix Windows shortcuts * Fix Mac shortcuts, possibly Untested; still may be broken. * Remove PREVENT_STUCK_MODIFIERS from config.h Deprecated by #3107
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/config.h8
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/keymap.c393
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme.md29
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch1.md70
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch2.md26
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch3.md39
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch4.md54
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch5.md84
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_git.md56
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/rules.mk2
10 files changed, 761 insertions, 0 deletions
diff --git a/keyboards/kc60/keymaps/noroadsleft/config.h b/keyboards/kc60/keymaps/noroadsleft/config.h
new file mode 100644
index 000000000..e216d050b
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/config.h
@@ -0,0 +1,8 @@
1#pragma once
2
3#define PERMISSIVE_HOLD // https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold
4
5// Enable single-color backlighting
6#define BACKLIGHT_BREATHING
7#define BACKLIGHT_LEVELS 5
8#define BREATHING_PERIOD 4
diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c
new file mode 100644
index 000000000..f28f2144f
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c
@@ -0,0 +1,393 @@
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**********************/
10enum 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
71enum 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
98bool 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
243const 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};
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme.md b/keyboards/kc60/keymaps/noroadsleft/readme.md
new file mode 100644
index 000000000..737fdc06b
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme.md
@@ -0,0 +1,29 @@
1# @noroadsleft's KC60 keymap
2
3### Last updated: September 2, 2018, 1:03 PM UTC-0700
4
5![](https://i.imgur.com/tzhXQYI.jpg)
6
7I am a full-time Dvorak typist, and occasional semi-serious FPS gamer. The layers are oriented towards a mix of typing and gaming.
8
9
10----
11
12# Outline
13
14- [Base Layers](./readme_ch1.md)
15 - Layer 0: QWERTY `_QW`
16 - Layer 1: Hardware Dvorak `_DV`
17 - Layer 2: Hardware Colemak `_CM`
18- [OS Overlays](./readme_ch2.md)
19 - Layer 3: MacOS Overlay `_MC`
20- [Quake 2 Overlays](./readme_ch3.md)
21 - Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
22- [Function Layers](./readme_ch4.md)
23 - Layer 7: Windows Fn layer `_FW`
24 - Layer 8: MacOS-oriented Fn layer `_FM`
25 - Layer 9: Quake 2 Fn layer `_FQ`
26- [Other Layers](./readme_ch5.md)
27 - Layer 10: Numpad layer `_NP`
28 - Layer 11: Macro layer `_MA`
29 - Layer 12: System layer `_SY`
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md
new file mode 100644
index 000000000..bee0709f4
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md
@@ -0,0 +1,70 @@
1# @noroadsleft's KC60 keymap
2
3- [Table of Contents](./readme.md)
4 1. **Base Layers**
5 2. [**OS Overlays**](./readme_ch2.md)
6 3. [Quake 2 Overlays](./readme_ch3.md)
7 4. [Function Layers](./readme_ch4.md)
8 5. [Other Layers](./readme_ch5.md)
9
10### Last updated: September 2, 2018, 1:03 PM UTC-0700
11
12
13----
14
15## Layer 0: QWERTY - `_QW`
16
17Standard QWERTY layout, with three QMK features:
18
19- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held.
20- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped
21- The `Escape` key has been replaced with a `KC_GESC` `` ` ~ `` key when used with a `Fn` key or a `Shift` key
22
23###### For the rest of this readme, the physical location of keys will be referred to by their function in a US QWERTY layout.
24
25![QWERTY layer](https://i.imgur.com/2eVsefw.png)
26
27Keycode(s) Sent | Notes
28:---------------------------------------------------- | :----
29[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
30`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
31`MO(_FW)` | Opens the Windows Fn layer when held.
32
33
34----
35
36## Layer 1: Hardware Dvorak - `_DV`
37
38### Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`.
39
40A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak.
41
42![Hardware Dvorak layer](https://i.imgur.com/a6hYedB.png)
43
44Keycode(s) Sent | Notes
45:---------------------------------------------------- | :----
46[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
47`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
48`MO(_FW)` | Opens the Windows Fn layer when held.
49
50
51----
52
53## Layer 2: Hardware Colemak `_CM`
54
55### Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`.
56
57A hardware-based Colemak layout. Been thinking of trying it, so it's here.
58
59![Hardware Colemak layer](https://i.imgur.com/dbQ6HDW.png)
60
61Keycode(s) Sent | Notes
62:---------------------------------------------------- | :----
63[`KC_GESC`](https://docs.qmk.fm/#/feature_grave_esc) | `Esc` when tapped alone, `` ` ~ `` when used with a `Shift` or `GUI` key.
64`LT(_FW, KC_CAPS)` | Opens the Windows Fn layer when held; toggles Caps Lock when tapped.
65`MO(_FW)` | Opens the Windows Fn layer when held.
66
67
68----
69
70Next Chapter: [OS Overlays](./readme_ch2.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md
new file mode 100644
index 000000000..75a4fc524
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md
@@ -0,0 +1,26 @@
1# @noroadsleft's KC60 keymap
2
3- [Table of Contents](./readme.md)
4 1. [Base Layers](./readme_ch1.md)
5 2. **OS Overlays**
6 3. [Quake 2 Overlays](./readme_ch3.md)
7 4. [Function Layers](./readme_ch4.md)
8 5. [Other Layers](./readme_ch5.md)
9
10### Last updated: September 2, 2018, 1:03 PM UTC-0700
11
12
13----
14
15## Layer 3: Layer 3: MacOS Overlay `_MC`
16
17### Toggled by holding either `Fn` and tapping `/?` key, then tapping `W`.
18
19This layer overrides the `Fn` keys on whichever base layer is currently enabled, sending the keyboard to the MacOS-oriented Fn layer `_FM`, instead of the Windows Fn layer `_FW`.
20
21![MacOS Overlay](https://i.imgur.com/lxsEVpm.png)
22
23
24----
25
26Next Chapter: [Quake 2 Overlays](./readme_ch3.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md
new file mode 100644
index 000000000..80549ba5c
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md
@@ -0,0 +1,39 @@
1# @noroadsleft's KC60 keymap
2
3- [Table of Contents](./readme.md)
4 1. [Base Layers](./readme_ch1.md)
5 2. [OS Overlays](./readme_ch2.md)
6 3. **Quake 2 Overlays**
7 4. [Function Layers](./readme_ch4.md)
8 5. [Other Layers](./readme_ch5.md)
9
10### Last updated: September 2, 2018, 1:03 PM UTC-0700
11
12
13----
14
15## Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
16
17### Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$`
18
19These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method.
20
21I'm attempting to solve this by some creative use of QMK's macro feature. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L386), is a [macro](./keymap.c#L175-183) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that has some keycodes with some creative layer switching.
22
23When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L184-L191) I've created sends the keycode for `Enter`, then follows with enabling the Hardware Dvorak layer and its corresponding overlay. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` [keycode macro](./keymap.c#L192-L199) is sent, which sends the message, then the macro brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L200-L207) that cancels the sending of the message, and undoes the layers.
24
25I have been testing this configuration for a few months. Sometimes I end up still in Dvorak mode without any text input systems (in-game chat or the console) running, but it pretty much always happens when I'm focused on the game, so I don't know the cause yet.
26
27### Layer 4: Quake 2
28![Quake 2](https://i.imgur.com/WEZ9p2u.png)
29
30### Layer 5: Quake 2 Dvorak
31![Quake 2 Dvorak](https://i.imgur.com/rhugHN4.png)
32
33### Layer 6: Quake 2 Console
34![Quake 2 Console](https://i.imgur.com/dRTAjcy.png)
35
36
37----
38
39Next Chapter: [Function Layers](./readme_ch4.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md
new file mode 100644
index 000000000..f1b50846d
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch4.md
@@ -0,0 +1,54 @@
1# @noroadsleft's KC60 keymap
2
3- [Table of Contents](./readme.md)
4 1. [Base Layers](./readme_ch1.md)
5 2. [OS Overlays](./readme_ch2.md)
6 3. [Quake 2 Overlays](./readme_ch3.md)
7 4. **Function Layers**
8 5. [Other Layers](./readme_ch5.md)
9
10### Last updated: September 2, 2018, 1:03 PM UTC-0700
11
12
13----
14
15## Layer 7: Windows Fn layer - `_FW`
16
17### Accessed by holding either `Fn` key in Layer 0
18
19Arrows, Navigation keys (Insert, Home, Page Up, etc.), and Function keys are here. Also has keys for Calculator, Menu, Volume Control, and shortcuts for Select All, Undo, Cut, Copy, and Paste. Numpad Enter for when I'm working in Adobe Photoshop, because it treats Numpad Enter differently from the regular Enter key.
20
21![Windows Fn layer](https://i.imgur.com/XwCshcz.png)
22
23
24----
25
26## Layer 8: MacOS-oriented Fn layer - `_FM`
27
28### Accessed by holding either `Fn` key in Layer 1
29
30Based on my Windows Fn layer, but swaps a few functions for a MacOS environment. Arrow, Navigation, and Function keys are basically unchanged from Layer 2. This layer enables using either `Fn` key as a sort of simulated `Command` key, which I find easier to reach and use.
31
32![MacOS-oriented Fn layer](https://i.imgur.com/Z11kRu2.png)
33
34
35----
36
37## Layer 9: Quake 2 Fn layer - `_FQ`
38
39### Accessed by holding either `Fn` key while either Quake 2 overlay is active.
40
41Based on the Windows function layer, but removes some functions that are pointless to have while in the game.
42
43![Quake 2 Fn layer](https://i.imgur.com/9PG7yWb.png)
44
45Keycode(s) Sent | Notes
46:-------------------------------- | :----
47[`Q2_GRV`](./keymap.c#L208-L216) | Sends `KC_GRV`, then enables the Dvorak, Quake 2 Dvorak, and Quake 2 Console layers.
48
49
50
51
52----
53
54Next Chapter: [Other Layers](./readme_ch5.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch5.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch5.md
new file mode 100644
index 000000000..64102eb88
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch5.md
@@ -0,0 +1,84 @@
1# @noroadsleft's KC60 keymap
2
3- [Table of Contents](./readme.md)
4 1. [Base Layers](./readme_ch1.md)
5 2. [OS Overlays](./readme_ch2.md)
6 3. [Quake 2 Overlays](./readme_ch3.md)
7 4. [Function Layers](./readme_ch4.md)
8 5. **Other Layers**
9
10### Last updated: September 2, 2018, 1:03 PM UTC-0700
11
12
13----
14
15## Layer 10: Numpad layer - `_NP`
16
17### Accessed by holding either `Fn` key and tapping `Space`, from any of the Base Layers
18
19Puts a Numpad on the right-hand side of the keyboard. A through F included for hexadecimal input. Tapping `Space` returns to the previous Base Layer.
20
21![Numpad layer](https://i.imgur.com/fKVRkGH.png)
22
23
24----
25
26## Layer 11: Macro layer - `_MA`
27
28### Accessed by holding the `Fn` key and tapping the right-side `Win` key
29
30Has some macros that I use in Git, and some frequently-typed strings.
31
32Tapping `Esc` exits the Macro layer, if the macro used doesn't do it automatically.
33
34![Macro layer](https://i.imgur.com/wgbsluI.png)
35
36
37### Macros
38
39[![lavak3DED](https://static-cdn.jtvnw.net/emoticons/v1/821796/1.0)](./keymap.c#L122-L127)
40Inputs: `lavak3DED `
41Twitch emote for [a streamer I watch a lot](https://www.twitch.tv/lavak3_).
42
43[G_PUSH](./keymap.c#L128-L133)
44Inputs: `git push origin `
45Everything from here down is related to Git or GitHub.
46
47[G_FTCH](./keymap.c#L134-L139)
48Inputs: `git fetch upstream`
49
50[G_COMM](./keymap.c#L140-L146)
51Inputs: `git commit -m ""` `[Left]`
52Readies a `git commit` command, moves the cursor between the quotation marks, then disables the Macro layer.
53
54[G_RST](./keymap.c#L147-L153)
55Inputs: `git histt -n 10`, Enter, `git reset --soft `
56Runs a [git alias](./readme_git.md) that shows my last ten commits, then readies a `git reset --soft`. For when I commit something too soon. Disables the Macro layer when complete.
57
58[G_C10R](./keymap.c#L154-L160)
59Inputs: `cf/`
60A branch prefix I use for my current work in QMK. Disables the Macro layer when finished.
61
62[G_BRCH](./keymap.c#L161-L167)
63Inputs: `$(git branch-name)`
64A [git alias](./readme_git.md) that returns the name of the current branch. Disables the Macro layer when finished.
65
66[SIGNA](./keymap.c#L168-L174)
67Inputs: `\- @noroadsleft` `[Enter]`
68Sometimes on GitHub, I sign my comments. Types my GitHub name in Markdown syntax, and then taps the `Enter` key. Disables the Macro layer when finished.
69
70
71----
72
73### Layer 12: System layer - `_SY`
74
75#### Accessed by holding either `Fn` key and tapping the `/?` key
76
77This is where I change my keyboard function. Base layer select on `1` through `3`, Backlight controls on `C` through `N`, Reset on `8*`, Debug on `0)`.
78
79![System layer](https://i.imgur.com/95ovTBn.png)
80
81
82----
83
84[Back to the index.](./)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_git.md b/keyboards/kc60/keymaps/noroadsleft/readme_git.md
new file mode 100644
index 000000000..585d9c890
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_git.md
@@ -0,0 +1,56 @@
1# @noroadsleft's Git aliases
2
3[Return to the directory index.](./)
4
5```
6[alias]
7 # change branches
8 co = checkout
9 cob = checkout -b
10
11 # sync master
12 sync = "!f() { if [ $(git branch-name) != "master" ]; then git checkout master; fi; git pull upstream master; git push origin master; }; f"
13
14 # Return the last five commits on the branch, in a more compact format
15 hist = log --pretty=format:\"%C(yellow)%h%Creset %Cgreen%ad%Creset%n %w(100,0,3)%s%d [%an]%n\" --graph --date=iso-local -n 5
16 histm = log --pretty=format:\"%C(yellow)%h%Creset %w(100,0,3)%s%d [%an]\" --graph --date=iso-local -n 5
17 histt = log --pretty=format:\"%C(yellow)%h%Creset %<(88,trunc)%s [%an]\" --graph --date=iso-local -n 5
18 histb = log --reverse --pretty=format:\"- %<(98,trunc)%s [%an]\" --date=iso-local -n 5
19
20 # compact diff
21 df = "diff --compact-summary"
22
23 # Short-form status
24 st = "!git status --short"
25
26 # Returns the name of the current branch
27 branch-name = "!git rev-parse --abbrev-ref HEAD"
28
29 # short-form of the above
30 bn = "!git branch-name"
31
32 po = "push origin ($(git branch-name))"
33
34 # List the stashes
35 sl = "stash list"
36
37 # Show the contents of a numbered stash
38 # Syntax:
39 # git st-show <int>
40 st-show = "!f() { git stash show stash@{$1} -p; }; f"
41
42 # Apply a stash, without deleting it from the list of stashes
43 # Syntax:
44 # git st-copy <int>
45 st-copy = "!f() { git stash apply stash@{$1}; }; f"
46
47 # Unstage a file
48 unstage = "reset HEAD"
49
50 # Restore a file to the state it was in when checked out
51 restore = "checkout --"
52
53 # Compare local master repo to its upstream branch. If anything is returned, local branch has diverged from upstream.
54 cm = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master --compact-summary; }; f"
55 cml = "!f() { git fetch upstream master; git diff $(git branch-name) upstream/master; }; f"
56```
diff --git a/keyboards/kc60/keymaps/noroadsleft/rules.mk b/keyboards/kc60/keymaps/noroadsleft/rules.mk
new file mode 100644
index 000000000..9d78fc0fb
--- /dev/null
+++ b/keyboards/kc60/keymaps/noroadsleft/rules.mk
@@ -0,0 +1,2 @@
1# https://github.com/qmk/qmk_firmware/issues/3448#issuecomment-406636125
2EXTRAFLAGS += -flto