summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua T <replicaJunction@users.noreply.github.com>2018-08-15 17:38:41 -0500
committerDrashna Jaelre <drashna@live.com>2018-08-15 15:38:41 -0700
commitc19d949b72844120fff5159bc7e637ada4dd2579 (patch)
tree834d410b135352015a887d6f5fc94feefd96b726
parent632287535c83e6607de97a5998713def61dc01bc (diff)
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.
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/config.h101
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/keymap.c260
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt34
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt34
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt35
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt34
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt34
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt34
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/readme.md102
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/rules.mk12
-rw-r--r--layouts/community/ergodox/replicaJunction/config.h77
-rw-r--r--layouts/community/ergodox/replicaJunction/keymap.c693
-rw-r--r--layouts/community/ergodox/replicaJunction/readme.md93
-rw-r--r--layouts/community/ergodox/replicaJunction/rules.mk8
-rw-r--r--users/replicaJunction/config.h72
-rw-r--r--users/replicaJunction/readme.md14
-rw-r--r--users/replicaJunction/replicaJunction.c149
-rw-r--r--users/replicaJunction/replicaJunction.h115
-rw-r--r--users/replicaJunction/rules.mk1
19 files changed, 1216 insertions, 686 deletions
diff --git a/keyboards/atreus/keymaps/replicaJunction/config.h b/keyboards/atreus/keymaps/replicaJunction/config.h
index 437aa662c8..8e786aa0da 100644
--- a/keyboards/atreus/keymaps/replicaJunction/config.h
+++ b/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
diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c
index 2d8f0d70f8..c3cc371151 100644
--- a/keyboards/atreus/keymaps/replicaJunction/keymap.c
+++ b/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) {};
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt
new file mode 100644
index 0000000000..aec41316f2
--- /dev/null
+++ b/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"]
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt
new file mode 100644
index 0000000000..2b4105b2b4
--- /dev/null
+++ b/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},""]
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt
new file mode 100644
index 0000000000..d45fb7e97d
--- /dev/null
+++ b/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"},""]
+
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt
new file mode 100644
index 0000000000..45bef783a3
--- /dev/null
+++ b/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},""]
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt
new file mode 100644
index 0000000000..3d44383863
--- /dev/null
+++ b/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"]
diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt
new file mode 100644
index 0000000000..d1ffa35f89
--- /dev/null
+++ b/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},""]
diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md
index 6a330bdbfc..f1d6c47b13 100644
--- a/keyboards/atreus/keymaps/replicaJunction/readme.md
+++ b/keyboards/atreus/keymaps/replicaJunction/readme.md
@@ -1,61 +1,103 @@
-# replicaJunction - Atreus Layout #
+# replicaJunction - Atreus Layout
This layout is designed to make the absolute most out of the Atreus 40% keyboard.
-I was enchanted with the idea of the Atreus keyboard after using my Ergodox for several months. I wanted something of a similar form factor that was easily portable, so I could bring and transport a keyboard to my workplace without much hassle. After building the Atreus keyboard, though, I realized very quickly that the 40% form factor requires a lot more creativity than a full-size keyboard (even one as strangely-shaped as the Ergodox).
+This layout is probably not perfect for you. That's okay! Use it for ideas as you design your own perfect layout.
-The default Atreus keyboard layout provides all the necessary keys in order to function with the keyboard, but as a programmer, I needed quicker access to just about everything. I noticed that the default layer didn't include any dual-role keys, and so I started on my journey to build my perfect layout for the Atreus.
+Most of the custom logic in this keyboard is actually not in these files. Instead, it's in the directory `/users/replicaJunction` (from the root of the QMK repo). This allows me to share macros and custom logic between multiple keyboards. A `process_record_keyboard()` function defined weakly in `replicaJunction.h` allows keyboards to process records individually as well without overriding the `process_record_user()` function. (My Ergodox uses this to handle its LEDs, for example.)
-I won't claim that this layout is perfect for everyone. It does make several significant changes from the "normal" Atreus layout. In my own use, though, I've found this keyboard turbocharges my Atreus, and gives it the power of a full-size keyboard without the size.
+The default letter layout in this keymap is [Colemak-ModDH](https://colemakmods.github.io/mod-dh/). I use the "matrix version" of that layout, which retains the M key on the home row as in normal Colemak.
-## Base Layer ##
+## Design Goals
-![Atreus base layout](http://imgur.com/YbOjS7O)
+I designed this layout with the following goals in mind:
-The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
+* Nothing may interfere with ordinary typing.
+* Symbols need to be accessible quickly and organized in a manner I can remember.
+* Limit more difficult finger movements (and pinky usage in general).
-The primary mechanism for the Shift keys in this keyboard are the dual-role Z and slash keys. Pressing the key sends the keystroke, while holding the key sends a shift. This is a design choice taken from the xyverz layout, and one I find much more intuitive than a thumb shift. In addition, the pinky doesn't need to stretch as far to reach these keys as it does to reach a standard Shift key.
+### Nothing may interfere with ordinary typing
-Occasionally, when typing the letter Z, I'll hold the key down a fraction of a second too long, and the keyboard will shift instead. If you're not a confident typist, this dual-role Shift key layout is probably not a good solution. In that case, I'd suggest moving Shift onto the Backspace key (press for Backspace, hold for Shift).
+For a long time, this meant that I couldn't use letters or home row keys as dual-role keys. I'm a fast typer, and I'm sometimes already typing the next letter before I've fully released the previous one. Normal keyboards don't care about this, but if I started adding dual-role functionality to letters, I found that I would sometimes type the next letter before releasing the layer toggle, and the letter I tried to send would still be sent under the layer I thought I'd left off.
-In addition to the Shift keys, there are three dual-purpose keys: Ctrl (Delete), Alt (Enter), and Space (Number layer). In QMK, these dual-role keys can be made to hold their primary key with a tap and hold. For example, if I wanted to insert a long string of Spaces, I would tap the Space key, then tap it again and hold. A single press and hold would trigger the secondary function of the key instead.
+Fortunately, though, QMK has addressed this with the `PERMISSIVE_HOLD` flag. [Details are on the QMK docs page.](https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold)
-## Extend Layer ##
+Using that flag, I'm comfortable having layer shift keys on the home row, and this goes a long way to eliminate finger stress.
-![Atreus extend layer](http://imgur.com/WiKkMQw)
+### Sympols need to be accessible quickly
-This layout is designed primarily for keyboard navigation. Arrow keys are easily accessible under the right hand (a welcome change from the original Atreus layout, which places them under the left hand), along with Home/End and PgUp/PgDn.
+Symbols are available under my left hand by holding the I key (on my right hand). I've grouped parenthesis, slashes, and braces together; the remaining symbols are ordered in the same way as they appear on USA keycap legends (for example, 1 is !, so that symbol is first in my lineup). Practically, I just had to get used to these other "misc" symbols.
-Modifiers are also placed under the home row of the left hand. One of the single keyboard actions I use most is Shift+Ctrl+Left/Right to select a whole word; this layer makes those keypresses simple by adding the Ctrl key in an easy-to-reach location.
+This also means that some symbols are accessible in more than one way. For example, the carats (greater than and less than) are available both in the "normal" location (Shift+Comma / Shift+Period) and on the symbol layer. I make regular changes to some of the symbols I don't use as commonly as I think of them.
-For the common Ctrl shortcuts, I also added some hotkeys to this layer over the letter keys they are associated with. This gives the Extend key some extra utility by letting it "feel" like a Ctrl key in some cases.
+### Limit more difficult finger movements
-The Space key exists to prevent going from this layer directly i