Переглянути джерело

Keymap: Revamp replicaJunction keymaps (#3589)

* Revamp replicaJunction keymaps

Updates both the replicaJunction Ergodox and Atreus keymaps and moves
most of the logic into a new user directory.

* Cleanup as requested in #3589

* Slightly increased TAPPING_TERM

* Fixed typo in #pragma once

* Fix TAPPING_TERM redefined in config.h

* Add include of replicaJunction.h

Due to the tap dance references, without this include, I was getting
compiler errors about both internal QMK items like
`qk_tap_dance_state_t` and constants defined in my replicaJunction.h
file like TD_LAYER_TOGGLE.

Also remove some commented-out code that defined an enum which has since
moved to replicaJunction.h.
Joshua T 7 роки тому
батько
коміт
c19d949b72

+ 9 - 92
keyboards/atreus/keymaps/replicaJunction/config.h

@@ -1,94 +1,11 @@
-/*
-Config file - Atreus QMK with replicaJunction layout
+#pragma once
 
-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.
+// Layer definitions
 
-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/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6060
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    Technomancy
-#define PRODUCT         Atreus
-#define DESCRIPTION     q.m.k. keyboard firmware for Atreus
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 11
-
-// Change this to how you wired your keyboard
-// COLS: Left to right, ROWS: Top to bottom
-#if defined(ATREUS_ASTAR)
-#   define MATRIX_ROW_PINS { D0, D1, D3, D2 }
-#   define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
-#   define UNUSED_PINS
-#elif defined(ATREUS_TEENSY2)
-#   define MATRIX_ROW_PINS { D0, D1, D2, D3 }
-#   define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 }
-#   define UNUSED_PINS
-#endif
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-//#define BACKLIGHT_LEVELS 3
-
-/* Set 0 if debouncing isn't needed */
-// Default: 5
-#define DEBOUNCING_DELAY 6
-
-// I don't have any locking keys, so I don't need these features
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-//#define LOCKING_RESYNC_ENABLE
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* Prevent modifiers from sticking when switching layers */
-#define PREVENT_STUCK_MODIFIERS
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-#endif
+#define L_COLEMAK 0
+#define L_NUM     1
+#define L_EXTEND  2
+#define L_FUNC    3
+#define L_LL_R    4
+#define L_LL_E    5
+#define L_LL_I    6

+ 63 - 197
keyboards/atreus/keymaps/replicaJunction/keymap.c

@@ -1,212 +1,78 @@
 /*
  * Keyboard: Atreus
  * Keymap:   replicaJunction
- * Version:  0.4
- *
- * This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez.
- * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox. I now
- * have both keyboards, so I've designed these layouts in an effort to make switching between the
- * two as easy as possible.
- *
- * Clearly, the Atreus is the limiting factor in this equation, so I've taken heavy advantage of
- * function and dual-role keys.
- *
- * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
- * here: https://colemakmods.github.io/mod-dh/
+ * Version:  2.1
  */
 
 #include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-
-// Note that whatever is set as layer 0 will be the default layer of the keyboard.
-
-#define _CO 0 // Colemak
-#define _QW 1 // QWERTY
-#define _GA 2 // Gaming
-#define _EX 3 // Extend
-#define _NU 4 // Numpad
-#define _FN 5 // Function
-
-// Some quick aliases, just to make it look pretty
-#define _______ KC_TRNS
-#define KCX_CA  LCTL(KC_LALT)
-#define KCX_CS  LCTL(KC_LSFT)
-#define KCX_CSA LCTL(LSFT(KC_LALT))
-#define KCX_LST LSFT(KC_TAB)
-#define KX_COPY LCTL(KC_C)
-#define KX_CUT  LCTL(KC_X)
-#define KX_PAST LCTL(KC_V)
-#define KX_UNDO LCTL(KC_Z)
-
-#define _USER 0 // User macro
-
-; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
+#include "replicaJunction.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  /*
-   * Colemak-ModDH
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * |   Q  |   W  |   F  |   P  |   B  |                     |   J  |   L  |   U  |   Y  |   ;  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |   A  |   R  |   S  |   T  |   G  |                     |   M  |   N  |   E  |   I  |   O  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |Z Shft|   X  |   C  |   D  |   V  | ,------.   ,------. |   K  |   H  |   ,  |   .  |/ Shft|
-   * +------+------+------+------+------| | Ctrl |   |  Alt | +------+------+------+------+------|
-   * |  Esc |  Gui |  Tab |  _FN | Bksp | |  Del |   | Enter| |Sp/_NU|  _EX |   -  |   '  |   =  |
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_CO] = LAYOUT(
-    KC_Q,        KC_W,    KC_F,    KC_P,    KC_B,                                   KC_J,            KC_L,    KC_U,    KC_Y,    KC_SCLN,
-    KC_A,        KC_R,    KC_S,    KC_T,    KC_G,                                   KC_M,            KC_N,    KC_E,    KC_I,    KC_O,
-    SFT_T(KC_Z), KC_X,    KC_C,    KC_D,    KC_V,                                   KC_K,            KC_H,    KC_COMM, KC_DOT,  SFT_T(KC_SLSH),
-    KC_ESC,      KC_LGUI, KC_TAB,  MO(_FN), KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT),  LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
-  ),
-
-  /*
-   * QWERTY
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * |   Q  |   W  |   E  |   R  |   T  |                     |   Y  |   U  |   I  |   O  |   P  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |   A  |   S  |   D  |   F  |   G  |                     |   H  |   J  |   K  |   L  |   ;  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |Z Shft|   X  |   C  |   V  |   B  | ,------.   ,------. |   N  |   M  |   ,  |   .  |/ Shft|
-   * +------+------+------+------+------| | Ctrl |   |  Alt | +------+------+------+------+------|
-   * |  Esc |  Gui |  Tab |  _FN | Bksp | |  Del |   | Enter| |Sp/_NU|  _EX |   -  |   '  |   =  |
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_QW] = LAYOUT( /* Qwerty */
-    KC_Q,        KC_W,    KC_E,    KC_R,    KC_T,                                  KC_Y,            KC_U,    KC_I,    KC_O,    KC_P,
-    KC_A,        KC_S,    KC_D,    KC_F,    KC_G,                                  KC_H,            KC_J,    KC_K,    KC_L,    KC_SCLN,
-    SFT_T(KC_Z), KC_X,    KC_C,    KC_V,    KC_B,                                  KC_N,            KC_M,    KC_COMM, KC_DOT,  SFT_T(KC_SLSH),
-    KC_ESC,      KC_LGUI, KC_TAB,  MO(_FN), KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
-  ),
 
