]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merged from upstream
authorJoshua T <joshua@sonofone.net>
Sat, 7 Jan 2017 20:01:21 +0000 (14:01 -0600)
committerJoshua T <joshua@sonofone.net>
Sat, 7 Jan 2017 20:01:21 +0000 (14:01 -0600)
13 files changed:
keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png [deleted file]
keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png [new file with mode: 0644]
keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png
keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png
keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png
keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png
keyboards/atreus/keymaps/replicaJunction/keymap.c
keyboards/atreus/keymaps/replicaJunction/readme.md
keyboards/ergodox/config.h
keyboards/ergodox/keymaps/replicaJunction/config.h [new file with mode: 0644]
keyboards/ergodox/keymaps/replicaJunction/keymap.c [new file with mode: 0644]
keyboards/ergodox/keymaps/replicaJunction/readme.md [new file with mode: 0644]
util/build.bat [new file with mode: 0644]

diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png
deleted file mode 100644 (file)
index 4640f9f..0000000
Binary files a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png and /dev/null differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png
new file mode 100644 (file)
index 0000000..1d5bd78
Binary files /dev/null and b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png differ
index 08c2e6140cb1594e342bf796c6dcf6fddac6f90c..cf4db3e2cace8c8c36f94a62d0976f80292c7de0 100644 (file)
Binary files a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png and b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png differ
index 34ad03decdb6024bdf993a03a77e44d09321d887..30e5621e4188db62abbfeba90e4766cae6eff875 100644 (file)
Binary files a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png and b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png differ
index 14ae35b54eaacb30f5b43e80b5babc47a3b2a014..95f8be5e06dacb648dcab5aa19edcf2f98f1eb28 100644 (file)
Binary files a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png and b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png differ
index 6598acb27b7f815ab068dec204de4b644674ff5e..3c445f90c6861b58ba357b9f4a785ff410f4a5b7 100644 (file)
Binary files a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png and b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png differ
index 52d3677fa7984b576823609d6da58eb39d39363f..d39a184d48705d703c48f61bdc836eca43293769 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Keyboard: Atreus
  * Keymap:   replicaJunction
- * Version:  0.3
+ * 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
 #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.
 
 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] = 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,
   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,  KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT),  LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
+  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] = 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,
   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,  KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
+  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] = KEYMAP( /* Extend */
-  KC_CAPS, _______, _______, _______, _______,                   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_CUT,  KX_COPY, _______, KX_PAST,                   _______, KC_TAB,  KCX_LST, _______, KC_INSERT,
-  _______, _______, _______, _______, _______, _______, _______, KC_SPC,  _______, _______, _______, KC_PSCR
+  _______, _______, _______, _______, 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
 ),
 
+/*
+ * Numbers and symbols
+ *
+ * ,----------------------------------.                     ,----------------------------------.
+ * |   !  |   @  |   {  |   }  |   &  |                     |   /  |   7  |   8  |   9  |   *  |
+ * +------+------+------+------+------|                     +------+------+------+------+------|
+ * |   #  |   $  |   (  |   )  |   ~  |                     |   |  |   4  |   5  |   6  |   -  |
+ * +------+------+------+------+------|                     +------+------+------+------+------|
+ * |   %  |   ^  |   [  |   ]  |   `  | ,------.   ,------. |   \  |   1  |   2  |   3  |   +  |
+ * +------+------+------+------+------| |      |   |      | +------+------+------+------+------|
+ * |      |  _GA |      |      |      | |      |   |      | |XXXXXX|   0  |   .  |   =  |      |
+ * `----------------------------------' `------'   `------' `----------------------------------'
+ *
+ */
 [_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_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), _______, MO(_FN), _______, _______,  _______, _______, KC_0,    KC_DOT, KC_EQL, _______
+  _______, 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] = 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
+  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] = KEYMAP( /* Gaming */
   _______, _______, _______, _______, _______,                   _______, KC_WH_U, KC_MS_U, KC_WH_D, _______,
   _______, _______, _______, _______, _______,                   _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
-  KC_Z,    _______, _______, _______, _______,                   KC_BTN3, _______, KC_MS_D, _______, _______,
-  _______, TG(_GA), _______, KC_LSFT, KC_SPC,  KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______
+  KC_Z,    _______, _______, _______, _______,                   _______, _______, KC_MS_D, _______, _______,
+  _______, TG(_GA), _______, KC_LSFT, KC_SPC,  KC_BSPC, KC_BTN2, KC_BTN1, KC_BTN3, _______, _______, _______
 )};
 
+/*
+ * Template
+ *
+ * ,----------------------------------.                     ,----------------------------------.
+ * |      |      |      |      |      |                     |      |      |      |      |      |
+ * +------+------+------+------+------|                     +------+------+------+------+------|
+ * |      |      |      |      |      |                     |      |      |      |      |      |
+ * +------+------+------+------+------|                     +------+------+------+------+------|
+ * |      |      |      |      |      | ,------.   ,------. |      |      |      |      |      |
+ * +------+------+------+------+------| |      |   |      | +------+------+------+------+------|
+ * |      |      |      |      |      | |      |   |      | |      |      |      |      |      |
+ * `----------------------------------' `------'   `------' `----------------------------------'
+ *
+ */
+
 const uint16_t PROGMEM fn_actions[] = {
 
 };
