summaryrefslogtreecommitdiffstats
path: root/keyboards/kc60/keymaps
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/kc60/keymaps')
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/config.h16
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/keymap.c421
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme.md21
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch1.md15
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch2.md30
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch3.md37
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch4.md100
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/readme_ch5.md125
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/rules.mk6
9 files changed, 283 insertions, 488 deletions
diff --git a/keyboards/kc60/keymaps/noroadsleft/config.h b/keyboards/kc60/keymaps/noroadsleft/config.h
index 4490a3bb76..267407ded9 100644
--- a/keyboards/kc60/keymaps/noroadsleft/config.h
+++ b/keyboards/kc60/keymaps/noroadsleft/config.h
@@ -1,3 +1,19 @@
+/* Copyright 2018-2020 James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#pragma once
#define PERMISSIVE_HOLD // https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold
diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c
index 84aeb482d6..5ad100e0e7 100644
--- a/keyboards/kc60/keymaps/noroadsleft/keymap.c
+++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c
@@ -1,8 +1,23 @@
-#include QMK_KEYBOARD_H
-#include "version.h"
-#include <sendstring_dvorak.h>
-//#include <sendstring_colemak.h>
-#include <print.h>
+/* Copyright 2018-2020 James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "noroadsleft.h"
+#include "sendstring_dvorak.h"
+//#include "sendstring_colemak.h"
+#include "print.h"
/**********************
@@ -10,83 +25,33 @@
**********************/
enum layer_names {
// BASE LAYERS
- // SHORT CODES
- _QWERTY = 0,
- _QW = _QWERTY,
- _DVORAK,
- _DV = _DVORAK,
- _COLEMAK,
- _CM = _COLEMAK,
- _MAC,
- _MC = _MAC,
- _QUAKE2,
- _Q2 = _QUAKE2,
- _QUAKE2_DVORAK,
- _QD = _QUAKE2_DVORAK,
- _QUAKE2_CONSOLE,
- _QC = _QUAKE2_CONSOLE,
- // FUNCTION LAYERS
- _FUNCWIN,
- _FW = _FUNCWIN,
- _FUNCMAC,
- _FM = _FUNCMAC,
- _FUNCQ2,
- _FQ = _FUNCQ2,
+ _QW, // QWERTY
+ _DV, // Dvorak
+ _CM, // Colemak
+ // QUAKE 2 OVERLAY
+ _Q2, // Quake 2
+ // FUNCTION LAYER
+ _FN, // Function
// OTHER LAYERS
- _NUMPAD,
- _NP = _NUMPAD,
- _MACROS,
- _MA = _MACROS,
- _SYSTEM,
- _SY = _SYSTEM,
+ _NP, // Numpad
+ _MA, // Macros
+ _SY, // System
};
// KEYCODE DEFINITIONS
#define NO_CHNG KC_TRNS // Note for me for keys I need to leave as Pass-through
-#define FW_CAPS LT(_FUNCWIN, KC_CAPS) // _FUNCWIN when held, Caps Lock when tapped
-#define FM_CAPS LT(_FUNCMAC, KC_CAPS) // _FUNCMAC when held, Caps Lock when tapped
-#define Q2_CAPS LT(_FUNCQ2, KC_CAPS) // _FUNCQ2 when held, Caps Lock when tapped
-
-#define WN_SALL LCTL(DV_A) // Windows/Linux Select All
-#define WN_UNDO LCTL(DV_Z) // Windows/Linux Undo
-#define WN_CUT LCTL(DV_X) // Windows/Linux Cut
-#define WN_COPY LCTL(DV_C) // Windows/Linux Copy
-#define WN_PSTE LCTL(DV_V) // Windows/Linux Paste
+#define FN_CAPS LT(_FN, KC_CAPS) // Function Layer when held, Caps Lock when tapped
+#define Q2_CAPS LT(_FQ, KC_CAPS) // Quake 2 Function Layer when held, Caps Lock when tapped
#define CTL_GRV MT(MOD_LCTL, KC_GRV) // Left Control when held, Grave accent when tapped
-#define MC_PSCR LGUI(LSFT(KC_3)) // MacOS Print Screen (Command + Shift + 3)
-#define MC_HOME LGUI(KC_LEFT) // MacOS Home (Command + Left Arrow)
-#define MC_END LGUI(KC_RGHT) // MacOS End (Command + Right Arrow)
-#define MC_SALL LGUI(KC_A) // MacOS Select All
-//#define MC_UNDO LGUI(KC_Z) // MacOS Undo // replaced by macro
-#define MC_CUT LGUI(KC_X) // MacOS Cut
-#define MC_COPY LGUI(KC_C) // MacOS Copy
-//#define MC_PSTE LGUI(KC_V) // MacOS Paste // replaced by macro
-
// MACRO DEFINITIONS
enum custom_keycodes {
- F_CAPS = SAFE_RANGE,
- T_L3DED,
- G_PUSH,
- G_FTCH,
- G_COMM,
- G_RST,
- G_C10R,
- G_BRCH,
- SIGNA,
- GO_Q2,
- Q2_ON,
- Q2_OFF,
- Q2_ESC,
- Q2_GRV,
- MC_UNDO,
- MC_PSTE,
- NUBS_Z,
- VRSN
+ GO_Q2 = KEYMAP_SAFE_RANGE,
+ Q2_ENT
};
@@ -94,158 +59,90 @@ enum custom_keycodes {
** MODIFIER MASKS **
*******************/
#define MOD_MASK_RALT (MOD_BIT(KC_RALT))
+unsigned char q2InputMode = 0;
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
// these are our macros!
- case F_CAPS:
- /*
- * Objective: write a macro that checks the current layers that are
- * enabled, and activates the appropriate function layer.
- */
- if ( biton32(layer_state) == _MAC ) {
- if (record->event.pressed) {
- layer_on(_FUNCMAC);
- } else {
- layer_off(_FUNCMAC);
- }
- } else {
- if (record->event.pressed) {
- layer_on(_FUNCWIN);
- } else {
- layer_off(_FUNCWIN);
- }
- };
- return false;
- case T_L3DED:
- if (record->event.pressed) {
- SEND_STRING("lavak3DED ");
- };
- return false;
- case G_PUSH:
+ case GO_Q2:
if (record->event.pressed) {
- SEND_STRING("git push origin ");
+ //default_layer_set(_QW);
+ layer_move(_QW); // TO(_QW);
+ layer_on(_Q2);
+ //layer_off(_SY);
};
return false;
- case G_FTCH:
+ case Q2_ENT:
if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- clear_mods();
- SEND_STRING("git pull upstream ");
+ if (q2InputMode == 0) {
+ tap_code(KC_ENT);
+ q2InputMode = 1;
+ layer_on(_DV);
+ //layer_on(_Q2);
+ } else if (q2InputMode == 1) {
+ tap_code(KC_ENT);
+ q2InputMode = 0;
+ layer_off(_DV);
} else {
- SEND_STRING("git fetch upstream ");
+ tap_code(KC_ENT);
}
};
return false;
- case G_COMM:
+ case KC_ESC:
if (record->event.pressed) {
- SEND_STRING("git commit -m \"\"" SS_TAP(X_LEFT));
- layer_off(_MACROS);
- };
- return false;
- case G_BRCH:
- if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- clear_mods();
- SEND_STRING("master");
+ if (q2InputMode > 0) {
+ tap_code(KC_ESC);
+ q2InputMode = 0;
+ layer_off(_DV);
} else {
- SEND_STRING("$(git branch-name)");
+ tap_code(KC_ESC);
}
- layer_off(_MACROS);
- };
- return false;
- case SIGNA:
- if (record->event.pressed) {
- SEND_STRING("\\- @noroadsleft" SS_TAP(X_ENTER));
- layer_off(_MACROS);
- };
- return false;
- case GO_Q2:
- if (record->event.pressed) {
- //default_layer_set(_QWERTY);
- layer_move(_QWERTY); // TO(_QWERTY);
- layer_on(_QUAKE2);
- //layer_off(_SYSTEM);
- };
- return false;
- case Q2_ON:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_ENTER));
- layer_on(_DVORAK);
- layer_on(_QUAKE2_DVORAK);
- };
- return false;
- case Q2_OFF:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_ENTER));
- layer_move(_QWERTY); // TO(_QWERTY);
- layer_on(_QUAKE2);
};
return false;
- case Q2_ESC:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_ESCAPE));
- layer_move(_QWERTY); // TO(_QWERTY);
- layer_on(_QUAKE2);
- };
- return false;
- case Q2_GRV:
- if (record->event.pressed) {
- SEND_STRING(SS_TAP(X_GRAVE));
- layer_on(_DVORAK);
- layer_on(_QUAKE2_DVORAK);
- layer_on(_QUAKE2_CONSOLE);
- };
- return false;
- case MC_UNDO:
- if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- SEND_STRING( SS_DOWN(X_LSHIFT) SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) SS_UP(X_LSHIFT) );
- } else {
- SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_Z) SS_UP(X_LGUI) );
- }
- };
- return false;
- case MC_PSTE:
- if (record->event.pressed) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- 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) );
- } else {
- SEND_STRING( SS_DOWN(X_LGUI) SS_TAP(X_V) SS_UP(X_LGUI) );
+ case KC_GRV:
+ if (IS_LAYER_ON(_Q2) == true) {
+ if (record->event.pressed) {
+ if (q2InputMode == 0) {
+ tap_code(KC_GRV);
+ q2InputMode = 2;
+ layer_on(_DV);
+ } else if (q2InputMode == 1) {
+ tap_code(KC_GRV);
+ q2InputMode = 2;
+ } else {
+ tap_code(KC_GRV);
+ q2InputMode = 0;
+ layer_off(_DV);
+ }
}
};
return false;
- case NUBS_Z:
+ case KC_Z:
if (record->event.pressed) {
if ( get_mods() & MOD_MASK_RALT ) {
- SEND_STRING( SS_DOWN(X_NONUS_BSLASH) );
+ register_code(KC_NUBS);
} else {
- SEND_STRING( SS_DOWN(X_Z) );
+ register_code(KC_Z);
}
} else {
if ( get_mods() & MOD_MASK_RALT ) {
- SEND_STRING( SS_UP(X_NONUS_BSLASH) );
+ unregister_code(KC_NUBS);
} else {
- SEND_STRING( SS_UP(X_Z) );
+ unregister_code(KC_Z);
}
};
return false;
- case VRSN:
- if (record->event.pressed) {
- SEND_STRING( QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION );
- }
- return false;
case KC_1 ... KC_0:
if (record->event.pressed) {
if ( get_mods() & MOD_MASK_RALT ) {
- register_code( keycode + 0x3b );
+ register_code( keycode + 0x3B );
} else {
register_code( keycode );
}
} else {
if ( get_mods() & MOD_MASK_RALT ) {
- unregister_code( keycode + 0x3b );
+ unregister_code( keycode + 0x3B );
} else {
unregister_code( keycode );
}
@@ -279,47 +176,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
****************/
/* QWERTY */
- [_QWERTY] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- KC_ESC, 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, \
- 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, \
- 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, \
- KC_LSFT, NUBS_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FW), KC_RCTL \
+ [_QW] = LAYOUT_60_ansi(
+ KC_ESC, 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,
+ 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,
+ FN_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,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
),
/* Dvorak */
- [_DVORAK] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- KC_ESC, 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, \
- 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, \
- 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, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, \
- CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FW), KC_RCTL \
+ [_DV] = LAYOUT_60_ansi(
+ KC_ESC, 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,
+ 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,
+ FN_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,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
),
/* Colemak */
- [_COLEMAK] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- KC_ESC, 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, \
- 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, \
- 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, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FW), KC_RCTL \
- ),
-
- /****************
- ** OS OVERLAYS **
- ****************/
-
- /* Mac */
- [_MAC] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- FM_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, MO(_FM), _______ \
+ [_CM] = LAYOUT_60_ansi(
+ KC_ESC, 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,
+ 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,
+ FN_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,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
),
/*********************
@@ -327,65 +207,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*********************/
/* Quake 2 */
- [_QUAKE2] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ON, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
- ),
-
- [_QUAKE2_DVORAK] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- Q2_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_OFF, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
- ),
-
- [_QUAKE2_CONSOLE] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- Q2_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- Q2_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, MO(_FQ), _______ \
+ [_Q2] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______
),
/********************
** FUNCTION LAYERS **
********************/
- /* Windows Fn layer */
- [_FUNCWIN] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- 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, \
- _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
- NO_CHNG, WN_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT, \
- _______, WN_UNDO, WN_CUT, WN_COPY, WN_PSTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TG(_SY), _______, \
- _______, _______, _______, TG(_NP), _______, TG(_MA), NO_CHNG, _______ \
- ),
-
- /* MacOS Fn layer */
- [_FUNCMAC] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- 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, \
- _______, _______, _______, _______, _______, _______, KC_INS, MC_HOME, KC_UP, MC_END, KC_PGUP, MC_PSCR, _______, _______, \
- NO_CHNG, MC_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, \
- _______, MC_UNDO, MC_CUT, MC_COPY, MC_PSTE, _______, _______, _______, _______, _______, TG(_SY), _______, \
- _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ \
- ),
-
- /* Quake 2 Fn layer */
- [_FUNCQ2] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- 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, \
- _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, \
- NO_CHNG, _______, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_ENT, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_SY), _______, \
- _______, _______, _______, _______, _______, _______, NO_CHNG, _______ \
+ /* Fn layer */
+ [_FN] = LAYOUT_60_ansi(
+ 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,
+ _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS,
+ NO_CHNG, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PENT,
+ _______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TG(_SY), _______,
+ _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______
),
/*****************
@@ -393,33 +233,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*****************/
/* Numpad layer */
- [_NUMPAD] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, \
- _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, \
- _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, \
- _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, \
- _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______ \
+ [_NP] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______,
+ _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT,
+ _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______,
+ _______, _______, _______, TG(_NP), _______, _______, NO_CHNG, _______
),
/* Macro layer */
- [_MACROS] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- TG(_MA), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______, \
- _______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP, \
- _______, _______, _______, G_FTCH, G_COMM, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, G_BRCH, SIGNA, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, NO_CHNG, _______ \
+ [_MA] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______,
+ _______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP,
+ _______, _______, _______, G_FTCH, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, G_BRCH, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NO_CHNG, _______
),
/* System layer */
- [_SYSTEM] = LAYOUT_60_ansi(
- // 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, \
- XXXXXXX, XXXXXXX, TG(_MC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NO_CHNG, XXXXXXX \
+ [_SY] = LAYOUT_60_ansi(
+ TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX,
+ XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NO_CHNG, XXXXXXX
),
};
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme.md b/keyboards/kc60/keymaps/noroadsleft/readme.md
index 6a7ad6f65e..59f4386ee3 100644
--- a/keyboards/kc60/keymaps/noroadsleft/readme.md
+++ b/keyboards/kc60/keymaps/noroadsleft/readme.md
@@ -27,15 +27,12 @@ Descriptions of the physical locations of keys will use the key's function in a
- Layer 0: QWERTY `_QW`
- Layer 1: Hardware Dvorak `_DV`
- Layer 2: Hardware Colemak `_CM`
-- [OS Overlays](./readme_ch2.md)
- - Layer 3: MacOS Overlay `_MC`
-- [Quake 2 Overlays](./readme_ch3.md)
- - Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
-- [Function Layers](./readme_ch4.md)
- - Layer 7: Windows Fn layer `_FW`
- - Layer 8: MacOS-oriented Fn layer `_FM`
- - Layer 9: Quake 2 Fn layer `_FQ`
-- [Other Layers](./readme_ch5.md)
- - Layer 10: Numpad layer `_NP`
- - Layer 11: Macro layer `_MA`
- - Layer 12: System layer `_SY`
+- [Quake 2 Overlays](./readme_ch2.md)
+ - Layers 3, 4 and 5: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
+- [Function Layers](./readme_ch3.md)
+ - Layer 6: Fn layer `_FN`
+ - Layer 7: Quake 2 Fn layer `_FQ`
+- [Other Layers](./readme_ch4.md)
+ - Layer 8: Numpad layer `_NP`
+ - Layer 9: Macro layer `_MA`
+ - Layer 10: System layer `_SY`
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md
index 3872232f5a..87fe99c655 100644
--- a/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch1.md
@@ -2,10 +2,9 @@
- [Table of Contents](./readme.md)
1. **Base Layers**
- 2. [**OS Overlays**](./readme_ch2.md)
- 3. [Quake 2 Overlays](./readme_ch3.md)
- 4. [Function Layers](./readme_ch4.md)
- 5. [Other Layers](./readme_ch5.md)
+ 2. [Quake 2 Overlays](./readme_ch2.md)
+ 3. [Function Layers](./readme_ch3.md)
+ 4. [Other Layers](./readme_ch4.md)
----
@@ -19,7 +18,7 @@ Standard QWERTY layout, with four QMK features:
- 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
- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is <code>&#96; ~</code> when tapped and `Ctrl` when held.
-![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/layer_00.png)
+![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/QWERTY.png)
----
@@ -30,7 +29,7 @@ Standard QWERTY layout, with four QMK features:
A 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.
-![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/layer_01.png)
+![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Dvorak.png)
----
@@ -41,9 +40,9 @@ A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared com
A hardware-based Colemak layout. Been thinking of trying it, so it's here.
-![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/layer_02.png)
+![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Colemak.png)
----
-Next Chapter: [OS Overlays](./readme_ch2.md)
+Next Chapter: [Quake 2 Overlays](./readme_ch2.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md
index 76ab510153..427bebb9a1 100644
--- a/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch2.md
@@ -2,23 +2,35 @@
- [Table of Contents](./readme.md)
1. [Base Layers](./readme_ch1.md)
- 2. **OS Overlays**
- 3. [Quake 2 Overlays](./readme_ch3.md)
- 4. [Function Layers](./readme_ch4.md)
- 5. [Other Layers](./readme_ch5.md)
+ 2. **Quake 2 Overlays**
+ 3. [Function Layers](./readme_ch3.md)
+ 4. [Other Layers](./readme_ch4.md)
----
-## Layer 3: Layer 3: MacOS Overlay `_MC`
+## Layers 3, 4 and 5: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
-### Toggled by holding either `Fn` and tapping `/?` key, then tapping `W`.
+### Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$`
-This 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`.
+These 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.
-![MacOS Overlay](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/layer_03.png)
+I'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#L387), is a [macro](./keymap.c#L101-L108) 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.
+
+When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L109-L115) 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#L116-L122) 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#L123-L129) that cancels the sending of the message, and undoes the layers.
+
+I 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.
+
+### Layer 3: Quake 2
+![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202.png)
+
+### Layer 4: Quake 2 Dvorak
+![Quake 2 Dvorak](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Dvorak.png)
+
+### Layer 5: Quake 2 Console
+![Quake 2 Console](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/Quake%202%20Console.png)
----
-Next Chapter: [Quake 2 Overlays](./readme_ch3.md)
+Next Chapter: [Function Layers](./readme_ch3.md)
diff --git a/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md b/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md
index 93c43fbf91..57c0bd4900 100644
--- a/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md
+++ b/keyboards/kc60/keymaps/noroadsleft/readme_ch3.md
@@ -2,36 +2,39 @@
- [Table of Contents](./readme.md)
1. [Base Layers](./readme_ch1.md)
- 2. [OS Overlays](./readme_ch2.md)
- 3. **Quake 2 Overlays**
- 4. [Function Layers](./readme_ch4.md)
- 5. [Other Layers](./readme_ch5.md)
+ 2. [Quake 2 Overlays](./readme_ch2.md)
+ 3. **Function Layers**
+ 4. [Other Layers](./readme_ch4.md)
----
-## Layers 4, 5 and 6: Quake 2 `_Q2`, Quake 2 Dvorak `_QD`, and Quake 2 Console `_QC`
+## Layer 6: Fn layer - `_FN`
-### Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$`
+### Accessed by holding either `Fn` key from any base layer
-These 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.
+Arrows, 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.
-I'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#L418), is a [macro](./keymap.c#L164-L171) 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 som