-  /*
-   * Extend
-   *
-   * Ctrl+` is a keyboard shortcut for the program ConEmu, which brings up a dropdown console window.
-   *
-   * Also note that some dual-role keys are overridden here with their modifiers
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * |      |      |      |      |Ctrl `|                     | PgUp | Home |   Up |  End |  Del |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |  Gui | Shift|  Alt | Ctrl |      |                     | PgDn | Left | Down | Right| Bksp |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * | Shift|  Cut | Copy |      | Paste| ,------.   ,------. |      | ^Tab |  Tab |      |Insert|
-   * +------+------+------+------+------| |  Del |   | Enter| +------+------+------+------+------|
-   * |      |      |      |      |      | |      |   |      | | Space|XXXXXX|      |      |PrntSc|
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_EX] = LAYOUT( /* Extend */
-    _______, _______, _______, _______, LCTL(KC_GRV),              KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,
-    KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______,                   KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
-    KC_LSFT, KX_CUT,  KX_COPY, _______, KX_PAST,                   _______, KCX_LST, KC_TAB,  _______, KC_INS,
-    _______, _______, _______, _______, _______, KC_DEL,  KC_ENT,  KC_SPC,  _______, _______, _______, KC_PSCR
-  ),
+[L_COLEMAK] = LAYOUT(
+  KC_Q,    KC_W,    KC_F,    KC_P,    KC_B,                      KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN,
+  KC_A,    KC_R_LT, KC_S_LT, KC_T,    KC_G,                      KC_M,    KC_N,    KC_E_LT, KC_I_LT, KC_O,
+  KX_Z_MT, KX_X_MT, KX_C_MT, KX_D_MT, KC_V,                      KC_K,    KX_H_MT, KX_COMT, KX_DOMT, KX_SLMT,
+  TD_LAYR, KC_LGUI, KC_TAB,  KC_LSFT, KX_BKNM, KX_DCTL, KX_NALT, KX_SPAC, KC_RSFT, KC_MINS, KC_QUOT, KC_EQL
+)
+,
+
+[L_NUM] = LAYOUT(
+  KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_SLSH,                   KC_COLN, KC_7,    KC_8,    KC_9,    KC_SLSH,
+  KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_PIPE,                   KC_HASH, KC_4,    KC_5,    KC_6,    KC_ASTR,
+  KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BSLS,                   KC_BSPC, KC_1,    KC_2,    KC_3,    KC_MINS,
+  _______, KC_AMPR, KC_TILD, KC_GRV,  ooooooo, _______, KC_ENT,  MO_FUNC, KC_0,    KC_DOT,  KC_EQL,  KC_PLUS
+)
+,
+
+[L_EXTEND] = LAYOUT(
+  _______, _______, _______, KC_APP,  KX_CGR,                     KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,
+  KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______,                    KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
+  _______, _______, _______, KX_SRCH, KX_PAST,                    _______, KX_STAB, KC_TAB,  _______, KC_INS,
+  _______, _______, _______, _______, MO_FUNC,  KC_DEL,  KC_ENT,  _______, _______, _______, _______, KC_PSCR
+)
+,
+
+[L_FUNC] = LAYOUT(
+  _______, _______, M_LCLIK, M_RCLIK, M_MCLIK,                   KC_VOLU, KC_F9,   KC_F10,  KC_F11,  KC_F12,
+  KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, M_WHLUP,                   KC_MUTE, KC_F5,   KC_F6,   KC_F7,   KC_F8,
+  M_LEFT,  M_DOWN,  M_UP,    M_RIGHT, M_WHLDN,                   KC_VOLD, KC_F1,   KC_F2,   KC_F3,   KC_F4,
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+,
+
+[L_LL_R] = LAYOUT(
+  _______, _______, _______, _______, _______,                   KC_COLN, KC_P7,   KC_P8,   KC_P9,   KC_PSLS,
+  _______, ooooooo, KC_AMPR, KC_PIPE, _______,                   KC_HASH, KC_P4,   KC_P5,   KC_P6,   KC_PAST,
+  _______, _______, _______, _______, _______,                   KC_BSPC, KC_P1,   KC_P2,   KC_P3,   KC_PMNS,
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_0,    KC_DOT,  KC_EQL,  KC_PLUS
+)
+,
+
+[L_LL_E] = LAYOUT(
+  RJ_MAKE, RJ_EQ,   RJ_LEQ,  RJ_GEQ,  RJ_GEQR,                   _______, _______, _______, _______, _______,
+  _______, _______, RJ_SELS, RJ_DUND, _______,                   _______, _______, ooooooo, _______, _______,
+  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+,
+
+[L_LL_I] = LAYOUT(
+  KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_SLSH,                   _______, KC_UNDS, KC_GRV,  _______, _______,
+  KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_PIPE,                   _______, KC_MINS, KC_QUOT, ooooooo,  _______,
+  KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BSLS,                   _______, KC_TILD, KC_DQT,  _______, _______,
+  _______, KC_AMPR, KC_LABK, KC_RABK, _______, _______, _______, _______, _______, _______, _______, _______
+)
 
-  /*
-   * Numbers and symbols
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * |   !  |   @  |   {  |   }  |   &  |                     |   /  |   7  |   8  |   9  |   *  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |   #  |   $  |   (  |   )  |   ~  |                     |   |  |   4  |   5  |   6  |   -  |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |   %  |   ^  |   [  |   ]  |   `  | ,------.   ,------. |   \  |   1  |   2  |   3  |   +  |
-   * +------+------+------+------+------| |      |   |      | +------+------+------+------+------|
-   * |      |  _GA |      |      |      | |      |   |      | |XXXXXX|   0  |   .  |   =  |      |
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_NU] = LAYOUT( /* Numbers and symbols */
-    KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_AMPR,                    KC_SLSH, KC_7,    KC_8,   KC_9,   KC_ASTR,
-    KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_TILD,                    KC_PIPE, KC_4,    KC_5,   KC_6,   KC_MINS,
-    KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV,                     KC_BSLS, KC_1,    KC_2,   KC_3,   KC_PLUS,
-    _______, TG(_GA), _______, _______, _______, _______,  _______, _______, KC_0,    KC_DOT, KC_EQL, _______
-  ),
-
-  /*
-   * Functions
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * | Caps |  F9  |  F10 |  F11 |  F12 |                     | _USER|Whl Up|  MUp |Whl Dn|      |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |      |  F5  |  F6  |  F7  |  F8  |                     | Vol ^| MLeft| MDown|MRight|      |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |      |  F1  |  F2  |  F3  |  F4  | ,------.   ,------. | Vol v|      |      |      |      |
-   * +------+------+------+------+------| |      |   |RClick| +------+------+------+------+------|
-   * |      |      |      |XXXXXX|      | |      |   |      | |LClick|MClick| _CO  |  _GA | RESET|
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_FN] = LAYOUT( /* Functions */
-    KC_CAPS, KC_F9,   KC_F10,  KC_F11,  KC_F12,                    M(_USER),KC_WH_U, KC_MS_U, KC_WH_D, _______,
-    _______, KC_F5,   KC_F6,   KC_F7,   KC_F8,                     KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_R, _______,
-    _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,                     KC_VOLD, _______, _______, _______, _______,
-    _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN1, KC_BTN3, DF(_CO), DF(_QW), RESET
-  ),
-
-  /*
-   * Gaming
-   *
-   * ,----------------------------------.                     ,----------------------------------.
-   * |      |      |      |      |      |                     |      |Whl Up|  MUp |Whl Dn|      |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |      |      |      |      |      |                     |      | MLeft| MDown|MRight|      |
-   * +------+------+------+------+------|                     +------+------+------+------+------|
-   * |  Z   |      |      |      |      | ,------.   ,------. |      |      |      |      |      |
-   * +------+------+------+------+------| | Bksp |   |RClick| +------+------+------+------+------|
-   * |      |  _GA |      | Shift| Space| |      |   |      | |LClick|MClick|      |      |      |
-   * `----------------------------------' `------'   `------' `----------------------------------'
-   *
-   */
-  [_GA] = LAYOUT( /* Gaming */
-    _______, _______, _______, _______, _______,                   _______, KC_WH_U, KC_MS_U, KC_WH_D, _______,
-    _______, _______, _______, _______, _______,                   _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
-    KC_Z,    _______, _______, _______, _______,                   _______, _______, KC_MS_D, _______, _______,
-    _______, TG(_GA), _______, KC_LSFT, KC_SPC,  KC_BSPC, KC_BTN2, KC_BTN1, KC_BTN3, _______, _______, _______
-  )
 };
 
-/*
- * Template
- *
- * ,----------------------------------.                     ,----------------------------------.
- * |      |      |      |      |      |                     |      |      |      |      |      |
- * +------+------+------+------+------|                     +------+------+------+------+------|
- * |      |      |      |      |      |                     |      |      |      |      |      |
- * +------+------+------+------+------|                     +------+------+------+------+------|
- * |      |      |      |      |      | ,------.   ,------. |      |      |      |      |      |
- * +------+------+------+------+------| |      |   |      | +------+------+------+------+------|
- * |      |      |      |      |      | |      |   |      | |      |      |      |      |      |
- * `----------------------------------' `------'   `------' `----------------------------------'
- *
- */
+// Uncomment any of these to add keyboard-specific code. Otherwise, they
+// will use user defaults defined in the replicaJunction.h header file.
 