@@ -95,7 +201,7 @@ 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:
+        case _USER:
           if (record->event.pressed) {
             register_code(KC_RSFT);
           } else {
index 21af48e8fdf572334f2bd4100094701e8601dc61..6ac3cb00a4e8c734daaba218c34d87e402e3def4 100644 (file)
@@ -10,13 +10,15 @@ I won't claim that this layout is perfect for everyone. It does make several sig
 
 ## Base Layer ##
 
-![Atreus base layout](atreus-replica-base-colemakdh.png)
+![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.
+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.
 
-The secondary Alt on the left bottom row exists to provide a single-hand Alt+Tab shortcut, which would take two rows otherwise.
+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).
+
+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.
 
 ## Extend Layer ##
 
@@ -42,9 +44,11 @@ This layer also provides plenty of symbol shortcuts. Most of these can be access
 
 ![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.
+Function keys (F1-F12) are on this layer. Their layout in groups of four comes from Jeremy's Atreus layout in this repository. I'd been using 1-9 in a numpad layout, then adding 10-12 on the side...I suppose it took seeing someone else do it this way for me to realize how much more sense it makes.
+
+On the right side are mouse keys - cursor left/right/up/down, and scroll up/down. Volume keys are also here, though really only because there was room for them (I'm not entirely happy with their positions).
 
-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, but it is functionally identical to the base layer except for letter positions.
+Finally, the reset key is on this layer, as well as toggles from Colemak to QWERTY and back. The QWERTY layer is not currently documented, but it is functionally identical to the base layer except for letter positions.
 
 ## Gaming Layer ##
 
@@ -54,4 +58,4 @@ This is a small layer developed to allow some simple gameplay without a mouse. T
 
 The keys on the left hand bring Space into the left thumb's reach, as well as overriding the dual-role Shift with its standard function (Z in both QWERTY and in Colemak). This allows easy Shift presses without blocking the Z key, commonly used in games.
 
-I would probably not consider this a hard-core gaming keyboard, and this layout does have the huge problem of blocking access to the number keys, but for more casual games, it plays quite well. I've used it quite a bit on Minecraft, for example, and I'm quite pleased with it.
\ No newline at end of file
+I would probably not consider the Atreus a hard-core gaming keyboard in the first place, and this layout does have the huge problem of blocking access to the number keys, but for more casual games, it plays quite well. I've used it quite a bit on Minecraft, for example, and I'm quite pleased with it.
\ No newline at end of file
index 994a8c64333249d013dd97e5c06b0c5fdb932183..36185983206b3802a4582bb3d7be682b414c0bfb 100644 (file)
@@ -34,4 +34,4 @@
 #endif
 
 
-#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
+#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
\ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/replicaJunction/config.h b/keyboards/ergodox/keymaps/replicaJunction/config.h
new file mode 100644 (file)
index 0000000..d32b46e
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+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_
+
+#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)) \
+)
+
+#ifdef SUBPROJECT_ez
+    #include "ez/config.h"
+#endif
+#ifdef SUBPROJECT_infinity
+    #include "infinity/config.h"
+#endif
+
+
+#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c
new file mode 100644 (file)
index 0000000..c921355
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ * 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/
+ */
+
+#include "ergodox.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.
+
+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] = KEYMAP(
+        // 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] = KEYMAP(  // 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] = 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_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] = KEYMAP(
+        // 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] = KEYMAP(
+        // 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)
+};
+
+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 (file)
index 0000000..8c4c033
--- /dev/null
@@ -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
diff --git a/util/build.bat b/util/build.bat
new file mode 100644 (file)
index 0000000..316bbfd
--- /dev/null
@@ -0,0 +1,51 @@
+@echo off
+
+rem Use this batch file from within an IDE to automatically build your firmware.
+rem You can pass command-line arguments to indicate which keyboard and keymap to build.
+rem
+rem Usage:
+rem vscode-build.bat "Working directory" "Keyboard" "Keymap"
+rem
+rem Ex. vscode-build.bat C:\Projects\qmk_firmware Planck default
+
+SET ROOTDIR="%~dp0..\"
+
+rem Modify this to define your keyboard
+rem SET KEYBOARD="ergodox_ez"
+if [%1]==[] (
+    echo. Keyboard is undefined; defaulting to Planck
+    SET KEYBOARD="Planck"
+) ELSE (
+    SET KEYBOARD="%1"
+)
+
+rem Modify this line to adjust your keymap.
+rem SET KEYMAP="replicaJunction"
+if [%2]==[] (
+    echo. Keyboard is undefined; defaulting to default
+    SET KEYMAP="default"
+) ELSE (
+    SET KEYMAP="%2"
+)
+
+echo.
+echo. --------------
+echo. Build started.
+echo. --------------
+echo.
+echo. Working directory: %ROOTDIR%
+echo. Keyboard: %KEYBOARD%
+echo. Keymap: %KEYMAP%
+echo.
+echo.
+CD /D "%ROOTDIR%"
+echo. Cleaning build directory...
+make clean KEYBOARD=%KEYBOARD% KEYMAP=%KEYMAP%
+echo.
+echo. Making keyboard %KEYBOARD% with keymap %KEYMAP%
+make KEYBOARD=%KEYBOARD% KEYMAP=%KEYMAP%
+echo.
+echo. ----------------
+echo. Build completed.
+echo. ----------------
+exit /b
\ No newline at end of file