summaryrefslogtreecommitdiffstats
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/atreus/config.h3
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.pngbin0 -> 76849 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.pngbin0 -> 88880 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.pngbin0 -> 91768 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.pngbin0 -> 72341 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/keymap.c107
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/readme.md47
-rw-r--r--keyboards/ergodox/keymaps/replicaJunction/keymap.c374
-rw-r--r--keyboards/ergodox/keymaps/replicaJunction/readme.md5
9 files changed, 536 insertions, 0 deletions
diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h
index 624d90188..36624a4a1 100644
--- a/keyboards/atreus/config.h
+++ b/keyboards/atreus/config.h
@@ -67,6 +67,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
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.
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png
new file mode 100644
index 000000000..c8efae964
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png
new file mode 100644
index 000000000..fd8f0a6e2
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png
new file mode 100644
index 000000000..262e08ac9
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png
new file mode 100644
index 000000000..fefea53c5
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c
new file mode 100644
index 000000000..4e88f3bd1
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c
@@ -0,0 +1,107 @@
+/*
+ * Keyboard: Atreus
+ * Keymap: replicaJunction
+ * Version: 0.3
+ *
+ * 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/
+ */
+
+#include "atreus.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)
+
+; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_CO] = KEYMAP(
+ 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,
+ KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH,
+ KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, SFT_T(KC_BSPC), CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
+),
+
+[_QW] = KEYMAP( /* 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,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL
+),
+
+[_EX] = KEYMAP( /* Extend */
+ _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL,
+ _______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
+ KX_UNDO, KX_CUT, KX_COPY, _______, KX_PAST, _______, KCX_LST, _______, KC_TAB, _______,
+ _______, _______, _______, _______, KC_LSFT, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR
+),
+
+[_NU] = KEYMAP( /* 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_GRV, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS,
+ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_BSLS, KC_1, KC_2, KC_3, KC_PLUS,
+ MO(_FN), _______, KC_LABK, KC_RABK, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______
+),
+
+[_FN] = KEYMAP( /* Functions */
+ KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_F4, KC_F5, KC_F6, KC_F11,
+ _______, KC_VOLU, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12,
+ _______, _______, _______, _______, KC_MSTP, _______, _______, _______, KC_NO, DF(_CO), DF(_QW), RESET
+),
+
+[_GA] = KEYMAP( /* Gaming */
+ _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______,
+ _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
+ _______, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______,
+ _______, _______, _______, _______, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______
+)};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+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;
+};
diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md
new file mode 100644
index 000000000..1b96926e4
--- /dev/null
+++ b/keyboards/atreus/keymaps/replicaJunction/readme.md
@@ -0,0 +1,47 @@
+# 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).
+
+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.
+
+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.
+
+## Base Layer ##
+
+![Atreus base layout](atreus-replica-base.png)
+
+The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
+
+Note that there are four dual-purpose keys: Shift (Backspace), Ctrl (Delete), Alt (Enter), and Space (Number layer). In QMK, these dual-role keys can be made to hold their primary key by double-tapping the key and holding on the second tap. 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.
+
+There is still one blank key on this layout. I haven't decided what to use it for yet. On my keyboard, I have this assigned to another Shift key.
+
+## Extend Layer ##
+
+![Atreus extend layer](atreus-replica-extend.png)
+
+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.
+
+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 and Shift keys in easy-to-reach locations.
+
+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.
+
+The Space key exists to prevent going from this layer directly into the Number layer. Similarly, the Shift key on the left thumb helps make sure that the Backspace function doesn't fire (the other role of this key on the base layout).
+
+## Number and Symbol Layer ##
+
+![Atreus number and symbol layer](atreus-replica-num.png)
+
+This layer provides the only way of accessing number keys on this keyboard, since it's too small for its own number row. Note that even though they are laid out in the number pad fashion, they send the "regular" number keystrokes. Games and programs that specifically use NumPad keys are not supported in this layout at the moment.
+
+This layer also provides plenty of symbol shortcuts. Most of these can be accessed through other means (like Shift+8 for the asterisk), but having shortcut keys to them makes for one less keypress, which adds up quickly when using these symbols on a regular basis. I've been through many revisions of this concept on my Ergodox as well as the Atreus, and I've finally arrived at this layout as the one that provides the symbols I need most frequently in places I can think to expect them. The Ordinary layout from the Ergodox-EZ keyboard in this repository was a large influence in this design.
+
+## Function Layer ##
+
+![Atreus function layer](atreus-replica-function.png)
+
+Function keys (F1-F12) are on this layer, as well as some more generic "functions" such as media keys. I've also set up a mirror image of the arrows from the Extend layer in case I need to use these with my left hand, but I don't do this very often.
+
+The reset key is on this layer, as well as a toggle from Colemak to QWERTY and back. The QWERTY layer is not currently documented (nor is a small "gaming" layer that adds mouse keys on top of QWERTY). \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c
new file mode 100644
index 000000000..bc5cbc643
--- /dev/null
+++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c
@@ -0,0 +1,374 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+/*
+ * Keyboard: Ergodox
+ * Keymap: replicaJunction
+ * Version: 1.1
+ *
+ * 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.
+ *
+ * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
+ * here: https://colemakmods.github.io/mod-dh/
+ */
+
+#define _CO 0 // Colemak
+#define _DV 1 // Dvorak
+#define _QW 2 // QWERTY
+#define _ME 3 // media keys
+#define _NU 4 // numpad
+#define _EX 5 // extend
+#define _GA 6 // mouse overlay for gaming
+
+#define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at
+
+// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers
+#define PREVENT_STUCK_MODIFIERS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * Keymap: Colemak-ModDH
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | \ | 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| | | _EX | - | ' | Right| \ |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtrl| LAlt | | Left | Right|
+ * ,------|------|------| |------+------+------.
+ * |Shift/| Ctrl/| Home | | Up | Alt/| _NU/ |
+ * | BkSp | Del |------| |------| Enter| Space|
+ * | | | _NU | | Down | | |
+ * `--------------------' `--------------------'
+ */
+
+[_CO] = KEYMAP(
+ // left hand
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
+ KC_BSLS,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), MO(_NU),
+
+ KC_LCTL, KC_LALT,
+ KC_HOME,
+ SFT_T(KC_BSPC), CTL_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_RGHT,KC_BSLS,
+
+ KC_LEFT, KC_RGHT,
+ KC_UP,
+ KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
+ ),
+
+ /*
+ * Keymap: Dvorak layout
+ *
+ * The right index backspace is a nod to my TypeMatrix keyboard, which has
+ * Backspace in the center.
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | / |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | \ | ' | , | . | P | Y | Home | | BkSp | F | G | C | R | L | = |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | - |
+ * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------|
+ * | LShft | ; | Q | J | K | X | | | | B | M | W | V | Z | RShft |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | LGui | [ | ] |CtlShf| _NU | | Left | Up | Down | Right| \ |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtrl| LAlt | | _ME | RAlt |
+ * ,------|------|------| |------+------+------.
+ * | Ctl/ | Alt/ | Home | | PgUp | | _NU/ |
+ * | BkSp | Del |------| |------| Enter| Space|
+ * | | | _NU | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+
+// _DV
+[_DV] = KEYMAP(
+ // left hand
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
+ KC_BSLS,KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_HOME,
+ KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I,
+ KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO),
+ KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(_NU),
+
+ KC_LCTL, KC_LALT,
+ 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_SLSH,
+ KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL,
+ KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ KC_BSLS, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS,
+
+ MO(_ME), KC_RALT,
+ KC_PGUP,
+ KC_PGDN, 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 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | LShift | Q | W | E | R | T | +L1 | | BkSp | Y | U | I | O | P | ] |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------|
+ * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | LCtrl| ` | \ |CtlShf| _NU | | ~_GA | / | Left | Down | Right|
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtrl| LAlt | | _ME | ~_GA |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | PgUp | | _NU/ |
+ * | Space| LAlt |------| |------| Enter| Space|
+ * | | | End | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+[_QW] = KEYMAP( // Layer1: QWERTY
+ // left hand
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
+ KC_LSFT,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_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(_NU),
+
+ KC_LCTL,KC_LALT,
+ KC_HOME,
+ KC_SPC, KC_LALT, KC_END,
+ // right hand
+ KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC,
+ KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS,
+ KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT,
+ TG(_GA),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT,
+
+ MO(_ME),TG(_GA),
+ KC_PGUP,
+ KC_PGDN,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 | + | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | RESET|QWERTY|Dvorak|Colemk| | | 0 | . | = | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * |NumLck| | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[_NU] = KEYMAP(
+ // 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_GRV,
+ _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______,
+ RESET, DF(_QW), DF(_DV), DF(_CO), _______,
+
+ KC_NLCK,_______,
+ _______,
+ _______,_______,_______,
+ // 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
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[_EX] = KEYMAP(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______,_______,
+ _______,
+ _______,_______,_______,
+ // right hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______,
+ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______,
+ _______,
+ _______, _______, _______
+ ),
+
+ /*
+ * Keymap: Gaming
+ *
+ * This is mostly a mouse overlay for the right hand while the left hand uses the QWERTY layout.
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | |WhlUp | MsUp |WhlDn | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| |MsLeft|MsDown|MsRght| | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | |MClick| | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | ~_GA|
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------|RClick|LClick|
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[_GA] = KEYMAP(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______,_______,
+ _______,
+ _______,_______,_______,
+
+ // 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)
+};
+
+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) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(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:
+ ergodox_right_led_1_on();
+ break;
+ case _QW:
+ ergodox_right_led_2_on();
+ break;
+ case _NU:
+ ergodox_right_led_3_on();
+ break;
+ case _GA:
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboards/ergodox/keymaps/replicaJunction/readme.md b/keyboards/ergodox/keymaps/replicaJunction/readme.md
new file mode 100644
index 000000000..8c4c03353
--- /dev/null
+++ b/keyboards/ergodox/keymaps/replicaJunction/readme.md
@@ -0,0 +1,5 @@
+# replicaJunction - Ergodox (EZ) Layout
+
+I designed this layout, along with my complimentary Atreus layout, to address the challenge of having an Ergodox as my primary home keyboard and an Atreus as my primary work board. I wanted a layout that provided symbols in comfortable locations on both keyboards - but didn't require me to learn two separate sets of symbols for the two keyboards.
+
+I had originally used several keys as dual-role keys, where a tap would send a keypress and a long press and hold would trigger a different layer. However, after several months of experimenting with those ideas, I've begun moving away from that design due to performance. It's very hard to strike a balance between the time it takes to press a key normally while typing and the "delay" in the typing motion needed to trigger the alternate layer. I was frequently getting strange characters and artifacts because I pressed the function key + the symbol key too quickly, and the layer never shifted. \ No newline at end of file