-const uint16_t PROGMEM fn_actions[] = {
+// bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+//   return true;
+// }
 
-};
+// void matrix_init_keymap(void) {};
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  // MACRODOWN only works in this function
-  switch(id) {
-    case _USER:
-      if (record->event.pressed) {
-        register_code(KC_RSFT);
-      } else {
-        unregister_code(KC_RSFT);
-      }
-    break;
-  }
-  return MACRO_NONE;
-};
+// void matrix_scan_keymap(void) {};

+ 34 - 0
keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt

@@ -0,0 +1,34 @@
+[{r:10,rx:1,y:-0.1,x:2},"F"],
+[{y:-0.65,x:1},"W",{x:1},"P"],
+[{y:-0.75},"Q"],
+[{y:-0.9,x:4},"B"],
+[{y:-0.7,x:2},"S"],
+[{y:-0.65,x:1,c:"#45b866"},"R",{x:1,c:"#cccccc"},"T"],
+[{y:-0.75},"A"],
+[{y:-0.9,x:4},"G"],
+[{y:-0.7,x:2},"C\n\n\n<i class='fa fa-windows'></i>"],
+[{y:-0.65,x:1},"X\n\n\nCtrl",{x:1},"D\n\n\nCtrlAlt"],
+[{y:-0.75},"Z"],
+[{y:-0.9,x:4},"V\n\n\nAlt"],
+[{y:-0.75,x:5,h:1.5},"Del\nCtrl"],
+[{y:-0.95,x:2},"Tab"],
+[{y:-0.65,x:1,a:7,fa:[7]},"<i class='fa fa-windows'></i>",{x:1,a:4,f:3},"Shift"],
+[{y:-0.75,f:3},"Layer tap"],
+[{y:-0.9,x:4,f:3},"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>"],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,f:3},"U"],
+[{y:-0.65,x:1,f:3},"L",{x:1,f:3},"Y"],
+[{y:-0.75,x:4,f:3},":\n;"],
+[{y:-0.9,f:3},"J"],
+[{y:-0.7,x:2,c:"#ffb07b",f:3},"E"],
+[{y:-0.65,x:1,c:"#cccccc",f:3},"N",{x:1,c:"#5dcde3",f:3},"I"],
+[{y:-0.75,x:4,c:"#cccccc",f:3},"O"],
+[{y:-0.9,f:3},"M"],
+[{y:-0.7,x:2,f:3},"<\n,\n\nCtrlAlt"],
+[{y:-0.65,x:1,f:3},"H\n\n\nAlt",{x:1,f:3},">\n.\n\n<i class='fa fa-windows'></i>"],
+[{y:-0.75,x:4,f:3},"?\n/\n\nCtrl"],
+[{y:-0.9,f:3},"K"],
+[{y:-0.75,x:-1,f:3,h:1.5},"Enter\nAlt"],
+[{y:-0.95,x:2,f:3},"_\n-"],
+[{y:-0.65,x:1,f:3},"Shift",{x:1,f:3},"\"\n'"],
+[{y:-0.75,x:4,f:3},"+\n="],
+[{y:-0.9,c:"#ffe08d",f:3},"Space"]

+ 34 - 0
keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt

@@ -0,0 +1,34 @@
+[{r:10,rx:1,y:-0.1,x:2},"<="],
+[{y:-0.65,x:1},"==",{x:1},">="],
+[{y:-0.75},"make"],
+[{y:-0.9,x:4},"=>"],
+[{y:-0.7,x:2},"select *"],
+[{y:-0.65,x:1,a:7},"",{x:1,a:4},"$_"],
+[{y:-0.75,a:7},""],
+[{y:-0.9,x:4},""],
+[{y:-0.7,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{y:-0.75,x:5,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""],
+[{y:-0.7,x:2,c:"#ffb07b"},""],
+[{y:-0.65,x:1,c:"#cccccc"},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""],
+[{y:-0.7,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""],
+[{y:-0.75,x:-1,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""]

+ 35 - 0
keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt

@@ -0,0 +1,35 @@
+[{r:10,rx:1,y:-0.1,x:2},"RClick"],
+[{y:-0.65,x:1,a:7},"",{x:1,a:4},"LClick"],
+[{y:-0.75,a:7},""],
+[{y:-0.9,x:4,a:4},"MClick"],
+[{y:-0.7,x:2},"Alt"],
+[{y:-0.65,x:1},"Shift",{x:1},"Ctrl"],
+[{y:-0.75,a:7,fa:[7]},"<i class='fa fa-windows'></i>"],
+[{y:-0.9,x:4,a:4,fa:[5,0,0,0,0,0,0,0,0,0,7]},"<i class='kb kb-Unicode-Scroll-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Top-4'></i>"],
+[{y:-0.7,x:2,fa:[0,0,0,0,0,0,0,0,0,0,7]},"<i class='fa fa-mouse-pointer'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Up'></i>"],
+[{y:-0.65,x:1},"<i class='fa fa-mouse-pointer'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Down'></i>",{x:1},"<i class='fa fa-mouse-pointer'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Right'></i>"],
+[{y:-0.75},"<i class='fa fa-mouse-pointer'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Left'></i>"],
+[{y:-0.9,x:4,fa:[5,0,0,0,0,0,0,0,0,0,7]},"<i class='kb kb-Unicode-Scroll-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='kb kb-Arrows-Bottom-4'></i>"],
+[{y:-0.75,x:5,a:7,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4,c:"#ffe08d"},""],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,c:"#cccccc",a:4,f:3},"F10"],
+[{y:-0.65,x:1,f:3},"F9",{x:1,f:3},"F11"],
+[{y:-0.75,x:4,f:3},"F12"],
+[{y:-0.9,a:7},""],
+[{y:-0.7,x:2,a:4,f:3},"F6"],
+[{y:-0.65,x:1,f:3},"F5",{x:1,f:3},"F7"],
+[{y:-0.75,x:4,f:3},"F8"],
+[{y:-0.9,a:7},""],
+[{y:-0.7,x:2,a:4,f:3},"F2"],
+[{y:-0.65,x:1,f:3},"F1",{x:1,f:3},"F3"],
+[{y:-0.75,x:4,f:3},"F4"],
+[{y:-0.9,a:7},""],
+[{y:-0.75,x:-1,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9,c:"#ffe08d"},""]
+

+ 34 - 0
keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt

@@ -0,0 +1,34 @@
+[{r:10,rx:1,y:-0.1,x:2},"{"],
+[{y:-0.65,x:1},"@",{x:1},"}"],
+[{y:-0.75},"!"],
+[{y:-0.9,x:4},"/"],
+[{y:-0.7,x:2},"("],
+[{y:-0.65,x:1},"$",{x:1},")"],
+[{y:-0.75},"#"],
+[{y:-0.9,x:4},"|"],
+[{y:-0.7,x:2},"["],
+[{y:-0.65,x:1},"^",{x:1},"]"],
+[{y:-0.75},"%"],
+[{y:-0.9,x:4},"\\"],
+[{y:-0.75,x:5,a:7,h:1.5},""],
+[{y:-0.95,x:2,a:4},"<"],
+[{y:-0.65,x:1},"&",{x:1},">"],
+[{y:-0.75,a:7},""],
+[{y:-0.9,x:4},""],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,a:4},"`"],
+[{y:-0.65,x:1},"_",{x:1,a:7},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""],
+[{y:-0.7,x:2,a:4},"'"],
+[{y:-0.65,x:1},"-",{x:1,c:"#5dcde3",a:7},""],
+[{y:-0.75,x:4,c:"#cccccc"},""],
+[{y:-0.9},""],
+[{y:-0.7,x:2,a:4},"\""],
+[{y:-0.65,x:1},"~",{x:1,a:7},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""],
+[{y:-0.75,x:-1,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4},""],
+[{y:-0.9},""]

+ 34 - 0
keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt

@@ -0,0 +1,34 @@
+[{r:10,rx:1,y:-0.1,x:2,a:7},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{y:-0.7,x:2,a:4},"&"],
+[{y:-0.65,x:1,c:"#45b866",a:7},"",{x:1,c:"#cccccc",a:4},"|"],
+[{y:-0.75,a:7},""],
+[{y:-0.9,x:4},""],
+[{y:-0.7,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{y:-0.75,x:5,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,a:4},"8"],
+[{y:-0.65,x:1},"7",{x:1},"9"],
+[{y:-0.75,x:4},"/"],
+[{y:-0.9},":"],
+[{y:-0.7,x:2},"5"],
+[{y:-0.65,x:1},"4",{x:1},"6"],
+[{y:-0.75,x:4},"*"],
+[{y:-0.9},"#"],
+[{y:-0.7,x:2},"2"],
+[{y:-0.65,x:1},"1",{x:1},"3"],
+[{y:-0.75,x:4},"-"],
+[{y:-0.9},"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>"],
+[{y:-0.75,x:-1,a:7,h:1.5},""],
+[{y:-0.95,x:2,a:4},"."],
+[{y:-0.65,x:1},"0",{x:1},"="],
+[{y:-0.75,x:4},"+"],
+[{y:-0.9},"Space"]

+ 34 - 0
keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt

@@ -0,0 +1,34 @@
+[{r:10,rx:1,y:-0.1,x:2,a:7},""],
+[{y:-0.65,x:1},"",{x:1,fa:[7]},"<i class='kb kb-Hamburger-Menu'></i>"],
+[{y:-0.75},""],
+[{y:-0.9,x:4},"<i class='fa fa-terminal'></i>"],
+[{y:-0.7,x:2,a:4,f:3},"Alt"],
+[{y:-0.65,x:1,f:3},"Shift",{x:1,f:3},"Ctrl"],
+[{y:-0.75,a:7},"<i class='fa fa-windows'></i>"],
+[{y:-0.9,x:4},""],
+[{y:-0.7,x:2},""],
+[{y:-0.65,x:1},"",{x:1},"<i class='fa fa-search'></i>"],
+[{y:-0.75},""],
+[{y:-0.9,x:4},"<i class='fa fa-clipboard'></i>"],
+[{y:-0.75,x:5,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75},""],
+[{y:-0.9,x:4},""],
+[{r:-10,rx:7,ry:0.965,y:-0.2,x:2},"<i class='kb kb-Arrows-Up'></i>"],
+[{y:-0.65,x:1,a:4,f:3},"Home",{x:1,f:3},"End"],
+[{y:-0.75,x:4,f:3},"Delete"],
+[{y:-0.9,f:3},"PgUp"],
+[{y:-0.7,x:2,a:7},"<i class='kb kb-Arrows-Down'></i>"],
+[{y:-0.65,x:1},"<i class='kb kb-Arrows-Left'></i>",{x:1},"<i class='kb kb-Arrows-Right'></i>"],
+[{y:-0.75,x:4,a:4,f:3},"Bksp"],
+[{y:-0.9,f:3},"PgDn"],
+[{y:-0.7,x:2,f:3},"Tab"],
+[{y:-0.65,x:1,f:3},"Shift+\n\n\n\n\n\nTab",{x:1,a:7},""],
+[{y:-0.75,x:4,a:4,f:3},"Insert"],
+[{y:-0.9,a:7},""],
+[{y:-0.75,x:-1,h:1.5},""],
+[{y:-0.95,x:2},""],
+[{y:-0.65,x:1},"",{x:1},""],
+[{y:-0.75,x:4,a:4,f:3},"Prnt Scrn"],
+[{y:-0.9,c:"#ffe08d",a:7},""]

Різницю між файлами не показано, бо вона завелика
+ 72 - 30
keyboards/atreus/keymaps/replicaJunction/readme.md


+ 12 - 0
keyboards/atreus/keymaps/replicaJunction/rules.mk

@@ -0,0 +1,12 @@
+# https://docs.qmk.fm/getting_started_make_guide.html
+
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+# KEY_LOCK_ENABLE = yes
+# CONSOLE_ENABLE = no
+# COMMAND_ENABLE = no
+
+# Use the "Unicode map" method
+# UNICODE_ENABLE = no
+# UNICODEMAP_ENABLE = yes
+

+ 13 - 64
layouts/community/ergodox/replicaJunction/config.h

@@ -1,64 +1,13 @@
-/*
-Config file - Ergodox QMK with replicaJunction layout
-
-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/>.
-*/
-
-#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
-#define KEYBOARDS_ERGODOX_CONFIG_H_
-
-#include QMK_KEYBOARD_CONFIG_H
-
-
-#undef MOUSEKEY_DELAY          
-#undef MOUSEKEY_INTERVAL       
-#undef MOUSEKEY_MAX_SPEED      
-#undef MOUSEKEY_TIME_TO_MAX    
-
-#define MOUSEKEY_DELAY          100
-#define MOUSEKEY_INTERVAL       20
-#define MOUSEKEY_MAX_SPEED      3
-#define MOUSEKEY_TIME_TO_MAX    10
-
-#define TAPPING_TOGGLE  1
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-// MS the button needs to be held before a tap becomes a hold (default: 200)
-#define TAPPING_TERM    200
-
-#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
-
-// I don't have any locking keys, so I don't need these features
-
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-
-//#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-//#define LOCKING_RESYNC_ENABLE
-
-/* Prevent modifiers from sticking when switching layers */
-/* Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers */
-#define PREVENT_STUCK_MODIFIERS
-
-/* key combination for command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
-    keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
-)
-
-
-#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
+#pragma once
+
+// Layer definitions
+
+#define L_COLEMAK 0
+#define L_QWERTY  1
+#define L_NUM     2
+#define L_EXTEND  3
+#define L_FUNC    4
+#define L_GAMING  5
+#define L_LL_R    6
+#define L_LL_E    7
+#define L_LL_I    8

+ 392 - 301
layouts/community/ergodox/replicaJunction/keymap.c

@@ -1,333 +1,424 @@
 /*
  * Keyboard: Ergodox
  * Keymap:   replicaJunction
- * Version:  1.2
- *
- * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus.
- * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now
- * have both keyboards, so I've designed these layouts in an effort to make switching between the
- * two as easy as possible.
- *
- * I've also tried to make use of the extra keys on the Ergodox in as logical of a manner as possible,
- * adding to the layers in the Atreus config without disturbing what's there already. This allows for
- * things like F11-F20, the Application (Menu) key, and better media key placement.
- *
- * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
- * here: https://colemakmods.github.io/mod-dh/
+ * Version:  2.1
  */
 
 #include QMK_KEYBOARD_H
-#include "debug.h"
-#include "action_layer.h"
-
-#define _CO 0 // Colemak
-#define _QW 1 // QWERTY
-#define _ME 2 // media keys
-#define _NU 3 // numpad
-#define _EX 4 // extend
-#define _GA 5 // mouse overlay for gaming
-
-// Some quick aliases, just to make it look pretty
-#define _______ KC_TRNS
-#define KCX_CGR LCTL(KC_GRV)
-#define KX_STAB LSFT(KC_TAB)
-#define KX_COPY LCTL(KC_C)
-#define KX_CUT  LCTL(KC_X)
-#define KX_PAST LCTL(KC_V)
-#define KX_UNDO LCTL(KC_Z)
-
-; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
+#include "config.h"
+#include "replicaJunction.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /*
-     * Keymap: Colemak-ModDH
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |  LCtrl |   Q  |   W  |   F  |   P  |   B  | Home |           | BkSp |   J  |   L  |   U  |   Y  |   ;  |   -    |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |  Tab   |   A  |   R  |   S  |   T  |   G  |------|           |------|   M  |   N  |   E  |   I  |   O  |   '    |
-     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
-     * | LShft  |   Z  |   X  |   C  |   D  |   V  |      |           |      |   K  |   H  |   ,  |   ,  |   /  | RShft  |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LGui |   [  |   ]  |CtlShf| LAlt |                                       | _EX  |   -  |   '  |   =  |   \  |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        | LCtrl|  ~GA |       | Left | Right|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
-     *                                 | BkSp |  Del |------|       |------| Enter| Space|
-     *                                 |      |      | _NU  |       | Down |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_CO] = LAYOUT_ergodox(
-        // left hand
-        KC_GRV, KC_1,   KC_2,      KC_3,            KC_4,   KC_5,   KC_ESC,
-        KC_LCTL,KC_Q,   KC_W,      KC_F,            KC_P,   KC_B,   KC_HOME,
-        KC_TAB, KC_A,   KC_R,      KC_S,            KC_T,   KC_G,
-        KC_LSFT,KC_Z,   KC_X,      KC_C,            KC_D,   KC_V,   ALL_T(KC_NO),
-        KC_LGUI,KC_LBRC,KC_RBRC,   LCTL(KC_LSFT),   KC_LALT,
-
-                                                                KC_LCTL,        TG(_GA),
-                                                                                KC_HOME,
-                                                CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
-        // right hand
-             KC_ESC,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
-             KC_BSPC,  KC_J,   KC_L,   KC_U,   KC_Y,   KC_SCLN,KC_MINS,
-                       KC_M,   KC_N,   KC_E,   KC_I,   KC_O,   KC_QUOT,
-             KC_BSLS,  KC_K,   KC_H,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
-                               MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
-
-        KC_LEFT, KC_RGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
-    ),
-
-    /*
-     * Keymap: QWERTY layout.
-     *
-     * This is optimized for gaming, not typing, so there aren't as many macros
-     * as the Dvorak layer. Some of the keys have also been moved to "game-
-     * like" locations, such as making the spacebar available to the left thumb,
-     * and repositioning the arrow keys at the bottom right corner.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |   `    |   1  |   2  |   3  |   4  |   5  |  Esc |           |      |   6  |   7  |   8  |   9  |   0  |   =    |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * | LCtrl  |   Q  |   W  |   E  |   R  |   T  | Home |           | BkSp |   Y  |   U  |   I  |   O  |   P  |   -    |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * | Tab    |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |   '    |
-     * |--------+------+------+------+------+------| Hyper|           |  \   |------+------+------+------+------+--------|
-     * | LShft  |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShft  |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LGui |   `  |  \   |CtlShf| _NU  |                                       |  _EX |   -  |  '   |   =  |   \   |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        | LCtrl| ~GA  |       | Left | Right|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |LCtrl/| LAlt/| Home |       |  Up  |  Alt/| _NU/ |
-     *                                 | BkSp |  Del |------|       |------| Enter| Space|
-     *                                 |      |      | _NU  |       | Down |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_QW] = LAYOUT_ergodox(  // Layer1: QWERTY
-        // left hand
-        KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC,
-        KC_LCTL,KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_HOME,
-        KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,
-        KC_LSFT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   ALL_T(KC_NO),
-        KC_LGUI,KC_GRV, KC_SLSH,LCTL(KC_LSFT),  MO(_NU),
-
-                                                                KC_LCTL,TG(_GA),
-                                                                        KC_HOME,
-                                        CTL_T(KC_BSPC), ALT_T(KC_DEL),  MO(_NU),
-        // right hand
-        KC_ESC,  KC_6,  KC_7,   KC_8,   KC_9,   KC_0,   KC_EQL,
-        KC_BSPC, KC_Y,  KC_U,   KC_I,   KC_O,   KC_P,   KC_MINS,
-                 KC_H,  KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
-        KC_BSLS, KC_N,  KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
-                        MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
-
-        KC_LEFT, KC_RGHT,
-        KC_UP,
-        KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
-    ),
-
-    /*
-     * Keymap: Numbers and symbols
-     *
-     * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases.
-     * That's why the Num Lock key exists on this layer - just in case.
-     *
-     * This layer also contains the layout switches.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |   !  |   @  |   {  |   }  |   &  |      |           |      |   /  |   7  |   8  |   9  |   *  |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |   #  |   $  |   (  |   )  |   ~  |------|           |------|   |  |   4  |   5  |   6  |   -  |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |   %  |   ^  |   [  |   ]  |   `  |      |           |      |   \  |   1  |   2  |   3  |   +  |        |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   |      |QWERTY|Colemk|      |      |                                       |   0  |   .  |   =  |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |NumLck| RESET|       |      |      |
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 |      |      |------|       |------|      |      |
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_NU] = LAYOUT_ergodox(
-        // left hand
-        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______,
-        _______, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_AMPR, _______,
-        _______, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_TILD,
-        _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV,  _______,
-        _______, DF(_QW), DF(_CO), _______, _______,
-
-                                                KC_NLCK,RESET,
-                                                        _______,
-                                        _______,_______,_______,
-        // right hand
-        _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______,
-        _______, KC_SLSH, KC_P7,   KC_P8,   KC_P9,   KC_PAST, _______,
-                 KC_PIPE, KC_P4,   KC_P5,   KC_P6,   KC_PMNS, _______,
-        _______, KC_BSLS, KC_P1,   KC_P2,   KC_P3,   KC_PPLS, _______,
-                          KC_P0,   KC_PDOT, KC_EQL,  _______, _______,
-
-       _______, _______,
-       _______,
-       _______, _______, _______
-    ),
-
-    /*
-     * Keymap: Extend
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |  F11 |  F12 |  F13 |  F14 |  F15 | Mute |           |      |  F16 |  F17 |  F18 |  F19 |  F20 |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |      |      |      |      | Ctrl`|  Vol |           |      | PgUp | Home |  Up  |  End |  Del |        |
-     * |--------+------+------+------+------+------|  Up  |           |      |------+------+------+------+------+--------|
-     * |        |      |  Gui |  Alt | Ctrl |      |------|           |------| PgDn | Left | Down | Right| BkSp |  Menu  |
-     * |--------+------+------+------+------+------|  Vol |           |      |------+------+------+------+------+--------|
-     * |        | Undo |  Cut | Copy |      | Paste| Down |           |      |      | ^Tab |  Tab |      |Insert| PrntScr|
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   |      |      |      |      |      |                                       |      |      |      |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |      |      |       |      |      |
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 |      |      |------|       |------|      |      |
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     *
-     * Ctrl+` is a keyboard shortcut for the program ConEmu, which provides a Quake-style drop-down command prompt.
-     *
-     */
-[_EX] = LAYOUT_ergodox(
-        // left hand
-        _______, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_MUTE,
-        _______, _______, _______, _______, _______, KCX_CGR, KC_VOLU,
-        _______, _______, KC_LGUI, KC_LALT, KC_LCTL, _______,
-        _______, KX_UNDO, KX_CUT,  KX_COPY, _______, KX_PAST, KC_VOLD,
-        _______, _______, _______, _______, _______,
-
-                                                _______,_______,
-                                                        _______,
-                                        _______,_______,_______,
-        // right hand
-        _______,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  _______,
-        _______,  KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,  _______,
-                  KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU,
-        _______,  _______, KX_STAB, KC_TAB,  _______, KC_INS,  KC_PSCR,
-                           _______, _______, _______, _______, _______,
-        _______, _______,
-        _______,
-        _______, _______, _______
-    ),
-
-    /*
-     * Keymap: Gaming
-     *
-     * Provides a mouse overlay for the right hand, and also moves some "gamer friendly" keys to the left, such as space.
-     * This layer also removes a lot of dual-role keys, as when gaming, it's nicer not to need to keep track of those.
-     *
-     * ,--------------------------------------------------.           ,--------------------------------------------------.
-     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-     * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |      |           |      |      |WhlUp | MsUp |WhlDn |      |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |------|           |------|      |MsLeft|MsDown|MsRght|      |        |
-     * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
-     * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
-     * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-     *   | LCtrl|      |      |      |      |                                       |      |      |      |      |      |
-     *   `----------------------------------'                                       `----------------------------------'
-     *                                        ,-------------.       ,-------------.
-     *                                        |      | ~_GA |       |      |MClick|
-     *                                 ,------|------|------|       |------+------+------.
-     *                                 |      |      |      |       |      |      |      |
-     *                                 | Space|      |------|       |------|RClick|LClick|
-     *                                 |      |      |      |       |      |      |      |
-     *                                 `--------------------'       `--------------------'
-     */
-[_GA] = LAYOUT_ergodox(
-        // left hand
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______,
-        KC_LCTL, _______, _______, _______, _______,
-
-                                        _______,_______,
-                                                _______,
-                                        KC_SPC, _______,_______,
-
-        // right hand
-        _______,  _______, _______, _______, _______, _______, _______,
-        _______,  _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
-                  _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
-        _______,  _______, _______, _______, _______, _______, _______,
-                           _______, _______, _______, _______, _______,
-        _______, KC_BTN3,
-        _______,
-        _______, KC_BTN2, KC_BTN1
-    ),
-};
 
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_TAP_TOGGLE(_NU)                // FN1 - Momentary Layer 1 (Numbers and symbols)
-};
+[L_COLEMAK] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_ESC  ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,KC_GRV  ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KX_ECTL ,KC_Q    ,KC_W    ,KC_F    ,KC_P    ,KC_B    ,KC_LBRC ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_TAB  ,KC_A    ,KC_R_LT ,KC_S_LT ,KC_T    ,KC_G,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_LSFT ,KX_Z_MT ,KX_X_MT ,KX_C_MT ,KX_D_MT ,KC_V    ,KC_RBRC ,
+//--------|--------|--------|--------|--------|--------|--------|
+  TD_LAYR ,KC_LGUI ,KC_HYPR ,KX_CTSF ,KC_LCTL ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               KC_HOME ,KC_END  ,
+//                                            |--------|--------|
+                                                        KC_PGUP ,
+//                                   |--------|--------|--------|
+                                      KX_BKNM ,KX_DCTL ,KC_PGDN ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|-------|
+  TG_GAME ,KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_EQL ,
+//--------|--------|--------|--------|--------|--------|-------|
+  KC_DEL  ,KC_J    ,KC_L    ,KC_U    ,KC_Y    ,KC_SCLN ,KC_BSLS,
+//--------|--------|--------|--------|--------|--------|-------|
+           KC_M    ,KC_N    ,KC_E_LT ,KC_I_LT ,KC_O    ,KC_QUOT,
+//--------|--------|--------|--------|--------|--------|-------|
+  KC_LOCK ,KC_K    ,KX_H_MT ,KX_COMT ,KX_DOMT ,KX_SLMT ,KC_RSFT,
+//--------|--------|--------|--------|--------|--------|-------|
+                    KC_LALT ,KC_MINS ,KC_QUOT ,KC_EQL  ,TT_NUM ,
+//--------|--------|--------|--------|--------|--------|-------|
+  KC_LEFT ,KC_RGHT ,
+//--------|--------|
+  KC_UP   ,
+//--------|--------|--------|
+  KC_DOWN ,KX_NALT ,KX_SPAC
+//--------|--------|--------|
+
+),
+
+
+
+[L_QWERTY] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_Q    ,KC_W    ,KC_E    ,KC_R    ,KC_T    ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_A    ,KC_S    ,KC_D    ,KC_F    ,KC_G    ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_EQL  ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P    ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           KC_H    ,KC_J    ,KC_K    ,KC_L    ,KC_SCLN ,KC_QUOT ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_LOCK ,KC_N    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSPC ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    KC_RALT ,KC_MINS ,KC_QUOT ,KC_EQL  ,TT_NUM  ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_LEFT ,KC_RGHT ,
+//--------|--------|
+  KC_UP   ,
+//--------|--------|--------|
+  KC_DOWN ,KX_NALT ,KX_SPAC
+//--------|--------|--------|
+),
+
+
+
+[L_NUM] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_F1   ,KC_F2   ,KC_F3   ,KC_F4   ,KC_F5   ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_EXLM ,KC_AT   ,KC_LCBR ,KC_RCBR ,KC_SLSH ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_HASH ,KC_DLR  ,KC_LPRN ,KC_RPRN ,KC_PIPE,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_BSLS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KC_AMPR ,KC_LABK ,KC_RABK,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_F6   ,KC_F7   ,KC_F8   ,KC_F9   ,KC_F10  ,KC_F11  ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_COLN ,KC_P7   ,KC_P8   ,KC_P9   ,KC_PSLS ,KC_F12  ,
+//--------|--------|--------|--------|--------|--------|--------|
+           KC_HASH ,KC_P4   ,KC_P5   ,KC_P6   ,KC_PAST ,KC_BSPC ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_BSPC ,KC_P1   ,KC_P2   ,KC_P3   ,KC_PMNS ,KC_TAB  ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    KC_P0   ,KC_PDOT ,KC_PEQL ,KC_PPLS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|
+  _______ ,
+//--------|--------|--------|
+  _______ ,KC_PENT ,MO_FUNC
+//--------|--------|--------|
+),
+
+
+
+[L_EXTEND] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F11,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,KC_APP  ,KX_CGR,  KC_VOLU,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,KX_SRCH, KX_PAST, KC_VOLD,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                   |--------|--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      MO_FUNC, _______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_F12,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_DEL,  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KX_STAB, KC_TAB,  _______ ,KC_INS, KC_PSCR,
+//--------|--------|--------|--------|--------|--------|--------|
+                    _______ ,_______ ,_______ ,KC_PSCR, _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______
+//--------|--------|--------|--------|--------|--------|--------|
+),
+
+
+
+[L_FUNC] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_F11  ,KC_F12  ,KC_F13  ,KC_F14  ,KC_F15  ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,M_LCLIK, M_RCLIK, M_MCLIK, _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, M_WHLUP,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,M_LEFT,  M_DOWN,  M_UP    ,M_RIGHT, M_WHLDN, _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                   |--------|--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_F16  ,KC_F17  ,KC_F18  ,KC_F19  ,KC_F20  ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_VOLU, KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           KC_MUTE, KC_F5,   KC_F6,   KC_F7,   KC_F8,   _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_VOLD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______
+//--------|--------|--------|--------|--------|--------|--------|
+),
 
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-        } else {
-          unregister_code(KC_RSFT);
-        }
-        break;
-      }
-    return MACRO_NONE;
-};
 
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
+
+[L_GAMING] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_ESC  ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KC_R    ,KC_S    ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  KC_LSFT, _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,KC_LALT ,KC_LCTL ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      KC_SPC,  KC_LSFT, _______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           _______ ,_______ ,KC_E    ,KC_I    ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,KC_UP,   KC_SLSH,
+//--------|--------|--------|--------|--------|--------|--------|
+                    _______ ,_______ ,KC_LEFT, KC_DOWN, KC_RGHT,
+//--------|--------|--------|--------|--------|--------|--------|
+  M_MCLIK ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  M_RCLIK ,
+//--------|--------|--------|--------|--------|--------|--------|
+  M_LCLIK ,KC_ENT  ,KC_BSPC
+//--------|--------|--------|--------|--------|--------|--------|
+)
+,
+
+// "Letter Layers"
+
+[L_LL_R] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,ooooooo ,KC_AMPR ,KC_PIPE ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_COLN ,KC_P7   ,KC_P8   ,KC_P9   ,KC_PSLS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           KC_HASH ,KC_P4   ,KC_P5   ,KC_P6   ,KC_PAST ,KC_TAB  ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_BSPC ,KC_P1   ,KC_P2   ,KC_P3   ,KC_PMNS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    KC_P0   ,KC_PDOT ,KC_PEQL ,KC_PPLS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|
+  _______ ,
+//--------|--------|--------|
+  _______ ,KC_PENT ,MO_FUNC
+//--------|--------|--------|
+)
+,
+
+[L_LL_E] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  RJ_QMKV ,RJ_MAKE ,RJ_EQ   ,RJ_LEQ  ,RJ_GEQ  ,RJ_GEQR ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,RJ_SELS ,RJ_DUND ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           _______ ,_______ ,ooooooo ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|
+  _______ ,
+//--------|--------|--------|
+  _______ ,_______ ,_______
+//--------|--------|--------|
+)
+,
+
+[L_LL_I] = LAYOUT_ergodox(
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_EXLM ,KC_AT   ,KC_LCBR ,KC_RCBR ,KC_SLSH ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_HASH ,KC_DLR  ,KC_LPRN ,KC_RPRN ,KC_PIPE,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_BSLS ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KC_AMPR ,KC_LABK ,KC_RABK,
+//--------|--------|--------|--------|--------|--------|--------|
+                                               _______ ,_______ ,
+//                                            |--------|--------|
+                                                        _______ ,
+//                                   |--------|--------|--------|
+                                      _______ ,_______ ,_______ ,
+//                                   |--------|--------|--------|
+
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KC_UNDS, KC_GRV  ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+           _______ ,KC_MINS ,KC_QUOT ,ooooooo ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,KC_TILD, KC_DQT  ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+                    _______ ,_______ ,_______ ,_______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,
+//--------|--------|--------|--------|--------|--------|--------|
+  _______ ,_______ ,_______
+//--------|--------|--------|--------|--------|--------|--------|
+)
+
 
 };
 
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
+// The normal QMK functions ending in _user are overridden in the
+// replicaJunction userspace. Those functions handle my global
+// settings, and redirect to these _keymap functions if something
+// is unhandled. This allows me to keep most of my global preferences
+// in one place while still allowing keyboard-specific code.
+
+// The idea was shamelessly copied from the amazing Drashna.
+
+// Nothing to do here, so I've commented it out.
+// bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+//   return true;
+// }
+
+// void matrix_init_keymap(void) {};
+
+void matrix_scan_keymap(void) {
 
     uint8_t layer = biton32(layer_state);
     // uint8_t default_layer = biton32(layer_state);
 
     ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
 
     switch (layer) {
-        case _CO:
+        case L_COLEMAK:
             ergodox_right_led_1_on();
+            ergodox_right_led_2_off();
+            ergodox_right_led_3_off();
             break;
-        case _QW:
+        case L_NUM:
+            ergodox_right_led_1_on();
             ergodox_right_led_2_on();
+            ergodox_right_led_3_off();
             break;
-        case _NU:
+        case L_EXTEND:
+            ergodox_right_led_1_on();
+            ergodox_right_led_2_off();
             ergodox_right_led_3_on();
             break;
-        case _GA:
+        case L_FUNC:
             ergodox_right_led_1_on();
             ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
+        case L_GAMING:
+            ergodox_right_led_1_off();
+            ergodox_right_led_2_on();
+            ergodox_right_led_3_on();
+            break;
         default:
             // none
             break;

Різницю між файлами не показано, бо вона завелика
+ 91 - 2
layouts/community/ergodox/replicaJunction/readme.md


+ 8 - 0
layouts/community/ergodox/replicaJunction/rules.mk

@@ -0,0 +1,8 @@
+# https://docs.qmk.fm/getting_started_make_guide.html
+
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+KEY_LOCK_ENABLE = yes
+RGBLIGHT_ENABLE = no
+# CONSOLE_ENABLE = no
+# COMMAND_ENABLE = no

+ 72 - 0
users/replicaJunction/config.h

@@ -0,0 +1,72 @@
+#pragma once
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Features That Can Be Enabled
+// https://docs.qmk.fm/reference/config-options#features-that-can-be-enabled
+////////////////////////////////////////////////////////////////////////////////
+
+// Prevent modifiers from sticking when switching layers
+// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers
+#define PREVENT_STUCK_MODIFIERS
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Behaviors That Can Be Configured
+// https://docs.qmk.fm/reference/config-options#behaviors-that-can-be-configured
+////////////////////////////////////////////////////////////////////////////////
+
+// MS the button needs to be held before a tap becomes a hold (default: 200)
+#undef TAPPING_TERM
+#define TAPPING_TERM    250
+
+// Makes it easier for fast typists to use dual-role keys. See additional details here:
+// https://docs.qmk.fm/features/advanced-keycodes#permissive-hold
+#define PERMISSIVE_HOLD
+
+// MS after tapping the Leader key to listen for a sequence (default: 300)
+#undef LEADER_TIMEOUT
+#define LEADER_TIMEOUT  750
+
+// This makes it possible to do rolling combos (zx) with keys that convert to other keys on hold
+// (for example, if z becomes ctrl when you hold it, when this option isn't enabled, z rapidly
+// followed by x actually sends Ctrl-x. That's bad.)
+#define IGNORE_MOD_TAP_INTERRUPT
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Mouse Key Options
+// https://docs.qmk.fm/reference/config-options#mouse-key-options
+////////////////////////////////////////////////////////////////////////////////
+
+#ifdef MOUSEKEY_ENABLE
+// Mouse key config
+
+// Frequency with which cursor movements are sent. Lower means more resolution / DPI.
+// Default: 20
+// #undef MOUSEKEY_INTERVAL
+// #define MOUSEKEY_INTERVAL       20
+
+// MS after pressing the key before initial movement begins. Lower means quicker response.
+// Default: 0
+// #undef MOUSEKEY_DELAY
+// #define MOUSEKEY_DELAY          0
+
+// MS it takes the cursor to accelerate to max speed
+// Default: 60
+// #undef MOUSEKEY_TIME_TO_MAX
+// #define MOUSEKEY_TIME_TO_MAX    60
+
+// Maximum speed for the mouse keys
+// Default: 7
+// #undef MOUSEKEY_MAX_SPEED
+// #define MOUSEKEY_MAX_SPEED      7
+
+// Delay before the mouse wheel
+// Default: 0
+// #undef MOUSEKEY_WHEEL_DELAY
+// #define MOUSEKEY_WHEEL_DELAY    0
+
+#endif // MOUSEKEY_ENABLE

+ 14 - 0
users/replicaJunction/readme.md

@@ -0,0 +1,14 @@
+Copyright 2018 @<replicaJunction>
+
+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/>.

+ 149 - 0
users/replicaJunction/replicaJunction.c

@@ -0,0 +1,149 @@
+#include "replicaJunction.h"
+#include "version.h"
+
+#ifdef TAP_DANCE_ENABLE
+void dance_layer(qk_tap_dance_state_t *state, void *user_data)
+{
+    uint8_t layer = biton32(layer_state);
+
+    if (state->count >= 5)
+    {
+        // 5 or more taps resets the keyboard
+        reset_keyboard();
+    }
+    #ifdef L_QWERTY
+    else if (state->count == 3)
+    {
+        // Triple tap changes to QWERTY layer
+        if (layer == L_QWERTY)
+        {
+            layer_off(L_QWERTY);
+        }
+        else
+        {
+            layer_on(L_QWERTY);
+        }
+    }
+    #endif
+    #ifdef L_NUM
+    else if (state->count == 2)
+    {
+        // Double tap toggles Number layer
+        if (layer == L_NUM)
+        {
+            layer_off(L_NUM);
+        }
+        else
+        {
+            layer_on(L_NUM);
+        }
+    }
+    #endif
+    else
+    {
+        // Single tap sends Escape, and also turns off layers
+        // That's mostly in case I get stuck and forget where I am
+        #ifdef L_NUM
+        layer_off(L_NUM);
+        #endif
+        #ifdef L_EXTEND
+        layer_off(L_EXTEND);
+        #endif
+        #ifdef L_SYMBOL
+        layer_off(L_SYMBOL);
+        #endif
+        #ifdef L_QWERTY
+        layer_off(L_QWERTY);
+        #endif
+        register_code(KC_ESC);
+        unregister_code(KC_ESC);
+    }
+};
+
+// Tap Dance Definitions
+// Note - this needs to come AFTER the function is declared
+qk_tap_dance_action_t tap_dance_actions[] = {
+        [TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN(dance_layer)
+};
+
+#endif // TAP_DANCE_ENABLE
+
+// These functions can be overridden in individual keymap files.
+// This allows a user function to be shared for all my keyboards, while each
+// keyboard can also have a keyboard-specific section.
+
+// Note that keymaps don't need to override these if there's nothing to
+// override them with.
+__attribute__ ((weak))
+void matrix_init_keymap(void) {}
+
+__attribute__ ((weak))
+void matrix_scan_keymap(void) {}
+
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+        return true;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+    #ifdef UNICODEMAP_ENABLE
+    // Set Unicode input to use WinCompose
+    // https://github.com/samhocevar/wincompose
+    set_unicode_input_mode(UC_WINC);
+    #endif // UNICODEMAP_ENABLE
+
+    matrix_init_keymap();
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+    matrix_scan_keymap();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    if (record->event.pressed)
+        return true;
+
+    switch(keycode)
+    {
+        case RJ_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
+            SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
+            #if  (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
+                                    ":dfu"
+            #elif defined(BOOTLOADER_HALFKAY)
+                                    ":teensy"
+            #elif defined(BOOTLOADER_CATERINA)
+                                    ":avrdude"
+            #endif // bootloader options
+                                    //SS_TAP(X_ENTER)
+                                    );
+            return false;
+        case RJ_QMKV:
+            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+            return false;
+        case RJ_EQ:
+            SEND_STRING("==");
+            return false;
+        case RJ_NEQ:
+            SEND_STRING("!=");
+            return false;
+        case RJ_GEQ:
+            SEND_STRING(">=");
+            return false;
+        case RJ_LEQ:
+            SEND_STRING("<=");
+            return false;
+        case RJ_GEQR:
+            SEND_STRING("=>");
+            return false;
+        case RJ_DUND:
+            SEND_STRING("$_");
+            return false;
+        case RJ_SELS:
+            SEND_STRING("select *");
+            return false;
+    }
+
+    return process_record_keymap(keycode, record);
+};

+ 115 - 0
users/replicaJunction/replicaJunction.h

@@ -0,0 +1,115 @@
+#pragma once
+
+#include "quantum.h"
+
+///////////////////////////////////////////////////////////////////////////////
+// Keymap definitions
+///////////////////////////////////////////////////////////////////////////////
+
+// Layer definitions
+// #define L_COLEMAK 0
+// #define L_QWERTY  1
+// #define L_NUM     2
+// #define L_EXTEND  3
+// #define L_FUNC    4
+// #define L_GAMING  5
+// #define L_SYMBOL  6
+// #define L_LL_R    7
+// #define L_LL_S    8
+// #define L_LL_E    9
+// #define L_LL_I   10
+
+// Keyboard aliases
+#define _______ KC_TRNS
+#define ooooooo KC_TRNS
+
+#define MO_FUNC MO(L_FUNC)
+#define TT_NUM  TT(L_NUM)
+#define TG_GAME TG(L_GAMING)
+#define OSL_SYM OSL(L_SYMBOL)
+
+#define OSM_LSF OSM(MOD_LSFT)
+#define OSM_RSF OSM(MOD_RSFT)
+
+#define KX_CTSF LCTL(KC_LSFT)
+#define KX_STAB LSFT(KC_TAB)
+#define KX_CGR  LCTL(KC_GRV)
+#define KX_PAST LCTL(LGUI(LALT(KC_V)))
+#define KX_SRCH LCTL(LGUI(LALT(KC_S)))
+
+#define KX_BKNM LT(L_NUM, KC_BSPC)
+#define KX_DCTL CTL_T(KC_DEL)
+#define KX_NALT ALT_T(KC_ENT)
+#define KX_ECTL CTL_T(KC_ESC)
+#define KX_SPAC LT(L_EXTEND, KC_SPC)
+
+#define KX_Z_MT CTL_T(KC_Z)
+#define KX_X_MT GUI_T(KC_X)
+#define KX_C_MT MT(MOD_LCTL | MOD_LALT, KC_C)
+#define KX_D_MT ALT_T(KC_D)
+
+#define KX_SLMT CTL_T(KC_SLSH)
+#define KX_DOMT GUI_T(KC_DOT)
+#define KX_COMT MT(MOD_LCTL | MOD_LALT, KC_COMM)
+#define KX_H_MT ALT_T(KC_H)
+
+#ifdef L_LL_R
+    #define KC_R_LT LT(L_LL_R, KC_R)
+#else
+    #define KC_R_LT KC_R
+#endif
+
+#ifdef L_LL_S
+    #define KC_S_LT LT(L_LL_S, KC_S)
+#else
+    #define KC_S_LT KC_S
+#endif
+
+#ifdef L_LL_E
+    #define KC_E_LT LT(L_LL_E, KC_E)
+#else
+    #define KC_E_LT KC_E
+#endif
+
+#ifdef L_LL_I
+    #define KC_I_LT LT(L_LL_I, KC_I)
+#else
+    #define KC_I_LT KC_I
+#endif
+
+// "Macro" functions
+enum userspace_custom_keycodes {
+    RJ_MAKE = SAFE_RANGE,  // QMK make command
+    RJ_QMKV,               // QMK version
+    RJ_EQ,                 // ==
+    RJ_NEQ,                // !=
+    RJ_GEQ,                // >=
+    RJ_LEQ,                // <=
+    RJ_GEQR,               // => ("greater than or equal - right")
+    RJ_DUND,               // $_
+    RJ_SELS,               // select * (used for PowerShell)
+    RJ_MUTE,               // Discord mute (GUI+Shift+M)
+    RJ_DEAF,               // Discord deafen (GUI+Shift+D)
+    RJ_DOVR                // Toggle Discord overlay (GUI+Shift+O)
+};
+
+// Mouse keys
+#define M_UP KC_MS_UP
+#define M_DOWN KC_MS_DOWN
+#define M_LEFT KC_MS_LEFT
+#define M_RIGHT KC_MS_RIGHT
+#define M_LCLIK KC_MS_BTN1
+#define M_RCLIK KC_MS_BTN2
+#define M_MCLIK KC_MS_BTN3
+#define M_WHLUP KC_WH_U
+#define M_WHLDN KC_WH_D
+
+// Used in macro definitions
+#define TAP(code) register_code (code); unregister_code (code);
+
+// Tap Dance
+#ifdef TAP_DANCE_ENABLE
+#define TD_LAYER_TOGGLE 0
+extern void dance_layer(qk_tap_dance_state_t *state, void *user_data);
+#define TD_LAYR TD(TD_LAYER_TOGGLE)
+#endif // TAP_DANCE_ENABLE

+ 1 - 0
users/replicaJunction/rules.mk

@@ -0,0 +1 @@
+SRC += replicaJunction.c