aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.pngbin76319 -> 0 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.pngbin0 -> 75363 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.pngbin91555 -> 92445 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.pngbin92516 -> 91749 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.pngbin72509 -> 72856 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.pngbin73171 -> 74690 bytes
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/keymap.c136
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/readme.md16
-rw-r--r--keyboards/atreus62/keymaps/mneme/Makefile5
-rw-r--r--keyboards/atreus62/keymaps/mneme/README.md56
-rw-r--r--keyboards/atreus62/keymaps/mneme/config.h7
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/base.pngbin0 -> 458762 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/fun.pngbin0 -> 430634 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/sym.pngbin0 -> 433342 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/keymap.c337
-rw-r--r--keyboards/atreus62/keymaps/mneme/unicode114
-rw-r--r--keyboards/ergodox/config.h2
-rw-r--r--keyboards/ergodox/ez/config.h2
-rw-r--r--keyboards/ergodox/keymaps/bryan/keymap.c226
-rw-r--r--keyboards/ergodox/keymaps/common-nighthawk/Makefile6
-rw-r--r--keyboards/ergodox/keymaps/common-nighthawk/keymap.c216
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.pngbin0 -> 79741 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.pngbin0 -> 55349 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.pngbin0 -> 50926 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.pngbin0 -> 43551 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/keymap.c273
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/readme.md36
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.pngbin0 -> 84725 bytes
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.pngbin0 -> 82660 bytes
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.pngbin0 -> 72923 bytes
-rw-r--r--keyboards/ergodox/keymaps/ishigoya-jp/keymap.c962
-rw-r--r--keyboards/ergodox/keymaps/ishigoya-jp/readme.md54
-rw-r--r--keyboards/ergodox/keymaps/replicaJunction/config.h63
-rw-r--r--keyboards/ergodox/keymaps/replicaJunction/keymap.c336
-rw-r--r--keyboards/ergodox/keymaps/replicaJunction/readme.md5
-rw-r--r--keyboards/kinesis/Makefile4
-rw-r--r--keyboards/kinesis/alvicstep/Makefile3
-rw-r--r--keyboards/kinesis/alvicstep/alvicstep.c105
-rw-r--r--keyboards/kinesis/alvicstep/alvicstep.h67
-rw-r--r--keyboards/kinesis/alvicstep/config.h35
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib (renamed from keyboards/kinesis/docs/kicad/kinesis-cache.lib)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro (renamed from keyboards/kinesis/docs/kicad/kinesis.pro)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch (renamed from keyboards/kinesis/docs/kicad/kinesis.sch)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg (renamed from keyboards/kinesis/docs/photos/P1050573.jpg)bin177711 -> 177711 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg (renamed from keyboards/kinesis/docs/photos/P1050574.jpg)bin343978 -> 343978 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg (renamed from keyboards/kinesis/docs/photos/P1050575.jpg)bin266771 -> 266771 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/readme.txt (renamed from keyboards/kinesis/docs/readme.txt)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/schematic.png (renamed from keyboards/kinesis/docs/schematic.png)bin175014 -> 175014 bytes
-rw-r--r--keyboards/kinesis/alvicstep/matrix.c (renamed from keyboards/kinesis/matrix.c)0
-rw-r--r--keyboards/kinesis/alvicstep/readme.md46
-rw-r--r--keyboards/kinesis/alvicstep/rules.mk10
-rw-r--r--keyboards/kinesis/config.h49
-rw-r--r--keyboards/kinesis/keymaps/default/keymap.c32
-rw-r--r--keyboards/kinesis/keymaps/dvorak/Makefile (renamed from keyboards/kinesis/keymaps/programmer/Makefile)0
-rw-r--r--keyboards/kinesis/keymaps/dvorak/config.h (renamed from keyboards/kinesis/keymaps/programmer/config.h)0
-rw-r--r--keyboards/kinesis/keymaps/dvorak/keymap.c93
-rw-r--r--keyboards/kinesis/keymaps/milestogo/Makefile21
-rw-r--r--keyboards/kinesis/keymaps/milestogo/config.h8
-rw-r--r--keyboards/kinesis/keymaps/milestogo/keymap.c (renamed from keyboards/kinesis/keymaps/programmer/keymap.c)160
-rw-r--r--keyboards/kinesis/keymaps/milestogo/readme.md (renamed from keyboards/kinesis/keymaps/programmer/readme.md)0
-rw-r--r--keyboards/kinesis/kinesis.c105
-rw-r--r--keyboards/kinesis/kinesis.h70
-rw-r--r--keyboards/kinesis/readme.md42
-rw-r--r--keyboards/kinesis/stapelberg/Makefile3
-rw-r--r--keyboards/kinesis/stapelberg/config.h50
-rw-r--r--keyboards/kinesis/stapelberg/images/controller_board.jpgbin0 -> 129312 bytes
-rw-r--r--keyboards/kinesis/stapelberg/images/exterior_reset.jpgbin0 -> 97794 bytes
-rw-r--r--keyboards/kinesis/stapelberg/images/teensy_detail.jpgbin0 -> 119748 bytes
-rw-r--r--keyboards/kinesis/stapelberg/readme.md55
-rw-r--r--keyboards/kinesis/stapelberg/rules.mk10
-rw-r--r--keyboards/kinesis/stapelberg/stapelberg.c28
-rw-r--r--keyboards/kinesis/stapelberg/stapelberg.h72
-rw-r--r--keyboards/planck/keymaps/jeremy-dev/keymap.c180
-rw-r--r--keyboards/planck/keymaps/jeremy-dev/readme.md85
-rw-r--r--keyboards/planck/keymaps/priyadi/Makefile2
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c196
-rw-r--r--keyboards/planck/keymaps/vifon/Makefile5
-rw-r--r--keyboards/planck/keymaps/vifon/config.h5
-rw-r--r--keyboards/planck/keymaps/vifon/keymap.c4
-rw-r--r--keyboards/tv44/keymaps/default/keymap.c2
-rw-r--r--quantum/process_keycode/process_unicode.c41
-rw-r--r--quantum/quantum_keycodes.h4
-rw-r--r--readme.md2
83 files changed, 4099 insertions, 347 deletions
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
index 4640f9f52..000000000
--- a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png
+++ /dev/null
Binary files 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
index 000000000..1d5bd78db
--- /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
index 08c2e6140..cf4db3e2c 100644
--- a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png
+++ 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
index 34ad03dec..30e5621e4 100644
--- a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png
index 14ae35b54..95f8be5e0 100644
--- a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png
+++ b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png
Binary files differ
diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png
index 6598acb27..3c445f90c 100644
--- a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png
+++ 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
index 52d3677fa..d39a184d4 100644
--- a/keyboards/atreus/keymaps/replicaJunction/keymap.c
+++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Keyboard: Atreus 2 * Keyboard: Atreus
3 * Keymap: replicaJunction 3 * Keymap: replicaJunction
4 * Version: 0.3 4 * Version: 0.4
5 * 5 *
6 * This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez. 6 * This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez.
7 * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox. I now 7 * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox. I now
@@ -42,51 +42,157 @@
42#define KX_PAST LCTL(KC_V) 42#define KX_PAST LCTL(KC_V)
43#define KX_UNDO LCTL(KC_Z) 43#define KX_UNDO LCTL(KC_Z)
44 44
45#define _USER 0 // User macro
46
45; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. 47; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
46 48
47const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 49const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50
51/*
52 * Colemak-ModDH
53 *
54 * ,----------------------------------. ,----------------------------------.
55 * | Q | W | F | P | B | | J | L | U | Y | ; |
56 * +------+------+------+------+------| +------+------+------+------+------|
57 * | A | R | S | T | G | | M | N | E | I | O |
58 * +------+------+------+------+------| +------+------+------+------+------|
59 * |Z Shft| X | C | D | V | ,------. ,------. | K | H | , | . |/ Shft|
60 * +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------|
61 * | Esc | Gui | Tab | _FN | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = |
62 * `----------------------------------' `------' `------' `----------------------------------'
63 *
64 */
48[_CO] = KEYMAP( 65[_CO] = KEYMAP(
49 KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, 66 KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
50 KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, 67 KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O,
51 SFT_T(KC_Z), KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, SFT_T(KC_SLSH), 68 SFT_T(KC_Z), KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
52 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 69 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
53), 70),
54 71
72/*
73 * QWERTY
74 *
75 * ,----------------------------------. ,----------------------------------.
76 * | Q | W | E | R | T | | Y | U | I | O | P |
77 * +------+------+------+------+------| +------+------+------+------+------|
78 * | A | S | D | F | G | | H | J | K | L | ; |
79 * +------+------+------+------+------| +------+------+------+------+------|
80 * |Z Shft| X | C | V | B | ,------. ,------. | N | M | , | . |/ Shft|
81 * +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------|
82 * | Esc | Gui | Tab | _FN | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = |
83 * `----------------------------------' `------' `------' `----------------------------------'
84 *
85 */
55[_QW] = KEYMAP( /* Qwerty */ 86[_QW] = KEYMAP( /* Qwerty */
56 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 87 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
57 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 88 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
58 SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH), 89 SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
59 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 90 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
60), 91),
61 92
93/*
94 * Extend
95 *
96 * Ctrl+` is a keyboard shortcut for the program ConEmu, which brings up a dropdown console window.
97 *
98 * Also note that some dual-role keys are overridden here with their modifiers
99 *
100 * ,----------------------------------. ,----------------------------------.
101 * | | | | |Ctrl `| | PgUp | Home | Up | End | Del |
102 * +------+------+------+------+------| +------+------+------+------+------|
103 * | Gui | Shift| Alt | Ctrl | | | PgDn | Left | Down | Right| Bksp |
104 * +------+------+------+------+------| +------+------+------+------+------|
105 * | Shift| Cut | Copy | | Paste| ,------. ,------. | | ^Tab | Tab | |Insert|
106 * +------+------+------+------+------| | Del | | Enter| +------+------+------+------+------|
107 * | | | | | | | | | | | Space|XXXXXX| | |PrntSc|
108 * `----------------------------------' `------' `------' `----------------------------------'
109 *
110 */
62[_EX] = KEYMAP( /* Extend */ 111[_EX] = KEYMAP( /* Extend */
63 KC_CAPS, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, 112 _______, _______, _______, _______, LCTL(KC_GRV), KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL,
64 _______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, 113 KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
65 _______, KX_CUT, KX_COPY, _______, KX_PAST, _______, KC_TAB, KCX_LST, _______, KC_INSERT, 114 KC_LSFT, KX_CUT, KX_COPY, _______, KX_PAST, _______, KCX_LST, KC_TAB, _______, KC_INS,
66 _______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR 115 _______, _______, _______, _______, _______, KC_DEL, KC_ENT, KC_SPC, _______, _______, _______, KC_PSCR
67), 116),
68 117
118/*
119 * Numbers and symbols
120 *
121 * ,----------------------------------. ,----------------------------------.
122 * | ! | @ | { | } | & | | / | 7 | 8 | 9 | * |
123 * +------+------+------+------+------| +------+------+------+------+------|
124 * | # | $ | ( | ) | ~ | | | | 4 | 5 | 6 | - |
125 * +------+------+------+------+------| +------+------+------+------+------|
126 * | % | ^ | [ | ] | ` | ,------. ,------. | \ | 1 | 2 | 3 | + |
127 * +------+------+------+------+------| | | | | +------+------+------+------+------|
128 * | | _GA | | | | | | | | |XXXXXX| 0 | . | = | |
129 * `----------------------------------' `------' `------' `----------------------------------'
130 *
131 */
69[_NU] = KEYMAP( /* Numbers and symbols */ 132[_NU] = KEYMAP( /* Numbers and symbols */
70 KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, 133 KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR,
71 KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS, 134 KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS,
72 KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS, KC_1, KC_2, KC_3, KC_PLUS, 135 KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS, KC_1, KC_2, KC_3, KC_PLUS,
73 _______, TG(_GA), _______, MO(_FN), _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______ 136 _______, TG(_GA), _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______
74), 137),
75 138
139/*
140 * Functions
141 *
142 * ,----------------------------------. ,----------------------------------.
143 * | Caps | F9 | F10 | F11 | F12 | | _USER|Whl Up| MUp |Whl Dn| |
144 * +------+------+------+------+------| +------+------+------+------+------|
145 * | | F5 | F6 | F7 | F8 | | Vol ^| MLeft| MDown|MRight| |
146 * +------+------+------+------+------| +------+------+------+------+------|
147 * | | F1 | F2 | F3 | F4 | ,------. ,------. | Vol v| | | | |
148 * +------+------+------+------+------| | | |RClick| +------+------+------+------+------|
149 * | | | |XXXXXX| | | | | | |LClick|MClick| _CO | _GA | RESET|
150 * `----------------------------------' `------' `------' `----------------------------------'
151 *
152 */
76[_FN] = KEYMAP( /* Functions */ 153[_FN] = KEYMAP( /* Functions */
77 KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_F7, KC_F8, KC_F9, KC_F10, 154 KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, M(_USER),KC_WH_U, KC_MS_U, KC_WH_D, _______,
78 KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_F4, KC_F5, KC_F6, KC_F11, 155 _______, KC_F5, KC_F6, KC_F7, KC_F8, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_R, _______,
79 _______, KC_VOLU, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12, 156 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_VOLD, _______, _______, _______, _______,
80 _______, _______, _______, _______, KC_MSTP, _______, _______, _______, KC_NO, DF(_CO), DF(_QW), RESET 157 _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN1, KC_BTN3, DF(_CO), DF(_QW), RESET
81), 158),
82 159
160/*
161 * Gaming
162 *
163 * ,----------------------------------. ,----------------------------------.
164 * | | | | | | | |Whl Up| MUp |Whl Dn| |
165 * +------+------+------+------+------| +------+------+------+------+------|
166 * | | | | | | | | MLeft| MDown|MRight| |
167 * +------+------+------+------+------| +------+------+------+------+------|
168 * | Z | | | | | ,------. ,------. | | | | | |
169 * +------+------+------+------+------| | Bksp | |RClick| +------+------+------+------+------|
170 * | | _GA | | Shift| Space| | | | | |LClick|MClick| | | |
171 * `----------------------------------' `------' `------' `----------------------------------'
172 *
173 */
83[_GA] = KEYMAP( /* Gaming */ 174[_GA] = KEYMAP( /* Gaming */
84 _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, 175 _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______,
85 _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, 176 _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
86 KC_Z, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______, 177 KC_Z, _______, _______, _______, _______, _______, _______, KC_MS_D, _______, _______,
87 _______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ 178 _______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, KC_BTN3, _______, _______, _______
88)}; 179)};
89 180
181/*
182 * Template
183 *
184 * ,----------------------------------. ,----------------------------------.
185 * | | | | | | | | | | | |
186 * +------+------+------+------+------| +------+------+------+------+------|
187 * | | | | | | | | | | | |
188 * +------+------+------+------+------| +------+------+------+------+------|
189 * | | | | | | ,------. ,------. | | | | | |
190 * +------+------+------+------+------| | | | | +------+------+------+------+------|
191 * | | | | | | | | | | | | | | | |
192 * `----------------------------------' `------' `------' `----------------------------------'
193 *
194 */
195
90const uint16_t PROGMEM fn_actions[] = { 196const uint16_t PROGMEM fn_actions[] = {
91 197
92}; 198};
@@ -95,7 +201,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
95{ 201{
96 // MACRODOWN only works in this function 202 // MACRODOWN only works in this function
97 switch(id) { 203 switch(id) {
98 case 0: 204 case _USER:
99 if (record->event.pressed) { 205 if (record->event.pressed) {
100 register_code(KC_RSFT); 206 register_code(KC_RSFT);
101 } else { 207 } else {
diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md
index 21af48e8f..6ac3cb00a 100644
--- a/keyboards/atreus/keymaps/replicaJunction/readme.md
+++ b/keyboards/atreus/keymaps/replicaJunction/readme.md
@@ -10,13 +10,15 @@ I won't claim that this layout is perfect for everyone. It does make several sig
10 10
11## Base Layer ## 11## Base Layer ##
12 12
13![Atreus base layout](atreus-replica-base-colemakdh.png) 13![Atreus base layout](atreus-replica-base.png)
14 14
15The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/). 15The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
16 16
17Note 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. 17The 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.
18 18
19The secondary Alt on the left bottom row exists to provide a single-hand Alt+Tab shortcut, which would take two rows otherwise. 19Occasionally, 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).
20
21In 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.
20 22
21## Extend Layer ## 23## Extend Layer ##
22 24
@@ -42,9 +44,11 @@ This layer also provides plenty of symbol shortcuts. Most of these can be access
42 44
43![Atreus function layer](atreus-replica-function.png) 45![Atreus function layer](atreus-replica-function.png)
44 46
45Function 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. 47Function 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.
48
49On 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).
46 50
47The 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. 51Finally, 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.
48 52
49## Gaming Layer ## 53## Gaming Layer ##
50 54
@@ -54,4 +58,4 @@ This is a small layer developed to allow some simple gameplay without a mouse. T
54 58
55The 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. 59The 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.
56 60
57I 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 61I 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
diff --git a/keyboards/atreus62/keymaps/mneme/Makefile b/keyboards/atreus62/keymaps/mneme/Makefile
new file mode 100644
index 000000000..046aec273
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/Makefile
@@ -0,0 +1,5 @@
1TAP_DANCE_ENABLE = yes
2NKRO_ENABLE = true
3MOUSEKEY_ENABLE = no
4EXTRAKEY_ENABLE = yes
5CONSOLE_ENABLE = no
diff --git a/keyboards/atreus62/keymaps/mneme/README.md b/keyboards/atreus62/keymaps/mneme/README.md
new file mode 100644
index 000000000..04ab070be
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/README.md
@@ -0,0 +1,56 @@
1<!-- -*- mode: markdown; fill-column: 8192 -*- -->
2
3Mnemes Swedish Bonaza
4=======================
5
6My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
7
8 [algernon]: https://github.com/algernon/ergodox-layout
9
10It's for Windows (current work forces me to) and Swedish (matter of birth) so ymmw.
11
12## Table of Contents
13
14* [Layouts](#layouts)
15 - [Base layer](#base-layer)
16 - [Nav layer](#nav-layer)
17 - [Sym layer](#sym-layer)
18 - [LED states](#led-states)
19
20# Layouts
21
22## Base layer
23
24![Base layer](img/base.png)
25
26
27* The number row doubles as a function row. Short presses produces numbers, long presses produces Fxx
28* The `Shift`, `Alt`, and `Control` modifiers are one-shot.
29* `Backspace` and `Enter` doubles as switches to the `sym` layer when held
30* The `ESC` key also doubles as a one-shot cancel key.
31* The **Lead** key is followed by a sequence of keys.
32 - `LEAD l` : `lgui+l`.
33 - `LEAD s l` : `λ`.
34 - `LEAD s s` : `¯\_(ツ)_/¯`
35 - `LEAD s f` : `凸(ツ)凸`
36 - `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
37
38
39## Nav layer
40
41![Nav layer](img/fun.png)
42
43Basic navigation on the right hand and modifiers close
44by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
45
46## Sym layer
47
48![Sym layer](img/sym.png)
49
50* Easy access to most symbols I use on a daily basis. Most common are on the home row, the rest are grouped as best as I could.
51
52- `eq` : Tapdance, produces `===` and `!==`
53- `fun`: Tapdance, produces `=>` and `() => {\n`
54
55# License
56 GPL-3+
diff --git a/keyboards/atreus62/keymaps/mneme/config.h b/keyboards/atreus62/keymaps/mneme/config.h
new file mode 100644
index 000000000..2c2a08c05
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/config.h
@@ -0,0 +1,7 @@
1#define ONESHOT_TIMEOUT 3000
2#define TAPPING_TERM 200
3#define PREVENT_STUCK_MODIFIERS
4
5#define LEADER_TIMEOUT 1000
6
7#include "../../config.h"
diff --git a/keyboards/atreus62/keymaps/mneme/img/base.png b/keyboards/atreus62/keymaps/mneme/img/base.png
new file mode 100644
index 000000000..86907d544
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/base.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/fun.png b/keyboards/atreus62/keymaps/mneme/img/fun.png
new file mode 100644
index 000000000..ec5a478c6
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/fun.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/sym.png b/keyboards/atreus62/keymaps/mneme/img/sym.png
new file mode 100644
index 000000000..11b5bd4b0
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/sym.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/keymap.c b/keyboards/atreus62/keymaps/mneme/keymap.c
new file mode 100644
index 000000000..7c1879982
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/keymap.c
@@ -0,0 +1,337 @@
1#include <stdarg.h>
2#include "atreus62.h"
3#include "led.h"
4#include "action_layer.h"
5#include "action_util.h"
6
7/*
8 *WINDOWS SWEDISH
9 */
10#define KN_HALF KC_GRV // 1/2
11#define KN_PLUS KC_MINS // +
12#define KN_ACUT KC_EQL // ´
13#define KN_AO KC_LBRC // Å
14#define KN_UMLA KC_RBRC // ¨
15#define KN_OE KC_SCLN // Ö
16#define KN_AE KC_QUOT // Ä
17#define KN_QUOT KC_NUHS // '
18#define KN_LABK KC_NUBS // <
19#define KN_MINS KC_SLSH // -
20#define KN_EXLM LSFT(KC_1) // !
21#define KN_DQT LSFT(KC_2) // "
22#define KN_AT RALT(KC_2) // @
23#define KN_HASH LSFT(KC_3) // #
24#define KN_DLR RALT(KC_4) // $
25#define KN_PERC LSFT(KC_5) // %
26#define KN_AMPR LSFT(KC_6) // &
27#define KN_SLSH LSFT(KC_7) // /
28#define KN_LPRN LSFT(KC_8) // (
29#define KN_RPRN LSFT(KC_9) // )
30#define KN_EQL LSFT(KC_0) // =
31#define KN_UNDS LSFT(KN_MINS) // _
32#define KN_QUES LSFT(KN_PLUS) // ?
33#define KN_GRAV LSFT(KN_ACUT) // `
34#define KN_LCBR RALT(KC_7) // {
35#define KN_RCBR RALT(KC_0) // }
36#define KN_LBRC RALT(KC_8) // [
37#define KN_RBRC RALT(KC_9) // ]
38#define KN_RABK LSFT(KN_LABK) // <
39#define KN_COLN LSFT(KC_DOT) // :
40#define KN_SCLN LSFT(KC_COMM) // :
41#define KN_PIPE RALT(KN_LABK) // |
42#define KN_QUES LSFT(KN_PLUS) // ?
43#define KN_CIRC LSFT(KN_UMLA) // ^
44#define KN_ASTR LSFT(KN_QUOT) // *
45#define KN_TILD RALT(KN_UMLA) // ~
46#define KN_BSLS RALT(KN_PLUS) //
47
48#define OSM_LCTL OSM(MOD_LCTL)
49#define OSM_LALT OSM(MOD_LALT)
50#define OSM_LSFT OSM(MOD_LSFT)
51
52#define KC_HYP LSFT(LALT(LCTL(KC_LGUI)))
53
54#define KC_COPY LCTL(KC_C)
55#define KC_PASTE LCTL(KC_V)
56#define KC_UNDO LCTL(KC_Z)
57#define KC_REDO LCTL(LSFT(KC_Z))
58
59// Layers
60enum {
61 BASE = 0,
62 NAV,
63 SYM
64};
65
66//Macros
67enum {
68 KF_1 = 0, // 1, F1
69 KF_2, // ...
70 KF_3,
71 KF_4,
72 KF_5,
73 KF_6,
74 KF_7,
75 KF_8,
76 KF_9,
77 KF_10,
78 KF_11,
79 KF_12
80};
81
82// Tapdance
83enum {
84 TD_FUN = 0,
85 TD_EQ
86};
87
88//Custom keycodes
89enum {
90 PLACEHOLDER = SAFE_RANGE
91};
92
93//State and timers
94uint16_t kf_timers[12];
95
96
97
98const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99
100 [BASE] = {
101
102 { M(KF_11) ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,KC_NO ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) },
103 { KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_NO ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KN_AO },
104 { OSM_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_NO ,KC_H ,KC_J ,KC_K ,KC_L ,KN_OE ,KN_AE },
105 { OSM_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DELT ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KN_MINS ,OSM_LSFT },
106 { MO(NAV) ,OSM_LCTL ,OSM_LALT ,KC_LGUI ,KC_SPC ,LT(SYM,KC_BSPC) ,KC_HYP ,LT(SYM,KC_ENT) ,KC_SPC ,KC_LEAD ,KC_LALT ,KC_LCTRL ,MO(NAV) }
107
108 },
109 [NAV] = {
110
111 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
112 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS },
113 { KC_TRNS ,KC_LSFT ,KC_LCTL ,KC_LALT ,KC_L ,KC_TRNS ,KC_NO ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRNS ,KC_TRNS },
114 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
115 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_VOLD ,KC_VOLU }
116
117 },
118 [SYM] = {
119
120 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TD(TD_EQ) ,KC_NO ,TD(TD_FUN) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
121 { KC_TRNS ,KN_LABK ,KN_RABK ,KN_LCBR ,KN_RCBR ,KN_PLUS ,KC_NO ,KN_AT ,KN_DQT ,KN_QUOT ,KN_GRAV ,KN_SLSH ,KC_TRNS },
122 { KC_TRNS ,KN_EXLM ,KN_EQL ,KN_LPRN ,KN_RPRN ,KN_MINS ,KC_NO ,KN_UNDS ,KN_SCLN ,KN_COLN ,KN_AMPR ,KN_PIPE ,KC_TRNS },
123 { KC_TRNS ,KN_DLR ,KN_PERC ,KN_LBRC ,KN_RBRC ,KN_ASTR ,KC_TRNS ,KN_HASH ,KC_COMM ,KC_DOT ,KN_QUES ,KN_BSLS ,KC_TRNS },
124 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS }
125
126 }
127};
128
129#define TAP_ONCE(code) \
130 register_code (code); \
131 unregister_code (code)
132
133static void m_tapn (uint8_t code, ...) {
134 uint8_t kc = code;
135 va_list ap;
136
137 va_start(ap, code);
138 do {
139 register_code(kc);
140 unregister_code(kc);
141 wait_ms(50);
142 kc = va_arg(ap, int);
143 } while (kc != 0);
144 va_end(ap);
145}
146
147static void m_handle_kf (keyrecord_t *record, uint8_t id) {
148 uint8_t code = id - KF_1;
149
150 if (record->event.pressed) {
151 kf_timers[code] = timer_read ();
152 } else {
153 uint8_t kc_base;
154 uint8_t long_press = (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM);
155
156 kf_timers[code] = 0;
157
158 switch(id){
159 case KF_1 ... KF_10:
160 if (long_press) {
161 // Long press
162 kc_base = KC_F1;
163 } else {
164 kc_base = KC_1;
165 }
166 code += kc_base;
167 break;
168 case KF_11:
169 code = long_press ? KC_F11 : KC_ESC;
170 break;
171 case KF_12:
172 code = long_press ? KC_F12 : KN_PLUS;
173 break;
174 }
175 register_code (code);
176 unregister_code (code);
177 }
178}
179
180const uint16_t PROGMEM fn_actions[] = {
181};
182
183const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
184{
185 switch (id) {
186 case KF_1 ... KF_12:
187 m_handle_kf(record, id);
188 break;
189 }
190 return MACRO_NONE;
191};
192
193// Custom keycodes
194bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 bool queue = true;
196
197 //Cancle one-shot mods.
198 switch (keycode) {
199 case KC_ESC:
200 if (record->event.pressed && get_oneshot_mods() && !has_oneshot_mods_timed_out()) {
201 clear_oneshot_mods();
202 queue = false;
203 }
204 break;
205 }
206 return queue;
207}
208
209// TAP DANCE SETTINGS
210void dance_eq (qk_tap_dance_state_t *state, void *user_data) {
211 switch (state->count) {
212 case 1: // ===
213 register_code(KC_LSHIFT);
214 m_tapn(KC_0, KC_0, KC_0, 0);
215 unregister_code(KC_LSHIFT);
216 break;
217 case 2:
218 register_code(KC_LSHIFT);
219 m_tapn(KC_1, KC_0, KC_0, 0);
220 unregister_code(KC_LSHIFT);
221 break;
222 default:
223 reset_tap_dance(state);
224 }
225}
226
227void dance_fun (qk_tap_dance_state_t *state, void *user_data) {
228 switch (state->count) {
229 case 1: // =>
230 register_code(KC_LSHIFT);
231 m_tapn(KC_0, KN_LABK, 0);
232 unregister_code(KC_LSHIFT);
233 break;
234 case 2: // () => {}
235 register_code(KC_LSHIFT);
236 m_tapn(KC_8, KC_9, KC_SPC, KC_0, KN_LABK, KC_SPC, 0);
237 unregister_code(KC_LSHIFT);
238 register_code(KC_RALT);
239 m_tapn(KC_7, 0);
240 unregister_code(KC_RALT);
241 TAP_ONCE(KC_ENT);
242 break;
243 default:
244 reset_tap_dance(state);
245 }
246}
247
248qk_tap_dance_action_t tap_dance_actions[] = {
249 [TD_FUN] = ACTION_TAP_DANCE_FN (dance_fun)
250 ,[TD_EQ] = ACTION_TAP_DANCE_FN (dance_eq)
251};
252
253// Runs just one time when the keyboard initializes.
254void matrix_init_user(void) {
255 set_unicode_input_mode(UC_WINC);
256};
257
258LEADER_EXTERNS();
259// Runs constantly in the background, in a loop.
260void matrix_scan_user(void) {
261 LEADER_DICTIONARY() {
262 leading = false;
263 leader_end();
264 SEQ_ONE_KEY(KC_L){
265 register_code(KC_RGUI);
266 TAP_ONCE(KC_L);
267 unregister_code(KC_RGUI);
268 };
269
270
271 SEQ_TWO_KEYS (KC_A, KC_W) {
272 //Web - chrome
273 register_code (KC_LGUI); TAP_ONCE (KC_1); unregister_code (KC_LGUI);
274 }
275 SEQ_TWO_KEYS (KC_A, KC_P) {
276 //sPotify
277 register_code (KC_LGUI); TAP_ONCE (KC_2); unregister_code (KC_LGUI);
278
279 }
280 SEQ_TWO_KEYS (KC_A, KC_T) {
281 //Total Commander
282 register_code (KC_LGUI); TAP_ONCE (KC_3); unregister_code (KC_LGUI);
283
284 }
285 SEQ_TWO_KEYS (KC_A, KC_A) {
286 //Atom
287 register_code (KC_LGUI); TAP_ONCE (KC_4); unregister_code (KC_LGUI);
288
289 }
290 SEQ_TWO_KEYS (KC_A, KC_E) {
291 //Emacs
292 register_code (KC_LGUI); TAP_ONCE (KC_5); unregister_code (KC_LGUI);
293
294 }
295 SEQ_TWO_KEYS (KC_A, KC_C) {
296 //Cmdr
297 register_code (KC_LGUI); TAP_ONCE (KC_6); unregister_code (KC_LGUI);
298
299 }
300 SEQ_TWO_KEYS (KC_A, KC_S) {
301 //Slack
302 register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
303 }
304
305
306 SEQ_TWO_KEYS (KC_S, KC_S) {
307 // ¯\_(ツ)_/¯
308 unicode_input_start(); register_hex(0xaf); unicode_input_finish();
309 register_code (KC_LALT);
310 register_code (KC_LCTL);
311 TAP_ONCE (KN_PLUS);
312 unregister_code (KC_LCTL);
313 unregister_code (KC_LALT);
314
315 register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
316 unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
317 register_code (KC_RSFT); TAP_ONCE (KC_9); TAP_ONCE(KC_7); unregister_code (KC_RSFT);
318 unicode_input_start (); register_hex(0xaf); unicode_input_finish();
319 }
320
321 SEQ_TWO_KEYS (KC_S, KC_F) {
322 // 凸(ツ)凸
323 unicode_input_start(); register_hex(0x51F8); unicode_input_finish();
324 register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
325 unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
326 register_code (KC_RSFT); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
327 unicode_input_start (); register_hex(0x51F8); unicode_input_finish();
328 }
329
330 SEQ_TWO_KEYS (KC_S, KC_L) {
331 // λ
332 unicode_input_start();
333 register_hex(0x03bb);
334 unicode_input_finish();
335 }
336 };
337};
diff --git a/keyboards/atreus62/keymaps/mneme/unicode b/keyboards/atreus62/keymaps/mneme/unicode
new file mode 100644
index 000000000..b3f62b6d3
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/unicode
@@ -0,0 +1,114 @@
1Todo
2☐ 2610 Todo
3☑ 2611 Done
4☒ 2612 Failed
5
6Operator
7× 00D7 Multiplication
8÷ 00F7 Division
9≤ 2264 LessEqual
10≥ 2265 MoreEqual
11± 00B1 Plusminus
12
13Math
14∏ 220F Product
15∑ 2211 Sum
16≈ 2248 Almost
17≡ 2261 Equivalent
18∞ 221E Infinity
19‰ 2030 Mille
20
21Set
22⊂ 2282 Subset
23⊃ 2283 sUperset
24∩ 2229 Intersextion
25∪ 222A Union
26∈ 2208 Element
27∉ 2209 Notelement
28∍ 220D Contains
29∌ 220C doesNotcontain
30
31Logic
32¬ 00AC Not
33∧ 2227 And
34∨ 2228 Or
35∃ 2203 Exists
36∄ 2204 Notexists
37
38Greek
39µ 00B5 Micro
40λ 03BB Lamda
41Ω 2126 Omega
42α 03B1 Alpha
43β 03B2 Beta
44γ 03B3 Gamma
45π 03C0 Pi
46δ 03B4 Delta
47
48Other
49☁ 2601 Cloud
50☼ 263C Sun
51☂ 2602 Rain
52☠ 2620 Skull
53♺ 267A Recycle
54👍1F44D thumbsUp
55👎1F44E thumbsDown
56💩 1F4A9 Poo
57
58
59//Todo
60SEQ_THREE_KEYS(KC_U, KC_G, KC_T){m_unicode(0x2610);}; // Todo
61SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x2611);}; // Done
62SEQ_THREE_KEYS(KC_U, KC_G, KC_F){m_unicode(0x2612);}; // Failed
63
64//Operator
65SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x00D7);}; // Multiplication
66SEQ_THREE_KEYS(KC_U, KC_O, KC_D){m_unicode(0x00F7);}; // Division
67SEQ_THREE_KEYS(KC_U, KC_O, KC_L){m_unicode(0x2264);}; // LessEqual
68SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x2265);}; // MoreEqual
69SEQ_THREE_KEYS(KC_U, KC_O, KC_P){m_unicode(0x00B1);}; // Plusminus
70
71//Math
72SEQ_THREE_KEYS(KC_U, KC_M, KC_P){m_unicode(0x220F);}; // Product
73SEQ_THREE_KEYS(KC_U, KC_M, KC_S){m_unicode(0x2211);}; // Sum
74SEQ_THREE_KEYS(KC_U, KC_M, KC_A){m_unicode(0x2248);}; // Almost
75SEQ_THREE_KEYS(KC_U, KC_M, KC_E){m_unicode(0x2261);}; // Equivalent
76SEQ_THREE_KEYS(KC_U, KC_M, KC_I){m_unicode(0x221E);}; // Infinity
77SEQ_THREE_KEYS(KC_U, KC_M, KC_M){m_unicode(0x2030);}; // Mille
78
79//Set
80SEQ_THREE_KEYS(KC_U, KC_S, KC_S){m_unicode(0x2282);}; Subset
81SEQ_THREE_KEYS(KC_U, KC_S, KC_P){m_unicode(0x2283);}; suPerset
82SEQ_THREE_KEYS(KC_U, KC_S, KC_I){m_unicode(0x2229);}; Intersection
83SEQ_THREE_KEYS(KC_U, KC_S, KC_U){m_unicode(0x222A);}; Union
84SEQ_THREE_KEYS(KC_U, KC_S, KC_E){m_unicode(0x2208);}; Element
85SEQ_THREE_KEYS(KC_U, KC_S, KC_N){m_unicode(0x2209);}; Notelement
86SEQ_THREE_KEYS(KC_U, KC_S, KC_C){m_unicode(0x220D);}; Contains
87SEQ_THREE_KEYS(KC_U, KC_S, KC_D){m_unicode(0x220C);}; doesNotcontain
88
89//Logic
90SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x00AC);}; // Not
91SEQ_THREE_KEYS(KC_U, KC_L, KC_A){m_unicode(0x2227);}; // And
92SEQ_THREE_KEYS(KC_U, KC_L, KC_O){m_unicode(0x2228);}; // Or
93SEQ_THREE_KEYS(KC_U, KC_L, KC_E){m_unicode(0x2203);}; // Exists
94SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x2204);}; // Notexists
95
96//Greek
97SEQ_THREE_KEYS(KC_U, KC_G, KC_M){m_unicode(0x00B5);}; // Micro
98SEQ_THREE_KEYS(KC_U, KC_G, KC_L){m_unicode(0x03BB);}; // Lamda
99SEQ_THREE_KEYS(KC_U, KC_G, KC_O){m_unicode(0x2126);}; // Omega
100SEQ_THREE_KEYS(KC_U, KC_G, KC_A){m_unicode(0x03B1);}; // Alpha
101SEQ_THREE_KEYS(KC_U, KC_G, KC_B){m_unicode(0x03B2);}; // Beta
102SEQ_THREE_KEYS(KC_U, KC_G, KC_G){m_unicode(0x03B3);}; // Gamma
103SEQ_THREE_KEYS(KC_U, KC_G, KC_P){m_unicode(0x03C0);}; // Pi
104SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x03B4);}; // Delta
105
106//Zother
107SEQ_THREE_KEYS(KC_U, KC_Z, KC_C){m_unicode(0x2601);}; // Cloud
108SEQ_THREE_KEYS(KC_U, KC_Z, KC_S){m_unicode(0x263C);}; // Sun
109SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x2602);}; // Rain
110SEQ_THREE_KEYS(KC_U, KC_Z, KC_K){m_unicode(0x2620);}; // sKull
111SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x267A);}; // rEcycle
112SEQ_THREE_KEYS(KC_U, KC_Z, KC_U){m_unicode(0x1F44D);}; // thumbsUp
113SEQ_THREE_KEYS(KC_U, KC_Z, KC_D){m_unicode(0x1F44E);}; // thumbsDown
114SEQ_THREE_KEYS(KC_U, KC_Z, KC_P){m_unicode(0x1F4A9);}; // Poo
diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h
index 994a8c643..361859832 100644
--- a/keyboards/ergodox/config.h
+++ b/keyboards/ergodox/config.h
@@ -34,4 +34,4 @@
34#endif 34#endif
35 35
36 36
37#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ 37#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ \ No newline at end of file
diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
index 2e273eb97..6a8c66d7d 100644
--- a/keyboards/ergodox/ez/config.h
+++ b/keyboards/ergodox/ez/config.h
@@ -57,7 +57,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
57/* Set 0 if debouncing isn't needed */ 57/* Set 0 if debouncing isn't needed */
58#define DEBOUNCE 5 58#define DEBOUNCE 5
59 59
60#define USB_MAX_POWER_CONSUMPTION 50 60#define USB_MAX_POWER_CONSUMPTION 500
61 61
62/* 62/*
63 * Feature disable options 63 * Feature disable options
diff --git a/keyboards/ergodox/keymaps/bryan/keymap.c b/keyboards/ergodox/keymaps/bryan/keymap.c
new file mode 100644
index 000000000..572cea8cd
--- /dev/null
+++ b/keyboards/ergodox/keymaps/bryan/keymap.c
@@ -0,0 +1,226 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#define BASE 0 // default layer
7#define SYMB 1 // symbols
8#define MDIA 2 // media keys
9
10enum custom_keycodes {
11 PLACEHOLDER = SAFE_RANGE, // can always be here
12 EPRM,
13 VRSN,
14 RGB_SLD
15};
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18/* Keymap 0: Basic layer
19 *
20 * ,--------------------------------------------------------. ,--------------------------------------------------------.
21 * | = | 1 | 2 | 3 | 4 | 5 | Cmd,Shft,[ | | Cmd,Shft,] | 6 | 7 | 8 | 9 | 0 | - |
22 * |--------+------+------+------+------+-------------------| |------------+------+------+------+------+------+--------|
23 * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
24 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
25 * |BkSp/Cmd| A | S | D | F | G |------------| |------------| H | J | K | L |; / L2|' / Cmd |
26 * |--------+------+------+------+------+------| Hyper | | Meh |------+------+------+------+------+--------|
27 * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
28 * `--------+------+------+------+------+-------------------' `-------------+------+------+------+------+--------'
29 * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
30 * `----------------------------------' `----------------------------------'
31 * ,-------------. ,-------------.
32 * |Ctrl/Esc|PgUp| | App | LGui |
33 * ,------|------|------| |------+--------+------.
34 * | | | PgDn | | Home | | |
35 * | Space|Backsp|------| |------| Tab |Enter |
36 * | |ace | Esc | | Alt | | |
37 * `--------------------' `----------------------'
38 */
39// If it accepts an argument (i.e, is a function), it doesn't need KC_.
40// Otherwise, it needs KC_*
41[BASE] = KEYMAP( // layer 0 : default
42 // left hand
43 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, M(2),
44 KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
45 GUI_T(KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G,
46 KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
47 LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
48 CTL_T(KC_ESC),KC_PGUP,
49 KC_PGDN,
50 KC_SPC,KC_BSPC, KC_ESC,
51 // right hand
52 M(3), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
53 TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
54 KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
55 MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
56 KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
57
58 ALT_T(KC_APP), KC_LGUI,
59 KC_HOME,
60 KC_LALT,KC_TAB, KC_ENT
61 ),
62/* Keymap 1: Symbol Layer
63 *
64 * ,--------------------------------------------------. ,--------------------------------------------------.
65 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
66 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
67 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
68 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
69 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
70 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
71 * | | % | ^ | [ | ] | ~ | | | | <- | 1 | 2 | 3 | \ | |
72 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
73 * | | | | | | | | . | 0 | = | |
74 * `----------------------------------' `----------------------------------'
75 * ,-------------. ,-------------.
76 * | | | | | |
77 * ,------|------|------| |------+------+------.
78 * | | | | | | | |
79 * | | |------| |------| | |
80 * | | | | | | | |
81 * `--------------------' `--------------------'
82 */
83// SYMBOLS
84[SYMB] = KEYMAP(
85 // left hand
86 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
87 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
88 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
89 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
90 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
91 KC_TRNS,KC_TRNS,
92 KC_TRNS,
93 KC_TRNS,KC_TRNS,KC_TRNS,
94 // right hand
95 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
96 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
97 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
98 KC_TRNS, M(1), KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
99 KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
100 KC_TRNS, KC_TRNS,
101 KC_TRNS,
102 KC_TRNS, KC_TRNS, KC_TRNS
103),
104// KC_COMM, KC_MINS
105
106/* Keymap 2: Media and mouse keys
107 *
108 * ,--------------------------------------------------. ,--------------------------------------------------.
109 * | | | | | | | | | | | | | | | |
110 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
111 * | | | | MsUp | | | | | | | | | | | |
112 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
113 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
114 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
115 * | | | | | | | | | | | | Prev | Next | | |
116 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
117 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
118 * `----------------------------------' `----------------------------------'
119 * ,-------------. ,-------------.
120 * | | | | | |
121 * ,------|------|------| |------+------+------.
122 * | | | | | | |Brwser|
123 * | | |------| |------| |Back |
124 * | | | | | | | |
125 * `--------------------' `--------------------'
126 */
127// MEDIA AND MOUSE
128[MDIA] = KEYMAP(
129 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
130 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_TRNS, KC_TRNS, KC_TRNS,
137 // right hand
138 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
140 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
141 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
142 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
143 KC_TRNS, KC_TRNS,
144 KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_WBAK
146),
147};
148
149const uint16_t PROGMEM fn_actions[] = {
150 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
151};
152
153const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
154{
155 // MACRODOWN only works in this function
156 switch(id) {
157 case 0:
158 if (record->event.pressed) {
159 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
160 }
161 break;
162 case 1:
163 if (record->event.pressed) { // For resetting EEPROM
164 eeconfig_init();
165 }
166 break;
167 }
168 return MACRO_NONE;
169};
170
171bool process_record_user(uint16_t keycode, keyrecord_t *record) {
172 switch (keycode) {
173 // dynamically generate these.
174 case EPRM:
175 if (record->event.pressed) {
176 eeconfig_init();
177 }
178 return false;
179 break;
180 case VRSN:
181 if (record->event.pressed) {
182 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
183 }
184 return false;
185 break;
186 case RGB_SLD:
187 if (record->event.pressed) {
188 #ifdef RGBLIGHT_ENABLE
189 rgblight_mode(1);
190 #endif
191 }
192 return false;
193 break;
194 }
195 return true;
196}
197
198// Runs just one time when the keyboard initializes.
199void matrix_init_user(void) {
200
201};
202
203
204// Runs constantly in the background, in a loop.
205void matrix_scan_user(void) {
206
207 uint8_t layer = biton32(layer_state);
208
209 ergodox_board_led_off();
210 ergodox_right_led_1_off();
211 ergodox_right_led_2_off();
212 ergodox_right_led_3_off();
213 switch (layer) {
214 // TODO: Make this relevant to the ErgoDox EZ.
215 case 1:
216 ergodox_right_led_1_on();
217 break;
218 case 2:
219 ergodox_right_led_2_on();
220 break;
221 default:
222 // none
223 break;
224 }
225
226};
diff --git a/keyboards/ergodox/keymaps/common-nighthawk/Makefile b/keyboards/ergodox/keymaps/common-nighthawk/Makefile
new file mode 100644
index 000000000..fafa40c43
--- /dev/null
+++ b/keyboards/ergodox/keymaps/common-nighthawk/Makefile
@@ -0,0 +1,6 @@
1SUBPROJECT_DEFAULT = ez
2TAP_DANCE_ENABLE = yes
3
4ifndef QUANTUM_DIR
5 include ../../../../Makefile
6endif
diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c
new file mode 100644
index 000000000..debf384f3
--- /dev/null
+++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c
@@ -0,0 +1,216 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#define BASE 0 // default layer
7#define SYMB 1 // symbols
8#define MDIA 2 // media keys
9
10//Tap Dance Declarations
11enum {
12 TD_U_LBRC = 0,
13 TD_I_RBRC,
14};
15
16//Tap Dance Definitions
17qk_tap_dance_action_t tap_dance_actions[] = {
18 [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC),
19 [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC)
20};
21
22//Macro Declarations
23static uint16_t sunds_timer;
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26/* Keymap 0: Basic layer
27 *
28 * ,--------------------------------------------------. ,--------------------------------------------------.
29 * | _ | x | x | _ | Esc | Hypr | Home | | End | Hypr | [ | ] | `~ | `~ | Bks |
30 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
31 * |Ctrl/Tab| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P | Ctrl |
32 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
33 * | Cmd/"' | A | S | D | F | G |------| |------| H | J | K | L | ;: |Cmd/Entr|
34 * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------|
35 * | Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | Shft |
36 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
37 * | Alt | x | x | x | Left | |Right | Bks | x | x | Alt |
38 * `----------------------------------' `----------------------------------'
39 * ,-------------. ,-------------.
40 * |Teensy| VolUp| | Play | Del |
41 * ,------|------|------| |------+--------+------.
42 * | | | VolDn| | Next | | |
43 * |Sp/~L1| L2 |------| |------| L2 |'"/~L1|
44 * | | | Mute | | Prev | | |
45 * `--------------------' `----------------------'
46 */
47[BASE] = KEYMAP( // layer 0 : default
48 // left hand
49 KC_UNDS, KC_1, KC_1, KC_UNDS, KC_ESC, ALL_T(KC_NO), KC_HOME,
50 CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP,
51 M(1), KC_A, KC_S, KC_D, KC_F, KC_G,
52 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN,
53 KC_LALT, KC_1, KC_1, KC_1, KC_LEFT,
54 RESET, KC_VOLU,
55 KC_VOLD,
56 LT(SYMB, KC_SPC), TG(MDIA), KC_MUTE,
57 // right hand
58 KC_END, ALL_T(KC_NO), KC_LBRC, KC_RBRC, KC_GRV, KC_GRV, KC_BSPC,
59 KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LCTRL,
60 KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT),
61 KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
62 KC_RGHT, KC_BSPC, KC_1, KC_1, KC_RALT,
63 KC_MPLY, KC_DEL,
64 KC_MNXT,
65 KC_MPRV, TG(MDIA), LT(SYMB, KC_QUOT)
66 ),
67/* Keymap 1: Symbol Layer
68 *
69 * ,--------------------------------------------------. ,--------------------------------------------------.
70 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | |
71 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
72 * | | ! | ^ | [ | ( | { | | | | = | 7 | 8 | 9 | 0 | |
73 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
74 * | | & | $ | ] | ) | } |------| |------| + | 4 | 5 | 6 | * | |
75 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
76 * | | \ | @ | # | % | | | | | | - | 1 | 2 | 3 | / | |
77 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
78 * | | | | | | | 0 | 0 | . | | |
79 * `----------------------------------' `----------------------------------'
80 * ,-------------. ,-------------.
81 * | | | | | |
82 * ,------|------|------| |------+------+------.
83 * | | | | | | | |
84 * | | |------| |------| | |
85 * | | | | | | | |
86 * `--------------------' `--------------------'
87 */
88// SYMBOLS
89[SYMB] = KEYMAP(
90 // left hand
91 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
92 KC_TRNS, KC_EXLM, KC_CIRC, KC_LBRC, KC_LPRN, KC_LCBR, KC_TRNS,
93 KC_TRNS, KC_AMPR, KC_DLR, KC_RBRC, KC_RPRN, KC_RCBR,
94 KC_TRNS, KC_BSLS, KC_AT, KC_HASH, KC_PERC, KC_PIPE, KC_TRNS,
95 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
96 KC_TRNS, KC_TRNS,
97 KC_TRNS,
98 KC_TRNS, KC_TRNS, KC_TRNS,
99 // right hand
100 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
101 KC_TRNS, KC_EQL, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
102 KC_PLUS, KC_4, KC_5, KC_6, KC_ASTR, KC_TRNS,
103 KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
104 KC_0, KC_0, KC_DOT, KC_TRNS, KC_TRNS,
105 KC_TRNS, KC_TRNS,
106 KC_TRNS,
107 KC_TRNS, KC_TRNS, KC_TRNS
108),
109/* Keymap 2: Media and mouse keys
110 *
111 * ,--------------------------------------------------. ,--------------------------------------------------.
112 * |Version | | | | | | | | | | | | | | |
113 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
114 * | | | | | | | | | | | WhDn | WhUp | | | |
115 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
116 * | | | | R-Ck | L-Ck | |------| |------| MsLt | MsDn | MsUp | MsRt | | |
117 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
118 * | | | | | | | | | | | | | | | |
119 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
120 * | | | | | | | | | | | |
121 * `----------------------------------' `----------------------------------'
122 * ,-------------. ,-------------.
123 * | | | | | |
124 * ,------|------|------| |------+------+------.
125 * | | | | | | |Brwser|
126 * | | |------| |------| |Back |
127 * | | | | | | | |
128 * `--------------------' `--------------------'
129 */
130// MEDIA AND MOUSE
131[MDIA] = KEYMAP(
132 M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
134 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS,
135 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
136 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
137 KC_TRNS, KC_TRNS,
138 KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS,
140 // right hand
141 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
142 KC_TRNS, KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS,
143 KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KC_TRNS, KC_TRNS,
144 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
146 KC_TRNS, KC_TRNS,
147 KC_TRNS,
148 KC_TRNS, KC_TRNS, KC_WBAK
149),
150};
151
152const uint16_t PROGMEM fn_actions[] = {
153 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
154};
155
156const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
157{
158 // MACRODOWN only works in this function
159 switch(id) {
160 case 0:
161 if (record->event.pressed) {
162 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
163 }
164 break;
165
166 case 1:
167 if (record->event.pressed) {
168 sunds_timer = timer_read();
169 register_code (KC_LGUI);
170 } else {
171 if (timer_elapsed (sunds_timer) < TAPPING_TERM) {
172 unregister_code (KC_LGUI);
173 register_code (KC_LSFT);
174 register_code (KC_QUOT);
175 unregister_code (KC_QUOT);
176 unregister_code (KC_LSFT);
177 register_code (KC_LGUI);
178 }
179 unregister_code (KC_LGUI);
180 }
181 break;
182
183 }
184 return MACRO_NONE;
185};
186
187// Runs just one time when the keyboard initializes.
188void matrix_init_user(void) {
189
190};
191
192// Runs constantly in the background, in a loop.
193void matrix_scan_user(void) {
194
195 uint8_t layer = biton32(layer_state);
196
197 ergodox_board_led_off();
198 ergodox_right_led_1_off();
199 ergodox_right_led_2_off();
200 ergodox_right_led_3_off();
201 switch (layer) {
202 // TODO: Make this relevant to the ErgoDox EZ.
203 case 1:
204 ergodox_right_led_3_on();
205 break;
206 case 2:
207 ergodox_right_led_2_on();
208 break;
209 default:
210 // none
211 break;
212 }
213 if (keyboard_report->mods & MOD_BIT(KC_LSFT)) {
214 ergodox_right_led_1_on ();
215 }
216};
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png
new file mode 100644
index 000000000..4208c5189
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png
new file mode 100644
index 000000000..ccda70e39
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png
new file mode 100644
index 000000000..481e63e32
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png
new file mode 100644
index 000000000..9ebba6734
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/keymap.c b/keyboards/ergodox/keymaps/deadcyclo/keymap.c
new file mode 100644
index 000000000..d75c805bf
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/keymap.c
@@ -0,0 +1,273 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#define BASE 0 // default layer
7#define SYMB 1 // symbols
8#define MDIA 2 // media keys
9#define NAVG 3 // navigation
10
11enum custom_keycodes {
12 PLACEHOLDER = SAFE_RANGE, // can always be here
13 EPRM,
14 VRSN,
15 RGB_SLD
16};
17
18// TODO: Get rid of of keys I don't want. Make others that I do. Set up lots of makros (Using hyper (and meh)) keys (where to put them?)
19// TODO: Need to change hotkeys for lastpass, and potentially make my own keys for them on one of my layers
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21/* Keymap 0: Basic layer
22 *
23 * ,--------------------------------------------------. ,--------------------------------------------------.
24 * | Esc/L3 | 1 | 2 | 3 | 4 | 5 | 6 | | 6 | 7 | 8 | 9 | 0 | - | =/L3 |
25 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
26 * | Tab/L1 | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \/L1 |
27 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
28 * | LCtrl | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ctrl/'|
29 * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
30 * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
31 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
32 * |Grv/L1| '" |AltShf| Lalt | Ralt | | Lalt | Ralt | [ | ] | ~/L1 |
33 * `----------------------------------' `----------------------------------'
34 * ,-------------. ,-------------.
35 * | App | Home | | PgUp | Ins |
36 * ,------|------|------| |------+--------+------.
37 * | | | End | | PgDn | | |
38 * | Space| TAB |------| |------| BSPC |Enter |
39 * | | | [ | | ] | | |
40 * `--------------------' `----------------------'
41 */
42// If it accepts an argument (i.e, is a function), it doesn't need KC_.
43// Otherwise, it needs KC_*
44[BASE] = KEYMAP( // layer 0 : default
45 // left hand
46 LT(NAVG,KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
47 LT(SYMB,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
48 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
49 KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
50 LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_RALT,KC_LALT,
51 ALT_T(KC_APP), KC_HOME,
52 KC_END,
53 KC_SPC,KC_TAB,KC_LBRC,
54 // right hand
55 KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, LT(NAVG,KC_EQL),
56 TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, LT(SYMB, KC_BSLS),
57 KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),CTL_T(KC_QUOT),
58 MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
59 KC_LALT, KC_RALT,KC_LBRC,KC_RBRC, LT(SYMB,KC_TILD),
60 KC_PGUP, KC_INS,
61 KC_PGDN,
62 KC_RBRC,KC_BSPC, KC_ENT
63 ),
64/* Keymap 1: Symbol Layer
65 *
66 * ,--------------------------------------------------. ,--------------------------------------------------.
67 * | | F1 | F2 | F3 | F4 | F5 | F6 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
68 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
69 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | |
70 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
71 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
72 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
73 * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
74 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
75 * | | | | | | | | . | 0 | = | |
76 * `----------------------------------' `----------------------------------'
77 * ,-------------. ,-------------.
78 * | | | | | |
79 * ,------|------|------| |------+------+------.
80 * | | | | | | | |
81 * | | |------| |------| DEL | |
82 * | | | | | | | |
83 * `--------------------' `--------------------'
84 */
85// SYMBOLS
86[SYMB] = KEYMAP(
87 // left hand
88 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
89 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
90 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
91 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
92 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
93 KC_TRNS,KC_TRNS,
94 KC_TRNS,
95 KC_TRNS,KC_TRNS,KC_TRNS,
96 // right hand
97 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
98 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
99 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
100 KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
101 KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
102 KC_TRNS, KC_TRNS,
103 KC_TRNS,
104 KC_TRNS, KC_DEL, KC_TRNS
105),
106/* Keymap 2: Media and mouse keys
107 *
108 * ,--------------------------------------------------. ,--------------------------------------------------.
109 * | | | | | | | | | | | | | | | |
110 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
111 * | | | | MsUp | | | | | | | | | | | |
112 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
113 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
114 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
115 * | | | | | | | | | | | | Prev | Next | | |
116 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
117 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
118 * `----------------------------------' `----------------------------------'
119 * ,-------------. ,-------------.
120 * | | | | | |
121 * ,------|------|------| |------+------+------.
122 * | | | | | | |Brwser|
123 * | | |------| |------| |Back |
124 * | | | | | | | |
125 * `--------------------' `--------------------'
126 */
127// MEDIA AND MOUSE
128[MDIA] = KEYMAP(
129 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
130 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_TRNS, KC_TRNS, KC_TRNS,
137 // right hand
138 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
140 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
141 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
142 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
143 KC_TRNS, KC_TRNS,
144 KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_WBAK
146),
147
148/* Keymap 3: Navigation TODO: Printscreen, pg up down, home, end, others? Insert for example
149 *
150 * ,--------------------------------------------------. ,--------------------------------------------------.
151 * | | VER | | | | | | | | | | | | | |
152 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
153 * | | | | up | | | | | | | | | | | |
154 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
155 * | | | left | down | right| |------| |------| | | | | | |
156 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
157 * | | | | | | | | | | | | | | | |
158 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
159 * | | | | | | | | | | | |
160 * `----------------------------------' `----------------------------------'
161 * ,-------------. ,-------------.
162 * | | | | | |
163 * ,------|------|------| |------+------+------.
164 * | | | | | | | |
165 * | | |------| |------| | |
166 * | | | | | | | |
167 * `--------------------' `--------------------'
168 */
169// NAVIGATION
170[NAVG] = KEYMAP(
171 KC_TRNS, VRSN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
172 KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
173 KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
174 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
175 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
176 KC_TRNS, KC_TRNS,
177 KC_TRNS,
178 KC_TRNS, KC_TRNS, KC_TRNS,
179 // right hand
180 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
181 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
182 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
183 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS,
184 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
185 KC_TRNS, KC_TRNS,
186 KC_TRNS,
187 KC_TRNS, KC_TRNS, KC_TRNS
188),
189};
190
191const uint16_t PROGMEM fn_actions[] = {
192 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
193};
194
195const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
196{
197 // MACRODOWN only works in this function
198 switch(id) {
199 case 0:
200 if (record->event.pressed) {
201 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
202 }
203 break;
204 case 1:
205 if (record->event.pressed) { // For resetting EEPROM
206 eeconfig_init();
207 }
208 break;
209 }
210 return MACRO_NONE;
211};
212
213bool process_record_user(uint16_t keycode, keyrecord_t *record) {
214 switch (keycode) {
215 // dynamically generate these.
216 case EPRM:
217 if (record->event.pressed) {
218 eeconfig_init();
219 }
220 return false;
221 break;
222 case VRSN:
223 if (record->event.pressed) {
224 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
225 }
226 return false;
227 break;
228 case RGB_SLD:
229 if (record->event.pressed) {
230 #ifdef RGBLIGHT_ENABLE
231 rgblight_mode(1);
232 #endif
233 }
234 return false;
235 break;
236 }
237 return true;
238}
239
240// Runs just one time when the keyboard initializes.
241void matrix_init_user(void) {
242
243};
244
245// Runs constantly in the background, in a loop.
246void matrix_scan_user(void) {
247
248 uint8_t layer = biton32(layer_state);
249
250 ergodox_board_led_off();
251 ergodox_right_led_1_off();
252 ergodox_right_led_2_off();
253 ergodox_right_led_3_off();
254 switch (layer) {
255 case 1:
256 ergodox_right_led_1_on();
257 break;
258 case 2:
259 ergodox_right_led_2_on();
260 break;
261 case 3:
262 ergodox_right_led_3_on();
263 break;
264 case 4:
265 ergodox_right_led_1_on(); // TODO: Make a fourth layer
266 ergodox_right_led_3_on();
267 break;
268 default:
269 // none
270 break;
271 }
272
273};
diff --git a/keyboards/ergodox/keymaps/deadcyclo/readme.md b/keyboards/ergodox/keymaps/deadcyclo/readme.md
new file mode 100644
index 000000000..809dd6eb5
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/readme.md
@@ -0,0 +1,36 @@
1# ErgoDox EZ 1337 configuration
2
3Custom layout based on the default layout. Intended for interational users of us intl-altgr layout. Note that
4some common keys might be missing, as this layout is intented to be used on *nix systems by users familiar
5with their system. The layout is geared towards avoiding using the rat (mouse for those of you who are
6unfamiliar with tiling window managers) as much as possibly.
7
8# Layouts
9
10All layer images created using [keyboard-layout-editor](http://www.keyboard-layout-editor.com/)
11
12## Base layer
13
14[![Base layer](images/deadcyclo-base-layout.png)](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
15
16## Layer 1 - Symbols
17
18[![Layer 1 - Symbols](images/deadcyclo-layer-1-symbols.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
19
20## Layer 2 - Media and Mouse
21
22[![Layer 2 - Media and Mouse](images/deadcyclo-layer-2-media-and-mouse.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
23
24## Layer 3 - Navigation
25
26[![Layer 3 - Navigation](images/deadcyclo-layer-3-navigation.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
27
28# Changelog
29
30- 02.01.2017 Added delete key on second layer
31- 10.01.2017 Added layer images to readme
32
33# TODO
34
35- Add unicode support (direct input and indirect? see algernon layout for examples)
36- Add descriptions below each layer image of any special functions/keys
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
new file mode 100755
index 000000000..e6aec35bf
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
new file mode 100755
index 000000000..69a1f6948
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
new file mode 100755
index 000000000..8b2cce5e6
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c b/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
new file mode 100644
index 000000000..c219ce884
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
@@ -0,0 +1,962 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "keymap_jp.h"
5
6static uint16_t start;
7
8#define BASE 0 // EN layer
9#define JP 1 // Japanese
10#define JPXON 2 // JP + Fn
11#define JPKAZARI 3 // JP + KAZARI
12#define JPTOPROW 4 // JP + TOPROW
13#define JPTRKZ 5 // JP + TOPROW + KAZARI
14#define NUM 6 // Numbers
15
16#define CTLSHFT 1
17#define CUTCOPY 2
18
19//kana macro definitions start here
20
21#define JPVU 4
22#define JPNU 6
23#define JPKO 7
24#define JPSA 8
25#define JPKE 9
26#define JPHE 10
27#define JPSHI 11
28#define JPKA 12
29#define JPKI 13
30#define JPSU 14
31#define JPSO 15
32#define JPHI 16
33#define JPCHI 17
34#define JPFU 18
35#define JPSE 19
36#define JPTSU 20
37#define JPKU 21
38#define JPTE 22
39#define JPTA 23
40#define JPTO 24
41#define JPHA 25
42#define JPHO 26
43#define JPXKE 27
44#define JPXU 28
45#define JPXKA 29
46#define JPXA 30
47#define JPXO 31
48#define JPGO 32
49#define JPZA 33
50#define JPGE 34
51#define JPBE 35
52#define JPYU 36
53#define JPJI 37
54#define JPGA 38
55#define JPGI 39
56#define JPZU 40
57#define JPZO 41
58#define JPBI 42
59#define JPDI 43
60#define JPZE 44
61#define JPDU 45
62#define JPGU 46
63#define JPYA 47
64#define JPYO 48
65#define JPDE 49
66#define JPDA 50
67#define JPDO 51
68#define JPBA 52
69#define JPBO 53
70#define JPRI 54
71#define JPRE 55
72#define JPRA 56
73#define JPNA 57
74#define JPNO 58
75#define JPMI 59
76#define JPMU 60
77#define JPME 61
78#define JPNE 62
79#define JPMA 63
80#define JPXTU 64
81#define JPWA 65
82#define JPRU 66
83#define JPWO 67
84#define JPNI 68
85#define JPNN 69
86#define JPMO 70
87#define JPRO 71
88#define JPXE 72
89#define JPXI 73
90#define JPXYU 74
91#define JPXYA 75
92#define JPXYO 76
93#define JPPE 77
94#define JPPU 78
95#define JPPI 79
96#define JPPA 80
97#define JPPO 81
98#define JPBU 82
99
100// kana macro definitions end here
101
102#define SHIFT 86
103#define KAZARI 87
104#define JPFN 88 //shifts to JPXON layer
105#define TOJPLOUT 89
106#define TOENL 90
107#define TOJPL 91
108
109const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
110/* Keymap 0: Basic layer
111 *
112 *
113 * ,----------------------------------------------------. ,--------------------------------------------------.
114 * | En / 和 | | ^ | % | | |Selall| | Undo | | $ | @ | LT | UP | RT |
115 * |----------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
116 * | Tab | Q | D | R | W | B | Cut | | PgUP | J | F | U | P | DN | \ |
117 * |----------+------+------+------+------+------| Copy | | |------+------+------+------+------+--------|
118 * | / | A | S | H | T | G |------| |------| Y | N | E | O | I | , |
119 * |----------+------+------+------+------+------|Paste | | PgDN |------+------+------+------+------+--------|
120 * | Ctl+Shft | Z | X | M | C | V | | | | . | L | K | ' | ? | tmux |
121 * `----------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
122 * | LCtrl | LGui | Alt| _ | Esc | |MouseL|MouseR| - | ~ | Ctrl |
123 * `------------------------------------' `----------------------------------'
124 * ,-------------. ,-------------.
125 * |MidMs | Del | | VolUp| Mute |
126 * ,------|------|------| |------+--------+------.
127 * | | | | | VolDn| | |
128 * | Space| Shift|------| |------| Backsp |Enter |
129 * | | | Num | | Esc | | |
130 * `--------------------' `----------------------'
131 *
132 *
133 * tmux prefix set to C-b
134 *
135 */
136// If it accepts an argument (i.e, is a function), it doesn't need KC_.
137// Otherwise, it needs KC_*
138[BASE] = KEYMAP( // layer 0 : default
139 // left hand
140 M(TOJPLOUT), KC_NO, KC_EQL, LSFT(KC_5), KC_NO, KC_NO, LCTL(KC_A),
141 KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, M(CUTCOPY),
142 KC_SLSH, KC_A, KC_S, KC_H, KC_T, KC_G,
143 M(CTLSHFT), KC_Z, KC_X, KC_M, KC_C, KC_V, LCTL(KC_V),
144 KC_RCTL, KC_LGUI, KC_LALT,JP_UNDS,KC_LCTL,
145 KC_BTN3, KC_DEL,
146 KC_NO,
147 KC_SPC,KC_LSFT,F(1),
148 // right hand
149 LCTL(KC_Z), KC_NO, LSFT(KC_4), JP_AT, KC_LEFT, KC_UP, KC_RIGHT,
150 KC_PGUP, KC_J, KC_F, KC_U, KC_P, KC_DOWN, LSFT(KC_3),
151 KC_Y, KC_N, KC_E, KC_O, KC_I, KC_COMMA,
152 KC_PGDN, KC_DOT, KC_L, KC_K, LSFT(KC_7), KC_QUES, LCTL(KC_B),
153 KC_BTN1, KC_BTN2,KC_MINS,JP_TILD, KC_RCTL,
154 KC_VOLU, KC_MUTE,
155 KC_VOLD,
156 KC_SPC,KC_BSLS, KC_ENT
157 ),
158/* Keymap 1: Japanese
159 *
160 * ,--------------------------------------------------. ,--------------------------------------------------.
161 * | En / 和| | | | | | | | | | | | | | |
162 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
163 * | |   nu | ko | sa | he | ke | | | | fu | se | tsu | ku | | |
164 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
165 * | | to | shi | ka | ki | su |------| |------| a | ha | te | ta | u | |
166 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
167 * | | mu | so | hi | chi | me | | | | | ma | ho | i | | |
168 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
169 * | | | | | | | | | | | |
170 * `----------------------------------' `----------------------------------'
171 * ,-------------. ,-------------.
172 * | | | | | |
173 * ,------|------|------| |------+------+------.
174 * | | | | | | | |
175 * | shift| fn |------| |------| |kazari|
176 * | | | Num | | | | |
177 * `--------------------' `--------------------'
178 *
179 *
180 *
181 */
182[JP] = KEYMAP(
183 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
184 KC_TRNS, M(JPNU), M(JPKO), M(JPSA), M(JPHE), M(JPKE), KC_TRNS,
185 KC_TRNS, M(JPTO), M(JPSHI), M(JPKA), M(JPKI), M(JPSU),
186 KC_TRNS, M(JPMU), M(JPSO), M(JPHI), M(JPCHI), M(JPME), KC_TRNS,
187 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
188 KC_TRNS, KC_TRNS,
189 KC_NO,
190 M(SHIFT), M(JPFN), F(1),
191 // right hand
192 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
193 KC_TRNS, M(JPFU), M(JPSE), M(JPTSU), M(JPKU), KC_TRNS, KC_TRNS,
194 KC_A, M(JPHA), M(JPTE), M(JPTA), KC_U, KC_TRNS,
195 KC_TRNS, KC_TRNS, M(JPMA), M(JPHO), KC_I, KC_TRNS, KC_TRNS,
196 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
197 KC_TRNS, KC_TRNS,
198 KC_TRNS,
199 KC_TRNS,KC_TRNS,M(KAZARI)
200),
201/* Keymap 2: Japanese with Fn
202 *
203 * ,--------------------------------------------------. ,--------------------------------------------------.
204 * | | | | | | | | | | | | | | | |
205 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
206 * | |   | xe | | | xke | | | | xya | | xtsu | xo | | |
207 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
208 * | | | | xka | | |------| |------| xa | xyo | | | xu | |
209 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
210 * | | | | | | | | | | | | | xi | | |
211 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
212 * | | | | | | | | | | | |
213 * `----------------------------------' `----------------------------------'
214 * ,-------------. ,-------------.
215 * | | | | | |
216 * ,------|------|------| |------+------+------.
217 * | | | | | | | |
218 * | | |------| |------| | |
219 * | | | | | | | |
220 * `--------------------' `--------------------'
221 *
222 *
223 *
224 */
225[JPXON] = KEYMAP(
226 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
227 KC_NO, KC_NO, M(JPXE), KC_NO, M(JPXKE), KC_NO, KC_NO,
228 KC_NO, KC_NO, KC_NO, M(JPXKA), KC_NO, KC_NO,
229 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
230 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
231 KC_NO, KC_NO,
232 KC_NO,
233 KC_NO, KC_TRNS, KC_TRNS,
234 // right hand
235 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
236 KC_NO, M(JPXYA), KC_NO, M(JPXTU), M(JPXO), KC_NO, KC_NO,
237 M(JPXA), M(JPXYO), M(JPXYU), KC_NO, M(JPXU), KC_NO,
238 KC_NO, KC_NO,KC_NO, KC_NO, M(JPXI), KC_NO, KC_NO,
239 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
240 KC_NO, KC_NO,
241 KC_NO,
242 KC_NO, KC_NO, KC_NO
243),
244/* Keymap 3: Japanese with kazari
245 *
246 * ,--------------------------------------------------. ,--------------------------------------------------.
247 * | | | | | | | | | | | | | | | |
248 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
249 * | |   | go | za | be | ge | | | | bu | ze | du | gu | | |
250 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
251 * | | do | ji | ga | gi | zu |------| |------| | ba | de | da | vu | |
252 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
253 * | | | zo | bi | di | | | | | | | bo | | | |
254 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
255 * | | | | | | | | | | | |
256 * `----------------------------------' `----------------------------------'
257 * ,-------------. ,-------------.
258 * | | | | | |
259 * ,------|------|------| |------+------+------.
260 * | | | | | | | |
261 * | | |------| |------| | |
262 * | | | | | | | |
263 * `--------------------' `--------------------'
264 *
265 *
266 *
267 */
268[JPKAZARI] = KEYMAP(
269 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
270 KC_NO, KC_NO, M(JPGO), M(JPZA), M(JPBE), M(JPGE), KC_NO,
271 KC_NO, M(JPDO), M(JPJI), M(JPGA), M(JPGI), M(JPZU),
272 KC_NO, KC_NO, M(JPZO), M(JPBI), M(JPDI), KC_NO, KC_NO,
273 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
274 KC_NO, KC_NO,
275 KC_NO,
276 M(SHIFT), KC_NO, KC_TRNS,
277 // right hand
278 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
279 KC_NO, M(JPBU), M(JPZE), M(JPDU), M(JPGU), KC_NO, KC_NO,
280 KC_NO, M(JPBA), M(JPDE), M(JPDA), M(JPVU), KC_NO,
281 KC_NO, KC_NO, KC_NO, M(JPBO), KC_NO, KC_NO, KC_NO,
282 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
283 KC_NO, KC_NO,
284 KC_NO,
285 KC_NO, KC_NO, KC_TRNS
286),
287/* Keymap 4: Japanese with Toprow
288 *
289 * ,--------------------------------------------------. ,--------------------------------------------------.
290 * | | | | | | | | | | | | | | | |
291 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
292 * | |   | e | - | re | | | | | ya | ne | ru | o | | |
293 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
294 * | | ra | ri | na | no | mi |------| |------| wa | yo | yu | ni | nn | |
295 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
296 * | | | | | | | | | | | mo | ro | wo | | |
297 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
298 * | | | | | | | | | | | |
299 * `----------------------------------' `----------------------------------'
300 * ,-------------. ,-------------.
301 * | | | | | |
302 * ,------|------|------| |------+------+------.
303 * | | | | | | | |
304 * | | |------| |------| | |
305 * | | | | | | | |
306 * `--------------------' `--------------------'
307 *
308 *
309 *
310 */
311[JPTOPROW] = KEYMAP(
312 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
313 KC_NO, KC_NO, KC_E, KC_MINS, M(JPRE), KC_NO, KC_NO,
314 KC_NO, M(JPRA), M(JPRI), M(JPNA), M(JPNO), M(JPMI),
315 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
316 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
317 KC_NO, KC_NO,
318 KC_NO,
319 KC_TRNS, KC_NO, KC_NO,
320 // right hand
321 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
322 KC_NO, M(JPYA), M(JPNE), M(JPRU), KC_O, KC_NO, KC_NO,
323 M(JPWA), M(JPYO), M(JPYU), M(JPNI), M(JPNN), KC_NO,
324 KC_NO, KC_NO, M(JPMO), M(JPRO), M(JPWO), KC_NO, KC_NO,
325 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
326 KC_NO, KC_NO,
327 KC_NO,
328 KC_NO, KC_NO, M(KAZARI)
329),
330
331/* Keymap 5: Japanese with Toprow and Kazari
332 *
333 * ,--------------------------------------------------. ,--------------------------------------------------.
334 * | | | | | | | | | | | | | | | |
335 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
336 * | |   | | | pe | | | | | pu | | | | | |
337 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
338 * | | | | | | |------| |------| | pa | | | | |
339 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
340 * | | | | pi | | | | | | | | po | | | |
341 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
342 * | | | | | | | | | | | |
343 * `----------------------------------' `----------------------------------'
344 * ,-------------. ,-------------.
345 * | | | | | |
346 * ,------|------|------| |------+------+------.
347 * | | | | | | | |
348 * | | |------| |------| | |
349 * | | | | | | | |
350 * `--------------------' `--------------------'
351 *
352 *
353 *
354 */
355[JPTRKZ] = KEYMAP(
356 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
357 KC_NO, KC_NO, KC_NO, KC_NO, M(JPPE),KC_NO, KC_NO,
358 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
359 KC_NO, KC_NO, KC_NO, M(JPPI), KC_NO, KC_NO, KC_NO,
360 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
361 KC_NO, KC_NO,
362 KC_NO,
363 KC_TRNS, KC_NO, KC_NO,
364 // right hand
365 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
366 KC_NO, M(JPPU), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
367 KC_NO, M(JPPA), KC_NO, KC_NO, KC_NO, KC_NO,
368 KC_NO, KC_NO, KC_NO, M(JPPO), KC_NO, KC_NO, KC_NO,
369 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
370 KC_NO, KC_NO,
371 KC_NO,
372 KC_NO, KC_NO, KC_TRNS
373),
374/* Keymap 6: Number Layer
375 *
376 * ,--------------------------------------------------. ,--------------------------------------------------.
377 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
378 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
379 * | | | | " | [ | ] | | | | | % | 7 | 8 | 9 | | F12 |
380 * |--------+------+------+------+------+------| ; | | |------+------+------+------+------+--------|
381 * | | | / | + | { | } |------| |------| ! | 4 | 5 | 6 | 0 | , |
382 * |--------+------+------+------+------+------| : | | & |------+------+------+------+------+--------|
383 * | | | * | - | ( | ) | | | | . | 1 | 2 | 3 | ? | |
384 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
385 * | | | | | # | | < | = | > | | |
386 * `----------------------------------' `----------------------------------'
387 * ,-------------. ,-------------.
388 * | | | | | |
389 * ,------|------|------| |------+------+------.
390 * | | | | | | | |
391 * | | |------| |------| Back | Ent |
392 * | | | | | | | |
393 * `--------------------' `--------------------'
394 */
395// Numbers
396[NUM] = KEYMAP(
397 // left hand
398 KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO,
399 KC_NO, KC_NO, KC_NO, JP_DQT, KC_RBRACKET, KC_BSPC, KC_SCLN,
400 KC_NO, KC_NO, KC_SLSH, JP_PLUS, LSFT(KC_RBRACKET), JP_RCBR,
401 KC_NO, KC_NO, JP_ASTR, KC_MINS, LSFT(KC_8), LSFT(KC_9), JP_COLN,
402 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_HASH,
403 KC_NO, KC_NO,
404 KC_NO,
405 KC_NO, KC_NO, KC_TRNS,
406 // right hand
407 KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
408 LSFT(KC_JYEN), KC_PERC, KC_7, KC_8, KC_9, KC_NO, KC_F12,
409 KC_EXLM, KC_4, KC_5, KC_6, KC_0, KC_COMM,
410 LSFT(KC_6), KC_DOT, KC_1, KC_2, KC_3, KC_QUES, KC_NO,
411 KC_LT,JP_EQL, KC_GT, KC_NO, KC_NO,
412 KC_NO, KC_NO,
413 KC_NO,
414 KC_SPC, KC_BSLS, KC_DOT
415),
416};
417
418const uint16_t PROGMEM fn_actions[] = {
419 [1] = ACTION_LAYER_MOMENTARY(NUM) // FN1 - Momentary Layer 6 (Numbers)
420};
421
422const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
423{
424
425 // MACRO only works in this function
426 switch(id) {
427 case 0:
428 if (record->event.pressed) {
429 register_code(KC_RSFT);
430 } else {
431 unregister_code(KC_RSFT);
432 }
433 break;
434 case CTLSHFT:
435 if (record->event.pressed) {
436 return MACRO( D(LSFT), D(LCTL), END);
437 } else {
438 return MACRO( U(LSFT), U(LCTL), END);
439 }
440 break;
441 case CUTCOPY:
442 if (record->event.pressed) {
443 start = timer_read();
444 } else {
445 if (timer_elapsed(start) > 150) {
446 return MACRO( D(LCTL), T(X), U(LCTL), END);
447 } else {
448 return MACRO( D(LCTL), T(C), U(LCTL), END);
449 }
450 }
451 break;
452
453 // kana macros start here
454
455 case JPVU:
456 if (record->event.pressed) {
457 return MACRO( I(1), T(V), T(U), END);
458 }
459 break;
460 case JPNU:
461 if (record->event.pressed) {
462 return MACRO( I(1), T(N), T(U), END);
463 }
464 break;
465 case JPKO:
466 if (record->event.pressed) {
467 return MACRO( I(1), T(K), T(O), END);
468 }
469 break;
470 case JPSA:
471 if (record->event.pressed) {
472 return MACRO( I(1), T(S), T(A), END);
473 }
474 break;
475 case JPKE:
476 if (record->event.pressed) {
477 return MACRO( I(1), T(K), T(E), END);
478 }
479 break;
480 case JPHE:
481 if (record->event.pressed) {
482 return MACRO( I(1), T(H), T(E), END);
483 }
484 break;
485 case JPSHI:
486 if (record->event.pressed) {
487 return MACRO( I(1), T(S), T(I), END);
488 }
489 break;
490 case JPKA:
491 if (record->event.pressed) {
492 return MACRO( I(1), T(K), T(A), END);
493 }
494 break;
495 case JPKI:
496 if (record->event.pressed) {
497 return MACRO( I(1), T(K), T(I), END);
498 }
499 break;
500 case JPSU:
501 if (record->event.pressed) {
502 return MACRO( I(1), T(S), T(U), END);
503 }
504 break;
505 case JPSO:
506 if (record->event.pressed) {
507 return MACRO( I(1), T(S), T(O), END);
508 }
509 break;
510 case JPHI:
511 if (record->event.pressed) {
512 return MACRO( I(1), T(H), T(I), END);
513 }
514 break;
515 case JPCHI:
516 if (record->event.pressed) {
517 return MACRO( I(1), T(T), T(I), END);
518 }
519 break;
520 case JPFU:
521 if (record->event.pressed) {
522 return MACRO( I(1), T(F), T(U), END);
523 }
524 break;
525 case JPSE:
526 if (record->event.pressed) {
527 return MACRO( I(1), T(S), T(E), END);
528 }
529 break;
530 case JPTSU:
531 if (record->event.pressed) {
532 return MACRO( I(1), T(T), T(U), END);
533 }
534 break;
535 case JPKU:
536 if (record->event.pressed) {
537 return MACRO( I(1), T(K), T(U), END);
538 }
539 break;
540 case JPTE:
541 if (record->event.pressed) {
542 return MACRO( I(1), T(T), T(E), END);
543 }
544 break;
545 case JPTA:
546 if (record->event.pressed) {
547 return MACRO( I(1), T(T), T(A), END);
548 }
549 break;
550 case JPTO:
551 if (record->event.pressed) {
552 return MACRO( I(1), T(T), T(O), END);
553 }
554 break;
555 case JPHA:
556 if (record->event.pressed) {
557 return MACRO( I(1), T(H), T(A), END);
558 }
559 break;
560 case JPHO:
561 if (record->event.pressed) {
562 return MACRO( I(1), T(H), T(O), END);
563 }
564 break;
565 case JPXKE:
566 if (record->event.pressed) {
567 return MACRO( I(1), T(X), T(K), T(E), END);
568 }
569 break;
570 case JPXU:
571 if (record->event.pressed) {
572 return MACRO( I(1), T(X), T(U), END);
573 }
574 break;
575 case JPXKA:
576 if (record->event.pressed) {
577 return MACRO( I(1), T(X), T(K), T(A), END);
578 }
579 break;
580 case JPXA:
581 if (record->event.pressed) {
582 return MACRO( I(1), T(X), T(A), END);
583 }
584 break;
585 case JPXO:
586 if (record->event.pressed) {
587 return MACRO( I(1), T(X), T(O), END);
588 }
589 break;
590 case JPGO:
591 if (record->event.pressed) {
592 return MACRO( I(1), T(G), T(O), END);
593 }
594 break;
595 case JPZA:
596 if (record->event.pressed) {
597 return MACRO( I(1), T(Z), T(A), END);
598 }
599 break;
600 case JPGE:
601 if (record->event.pressed) {
602 return MACRO( I(1), T(G), T(E), END);
603 }
604 break;
605 case JPBE:
606 if (record->event.pressed) {
607 return MACRO( I(1), T(B), T(E), END);
608 }
609 break;
610 case JPYU:
611 if (record->event.pressed) {
612 return MACRO( I(1), T(Y), T(U), END);
613 }
614 break;
615 case JPJI:
616 if (record->event.pressed) {
617 return MACRO( I(1), T(J), T(I), END);
618 }
619 break;
620 case JPGA:
621 if (record->event.pressed) {
622 return MACRO( I(1), T(G), T(A), END);
623 }
624 break;
625 case JPGI:
626 if (record->event.pressed) {
627 return MACRO( I(1), T(G), T(I), END);
628 }
629 break;
630 case JPZU:
631 if (record->event.pressed) {
632 return MACRO( I(1), T(Z), T(U), END);
633 }
634 break;
635 case JPZO:
636 if (record->event.pressed) {
637 return MACRO( I(1), T(Z), T(O), END);
638 }
639 break;
640 case JPBI:
641 if (record->event.pressed) {
642 return MACRO( I(1), T(B), T(I), END);
643 }
644 break;
645 case JPDI:
646 if (record->event.pressed) {
647 return MACRO( I(1), T(D), T(I), END);
648 }
649 break;
650 case JPZE:
651 if (record->event.pressed) {
652 return MACRO( I(1), T(Z), T(E), END);
653 }
654 break;
655 case JPDU:
656 if (record->event.pressed) {
657 return MACRO( I(1), T(D), T(U), END);
658 }
659 break;
660 case JPGU:
661 if (record->event.pressed) {
662 return MACRO( I(1), T(G), T(U), END);
663 }
664 break;
665 case JPYA:
666 if (record->event.pressed) {
667 return MACRO( I(1), T(Y), T(A), END);
668 }
669 break;
670 case JPYO:
671 if (record->event.pressed) {
672 return MACRO( I(1), T(Y), T(O), END);
673 }
674 break;
675 case JPDE:
676 if (record->event.pressed) {
677 return MACRO( I(1), T(D), T(E), END);
678 }
679 break;
680 case JPDA:
681 if (record->event.pressed) {
682 return MACRO( I(1), T(D), T(A), END);
683 }
684 break;
685 case JPDO:
686 if (record->event.pressed) {
687 return MACRO( I(1), T(D), T(O), END);
688 }
689 break;
690 case JPBA:
691 if (record->event.pressed) {
692 return MACRO( I(1), T(B), T(A), END);
693 }
694 break;
695 case JPBO:
696 if (record->event.pressed) {
697 return MACRO( I(1), T(B), T(O), END);
698 }
699 break;
700 case JPRI:
701 if (record->event.pressed) {
702 return MACRO( I(1), T(R), T(I), END);
703 }
704 break;
705 case JPRE:
706 if (record->event.pressed) {
707 return MACRO( I(1), T(R), T(E), END);
708 }
709 break;
710 case JPRA:
711 if (record->event.pressed) {
712 return MACRO( I(1), T(R), T(A), END);
713 }
714 break;
715 case JPNA:
716 if (record->event.pressed) {
717 return MACRO( I(1), T(N), T(A), END);
718 }
719 break;
720 case JPNO:
721 if (record->event.pressed) {
722 return MACRO( I(1), T(N), T(O), END);
723 }
724 break;
725 case JPMI:
726 if (record->event.pressed) {
727 return MACRO( I(1), T(M), T(I), END);
728 }
729 break;
730 case JPMU:
731 if (record->event.pressed) {
732 return MACRO( I(1), T(M), T(U), END);
733 }
734 break;
735 case JPME:
736 if (record->event.pressed) {
737 return MACRO( I(1), T(M), T(E), END);
738 }
739 break;
740 case JPNE:
741 if (record->event.pressed) {
742 return MACRO( I(1), T(N), T(E), END);
743 }
744 break;
745 case JPMA:
746 if (record->event.pressed) {
747 return MACRO( I(1), T(M), T(A), END);
748 }
749 break;
750 case JPXTU:
751 if (record->event.pressed) {
752 return MACRO( I(1), T(X), T(T), T(U), END);
753 }
754 break;
755 case JPWA:
756 if (record->event.pressed) {
757 return MACRO( I(1), T(W), T(A), END);
758 }
759 break;
760 case JPRU:
761 if (record->event.pressed) {
762 return MACRO( I(1), T(R), T(U), END);
763 }
764 break;
765 case JPWO:
766 if (record->event.pressed) {
767 return MACRO( I(1), T(W), T(O), END);
768 }
769 break;
770 case JPNI:
771 if (record->event.pressed) {
772 return MACRO( I(1), T(N), T(I), END);
773 }
774 break;
775 case JPNN:
776 if (record->event.pressed) {
777 return MACRO( I(1), T(N), T(N), END);
778 }
779 break;
780 case JPMO:
781 if (record->event.pressed) {
782 return MACRO( I(1), T(M), T(O), END);
783 }
784 break;
785 case JPRO:
786 if (record->event.pressed) {
787 return MACRO( I(1), T(R), T(O), END);
788 }
789 break;
790 case JPXE:
791 if (record->event.pressed) {
792 return MACRO( I(1), T(X), T(E), END);
793 }
794 break;
795 case JPXI:
796 if (record->event.pressed) {
797 return MACRO( I(1), T(X), T(I), END);
798 }
799 break;
800 case JPXYU:
801 if (record->event.pressed) {
802 return MACRO( I(1), T(X), T(Y), T(U), END);
803 }
804 break;
805 case JPXYA:
806 if (record->event.pressed) {
807 return MACRO( I(1), T(X), T(Y), T(A), END);
808 }
809 break;
810 case JPXYO:
811 if (record->event.pressed) {
812 return MACRO( I(1), T(X), T(Y), T(O), END);
813 }
814 break;
815 case JPPE:
816 if (record->event.pressed) {
817 return MACRO( I(1), T(P), T(E), END);
818 }
819 break;
820 case JPPU:
821 if (record->event.pressed) {
822 return MACRO( I(1), T(P), T(U), END);
823 }
824 break;
825 case JPPI:
826 if (record->event.pressed) {
827 return MACRO( I(1), T(P), T(I), END);
828 }
829 break;
830 case JPPA:
831 if (record->event.pressed) {
832 return MACRO( I(1), T(P), T(A), END);
833 }
834 break;
835 case JPPO:
836 if (record->event.pressed) {
837 return MACRO( I(1), T(P), T(O), END);
838 }
839 break;
840 case JPBU:
841 if (record->event.pressed) {
842 return MACRO( I(1), T(B), T(U), END);
843 }
844 break;
845
846 // kana macros end here
847
848 break;
849 case SHIFT:
850 if (record->event.pressed) {
851 start = timer_read();
852 if (layer_state == (1<<JPKAZARI)) {
853 layer_state = (1<<JPTOPROW)| (1<<JPTRKZ);
854 } else {
855 layer_state = (1<<JPTOPROW);
856 }
857 } else {
858 layer_state = (0<<JPTOPROW);
859 clear_keyboard_but_mods();
860 if (timer_elapsed(start) < 100) {
861 return MACRO( I(1), T(SPC), END);
862 }
863 }
864 break;
865 case KAZARI:
866 if (record->event.pressed) {
867 start = timer_read();
868 if (layer_state == (1<<JPTOPROW)) {
869 layer_state = (1<<JPKAZARI)| (1<<JPTRKZ);
870 } else {
871 layer_state = (1<<JPKAZARI);
872 }
873 break;
874 } else {
875 layer_state = (0<<JPKAZARI);
876 layer_state = (0<<JPTRKZ);
877 if (timer_elapsed(start) < 100) {
878 return MACRO( T(ENTER), END);
879 }
880 }
881 break;
882 case JPFN:
883 if (record->event.pressed) {
884 start = timer_read();
885 layer_state = (1<<JPXON);
886 } else {
887 layer_state = (0<<JPXON);
888 if (timer_elapsed(start) < 100) {
889 return MACRO( T(F7), END);
890 }
891 }
892 break;
893 case TOJPLOUT:
894 if (record->event.pressed) {
895 if (default_layer_state == (1<<JP)) {
896 default_layer_state = (0<<JP);
897 } else {
898 default_layer_state = (1<<JP);
899 }
900 return MACRO( T(ZKHK), END);
901 }
902 break;
903/*
904 // TOJPL and TOENL switch keyboard language.
905 // The Ctrl+[] commands here load the appropriate ibus-anthy input engine via a WM shortcut
906 // The first key pressed in the new engine is missed, thus the space key
907 // TOJPLOUT works in the same way but is used for switching engines on external systems.
908 case TOJPL:
909 if (record->event.pressed) {
910 default_layer_state = (1<<JP);
911 return MACRO( D(LCTL), T(END), U(LCTL), END);
912 //return MACRO( D(LCTL), T(END), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
913 }
914 break;
915 case TOENL:
916 if (record->event.pressed) {
917 default_layer_state = (1<<BASE);
918 return MACRO( D(LCTL), T(HOME), U(LCTL), END);
919 //return MACRO( D(LCTL), T(HOME), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
920 }
921 break;
922*/
923 }
924 return MACRO_NONE;
925};
926
927// Runs just one time when the keyboard initializes.
928void matrix_init_user(void) {
929};
930
931// Runs constantly in the background, in a loop.
932void matrix_scan_user(void) {
933
934 uint8_t layer = biton32(layer_state);
935 uint8_t deflayer = biton32(default_layer_state);
936
937 ergodox_board_led_off();
938 ergodox_right_led_1_off();
939 ergodox_right_led_2_off();
940 ergodox_right_led_3_off();
941
942
943 switch (layer) {
944 case 0:
945 //none
946 break;
947// case 1:
948// ergodox_right_led_2_on();
949// break;
950 case 6:
951 ergodox_right_led_3_on();
952 break;
953 }
954 switch (deflayer) {
955 case 0:
956 ergodox_right_led_1_off();
957 break;
958 case 1:
959 ergodox_right_led_1_on();
960 break;
961 }
962};
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/readme.md b/keyboards/ergodox/keymaps/ishigoya-jp/readme.md
new file mode 100644
index 000000000..9ee557335
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/readme.md
@@ -0,0 +1,54 @@
1This is a dual English-Japanese keymap that utilises a thumb-shift system for Japanese input. You can read more about this layout on my blog [here](https://ishigoya.com).
2
3### Some Editing Necessary
4The system I created this on is a Chromebook, and uses a Japanese keymap, so some of the key mappings may not be the same as those on your system. In particular, the Escape key on layer 0 is mapped to KC_LCTL.
5
6### Layouts
7------
8#### English layer - layer 0
9The English layout is a modified Workman layout, and is pictured below:
10
11![English layout](img/keyboard-layout-enL.png)
12
13Some of the punctuation keys have been moved to a separate number/symbol layer.
14
15#### Number / Symbol layer - layer 6
16
17The Number / Symbol layer is reachable through a ACTION_LAYER_MOMENTARY function. The blue LED is illuminated when this layer is active. It is accessible from the English or Japanese layers.
18
19![Number layout](img/keyboard-layout-numL.png)
20
21#### Japanese layers - layers 1-5
22
23There are 5 layers involved in Japanese input. The TOJPLOUT macro is mapped to the En / 和 button, and switches default layer between layer 0 (English) and 1 (main Japanese layer). When layer 1 is the default layer, the red LED is on. It also outputs the ZKHK button to change the input method language.
24
25On keypress, strings of romaji characters are output by the keyboard using macros, and these simulate the input of individual keys on a latin keyboard.
26
27![Japanese layout](img/keyboard-layout-jpL.png)
28
29Layer 1 is the JP layer. Keys on this layer correspond to singleton keys, or keys on the bottom row where a key is shared. For example, pressing the "ふ や" key outputs `ふ` (or "fu").
30
31Layer 2 is the JPXON layer, and is active while holding the Fn key. This prints keys that are prefaced by "x" when writing in romaji. For example, pressing the "ふ や" key while holding the Fn key outputs `ゃ` (or "xya").
32
33Layer 3 is the JPKAZARI layer, and is active while holding the 飾り key. This provides letters with dakuten. For example, pressing the "ふ や" key while holding the 飾り key outputs `ぶ` (or "bu").
34
35Layer 4 is the JPTOPROW layer, and is active while holding the シフト key. Keys on this line correspond to top row keys on shared keys in the image. For example, pressing the "ふ や" key while holding the シフト key outputs `や` (or "ya").
36
37Layer 5 is the JPTRKZ layer, and is active while holding both the シフト key and the 飾り key. This layer contains handakuten keys. For example, pressing the "ふ や" while holding both the シフト key and the 飾り key outputs `ぷ` (or "pu").
38
39I've also separated out the #define sections and the macros required for kana for easy copying, in case anyone else should wish to make a kana-based layout.
40
41When tapped, the シフト key acts as a space key, and the 飾り key acts as a return key. This allows them to function as 変換 and 無変換, respectively, in many IMEs.
42
43Furthermore the Fn key, when tapped, acts as an F7 key, providing easy switching to katakana in many IMEs.
44
45### Other features
46The cut/copy button gives copy functionality on a short press, and cut functionality on a long press.
47
48The tmux prefix button outputs Control-B.
49
50The Control & Shift key acts as holding the control and shift keys at the same time.
51
52SelAll outputs Control-A.
53
54Undo outputs Control-Z.
diff --git a/keyboards/ergodox/keymaps/replicaJunction/config.h b/keyboards/ergodox/keymaps/replicaJunction/config.h
new file mode 100644
index 000000000..d32b46e4e
--- /dev/null
+++ b/keyboards/ergodox/keymaps/replicaJunction/config.h
@@ -0,0 +1,63 @@
1/*
2Config file - Ergodox QMK with replicaJunction layout
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
19#define KEYBOARDS_ERGODOX_CONFIG_H_
20
21#define MOUSEKEY_DELAY 100
22#define MOUSEKEY_INTERVAL 20
23#define MOUSEKEY_MAX_SPEED 3
24#define MOUSEKEY_TIME_TO_MAX 10
25
26#define TAPPING_TOGGLE 1
27
28/* define if matrix has ghost */
29//#define MATRIX_HAS_GHOST
30
31// MS the button needs to be held before a tap becomes a hold (default: 200)
32#define TAPPING_TERM 200
33
34#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.)
35
36// I don't have any locking keys, so I don't need these features
37
38
39/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
40
41//#define LOCKING_SUPPORT_ENABLE
42/* Locking resynchronize hack */
43//#define LOCKING_RESYNC_ENABLE
44
45/* Prevent modifiers from sticking when switching layers */
46/* Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers */
47#define PREVENT_STUCK_MODIFIERS
48
49/* key combination for command */
50#define IS_COMMAND() ( \
51 keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
52 keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
53)
54
55#ifdef SUBPROJECT_ez
56 #include "ez/config.h"
57#endif
58#ifdef SUBPROJECT_infinity
59 #include "infinity/config.h"
60#endif
61
62
63#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
index 000000000..c9213553c
--- /dev/null
+++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c
@@ -0,0 +1,336 @@
1/*
2 * Keyboard: Ergodox
3 * Keymap: replicaJunction
4 * Version: 1.2
5 *
6 * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus.
7 * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now
8 * have both keyboards, so I've designed these layouts in an effort to make switching between the
9 * two as easy as possible.
10 *
11 * I've also tried to make use of the extra keys on the Ergodox in as logical of a manner as possible,
12 * adding to the layers in the Atreus config without disturbing what's there already. This allows for
13 * things like F11-F20, the Application (Menu) key, and better media key placement.
14 *
15 * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found
16 * here: https://colemakmods.github.io/mod-dh/
17 */
18
19#include "ergodox.h"
20#include "debug.h"
21#include "action_layer.h"
22
23#define _CO 0 // Colemak
24#define _QW 1 // QWERTY
25#define _ME 2 // media keys
26#define _NU 3 // numpad
27#define _EX 4 // extend
28#define _GA 5 // mouse overlay for gaming
29
30// Some quick aliases, just to make it look pretty
31#define _______ KC_TRNS
32#define KCX_CGR LCTL(KC_GRV)
33#define KX_STAB LSFT(KC_TAB)
34#define KX_COPY LCTL(KC_C)
35#define KX_CUT LCTL(KC_X)
36#define KX_PAST LCTL(KC_V)
37#define KX_UNDO LCTL(KC_Z)
38
39; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
40
41const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42 /*
43 * Keymap: Colemak-ModDH
44 *
45 * ,--------------------------------------------------. ,--------------------------------------------------.
46 * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = |
47 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
48 * | LCtrl | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - |
49 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
50 * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' |
51 * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------|
52 * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft |
53 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
54 * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | = | \ |
55 * `----------------------------------' `----------------------------------'
56 * ,-------------. ,-------------.
57 * | LCtrl| ~GA | | Left | Right|
58 * ,------|------|------| |------+------+------.
59 * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ |
60 * | BkSp | Del |------| |------| Enter| Space|
61 * | | | _NU | | Down | | |
62 * `--------------------' `--------------------'
63 */
64[_CO] = KEYMAP(
65 // left hand
66 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
67 KC_LCTL,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME,
68 KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G,
69 KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO),
70 KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), KC_LALT,
71
72 KC_LCTL, TG(_GA),
73 KC_HOME,
74 CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU),
75 // right hand
76 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
77 KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_MINS,
78 KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
79 KC_BSLS, KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
80 MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
81
82 KC_LEFT, KC_RGHT,
83 KC_UP,
84 KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
85 ),
86
87 /*
88 * Keymap: QWERTY layout.
89 *
90 * This is optimized for gaming, not typing, so there aren't as many macros
91 * as the Dvorak layer. Some of the keys have also been moved to "game-
92 * like" locations, such as making the spacebar available to the left thumb,
93 * and repositioning the arrow keys at the bottom right corner.
94 *
95 * ,--------------------------------------------------. ,--------------------------------------------------.
96 * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = |
97 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
98 * | LCtrl | Q | W | E | R | T | Home | | BkSp | Y | U | I | O | P | - |
99 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
100 * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
101 * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------|
102 * | LShft | Z | X | C | V | B | | | | N | M | , | . | / | RShft |
103 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
104 * | LGui | ` | \ |CtlShf| _NU | | _EX | - | ' | = | \ |
105 * `----------------------------------' `----------------------------------'
106 * ,-------------. ,-------------.
107 * | LCtrl| ~GA | | Left | Right|
108 * ,------|------|------| |------+------+------.
109 * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ |
110 * | BkSp | Del |------| |------| Enter| Space|
111 * | | | _NU | | Down | | |
112 * `--------------------' `--------------------'
113 */
114[_QW] = KEYMAP( // Layer1: QWERTY
115 // left hand
116 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
117 KC_LCTL,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
118 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G,
119 KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
120 KC_LGUI,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(_NU),
121
122 KC_LCTL,TG(_GA),
123 KC_HOME,
124 CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU),
125 // right hand
126 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
127 KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
128 KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
129 KC_BSLS, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,
130 MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS,
131
132 KC_LEFT, KC_RGHT,
133 KC_UP,
134 KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC)
135 ),
136
137 /*
138 * Keymap: Numbers and symbols
139 *
140 * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases.
141 * That's why the Num Lock key exists on this layer - just in case.
142 *
143 * This layer also contains the layout switches.
144 *
145 * ,--------------------------------------------------. ,--------------------------------------------------.
146 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | |
147 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
148 * | | ! | @ | { | } | & | | | | / | 7 | 8 | 9 | * | |
149 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
150 * | | # | $ | ( | ) | ~ |------| |------| | | 4 | 5 | 6 | - | |
151 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
152 * | | % | ^ | [ | ] | ` | | | | \ | 1 | 2 | 3 | + | |
153 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
154 * | |QWERTY|Colemk| | | | 0 | . | = | | |
155 * `----------------------------------' `----------------------------------'
156 * ,-------------. ,-------------.
157 * |NumLck| RESET| | | |
158 * ,------|------|------| |------+------+------.
159 * | | | | | | | |
160 * | | |------| |------| | |
161 * | | | | | | | |
162 * `--------------------' `--------------------'
163 */
164[_NU] = KEYMAP(
165 // left hand
166 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______,
167 _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______,
168 _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD,
169 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______,
170 _______, DF(_QW), DF(_CO), _______, _______,
171
172 KC_NLCK,RESET,
173 _______,
174 _______,_______,_______,
175 // right hand
176 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
177 _______, KC_SLSH, KC_P7, KC_P8, KC_P9, KC_PAST, _______,
178 KC_PIPE, KC_P4, KC_P5, KC_P6, KC_PMNS, _______,
179 _______, KC_BSLS, KC_P1, KC_P2, KC_P3, KC_PPLS, _______,
180 KC_P0, KC_PDOT, KC_EQL, _______, _______,
181
182 _______, _______,
183 _______,
184 _______, _______, _______
185 ),
186
187 /*
188 * Keymap: Extend
189 *
190 * ,--------------------------------------------------. ,--------------------------------------------------.
191 * | | F11 | F12 | F13 | F14 | F15 | Mute | | | F16 | F17 | F18 | F19 | F20 | |
192 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
193 * | | | | | | Ctrl`| Vol | | | PgUp | Home | Up | End | Del | |
194 * |--------+------+------+------+------+------| Up | | |------+------+------+------+------+--------|
195 * | | | Gui | Alt | Ctrl | |------| |------| PgDn | Left | Down | Right| BkSp | Menu |
196 * |--------+------+------+------+------+------| Vol | | |------+------+------+------+------+--------|
197 * | | Undo | Cut | Copy | | Paste| Down | | | | ^Tab | Tab | |Insert| PrntScr|
198 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
199 * | | | | | | | | | | | |
200 * `----------------------------------' `----------------------------------'
201 * ,-------------. ,-------------.
202 * | | | | | |
203 * ,------|------|------| |------+------+------.
204 * | | | | | | | |
205 * | | |------| |------| | |
206 * | | | | | | | |
207 * `--------------------' `--------------------'
208 *
209 * Ctrl+` is a keyboard shortcut for the program ConEmu, which provides a Quake-style drop-down command prompt.
210 *
211 */
212[_EX] = KEYMAP(
213 // left hand
214 _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_MUTE,
215 _______, _______, _______, _______, _______, KCX_CGR, KC_VOLU,
216 _______, _______, KC_LGUI, KC_LALT, KC_LCTL, _______,
217 _______, KX_UNDO, KX_CUT, KX_COPY, _______, KX_PAST, KC_VOLD,
218 _______, _______, _______, _______, _______,
219
220 _______,_______,
221 _______,
222 _______,_______,_______,
223 // right hand
224 _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______,
225 _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______,
226 KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU,
227 _______, _______, KX_STAB, KC_TAB, _______, KC_INS, KC_PSCR,
228 _______, _______, _______, _______, _______,
229 _______, _______,
230 _______,
231 _______, _______, _______
232 ),
233
234 /*
235 * Keymap: Gaming
236 *
237 * Provides a mouse overlay for the right hand, and also moves some "gamer friendly" keys to the left, such as space.
238 * This layer also removes a lot of dual-role keys, as when gaming, it's nicer not to need to keep track of those.
239 *
240 * ,--------------------------------------------------. ,--------------------------------------------------.
241 * | | | | | | | | | | | | | | | |
242 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
243 * | | | | | | | | | | |WhlUp | MsUp |WhlDn | | |
244 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
245 * | | | | | | |------| |------| |MsLeft|MsDown|MsRght| | |
246 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
247 * | | | | | | | | | | | | | | | |
248 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
249 * | LCtrl| | | | | | | | | | |
250 * `----------------------------------' `----------------------------------'
251 * ,-------------. ,-------------.
252 * | | ~_GA | | |MClick|
253 * ,------|------|------| |------+------+------.
254 * | | | | | | | |
255 * | Space| |------| |------|RClick|LClick|
256 * | | | | | | | |
257 * `--------------------' `--------------------'
258 */
259[_GA] = KEYMAP(
260 // left hand
261 _______, _______, _______, _______, _______, _______, _______,
262 _______, _______, _______, _______, _______, _______, _______,
263 _______, _______, _______, _______, _______, _______,
264 _______, _______, _______, _______, _______, _______, _______,
265 KC_LCTL, _______, _______, _______, _______,
266
267 _______,_______,
268 _______,
269 KC_SPC, _______,_______,
270
271 // right hand
272 _______, _______, _______, _______, _______, _______, _______,
273 _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
274 _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
275 _______, _______, _______, _______, _______, _______, _______,
276 _______, _______, _______, _______, _______,
277 _______, KC_BTN3,
278 _______,
279 _______, KC_BTN2, KC_BTN1
280 ),
281};
282
283const uint16_t PROGMEM fn_actions[] = {
284 [1] = ACTION_LAYER_TAP_TOGGLE(_NU) // FN1 - Momentary Layer 1 (Numbers and symbols)
285};
286
287const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
288{
289 // MACRODOWN only works in this function
290 switch(id) {
291 case 0:
292 if (record->event.pressed) {
293 register_code(KC_RSFT);
294 } else {
295 unregister_code(KC_RSFT);
296 }
297 break;
298 }
299 return MACRO_NONE;
300};
301
302// Runs just one time when the keyboard initializes.
303void matrix_init_user(void) {
304
305};
306
307// Runs constantly in the background, in a loop.
308void matrix_scan_user(void) {
309
310 uint8_t layer = biton32(layer_state);
311 // uint8_t default_layer = biton32(layer_state);
312
313 ergodox_board_led_off();
314 ergodox_right_led_1_off();
315 ergodox_right_led_2_off();
316 ergodox_right_led_3_off();
317
318 switch (layer) {
319 case _CO:
320 ergodox_right_led_1_on();
321 break;
322 case _QW:
323 ergodox_right_led_2_on();
324 break;
325 case _NU:
326 ergodox_right_led_3_on();
327 break;
328 case _GA:
329 ergodox_right_led_1_on();
330 ergodox_right_led_2_on();
331 default:
332 // none
333 break;
334 }
335
336};
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 @@
1# replicaJunction - Ergodox (EZ) Layout
2
3I 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.
4
5I 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/keyboards/kinesis/Makefile b/keyboards/kinesis/Makefile
index 4e2a6f00f..fbf05ca4a 100644
--- a/keyboards/kinesis/Makefile
+++ b/keyboards/kinesis/Makefile
@@ -1,3 +1,5 @@
1SUBPROJECT_DEFAULT = alvicstep
2
1ifndef MAKEFILE_INCLUDED 3ifndef MAKEFILE_INCLUDED
2 include ../../Makefile 4 include ../../Makefile
3endif \ No newline at end of file 5endif
diff --git a/keyboards/kinesis/alvicstep/Makefile b/keyboards/kinesis/alvicstep/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif
diff --git a/keyboards/kinesis/alvicstep/alvicstep.c b/keyboards/kinesis/alvicstep/alvicstep.c
new file mode 100644
index 000000000..fba9f5136
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/alvicstep.c
@@ -0,0 +1,105 @@
1#include "kinesis.h"
2
3// begin section origin https://github.com/alvicstep/tmk_keyboard
4
5void all_led_off(void)
6{
7 PORTD = 0b11111111;
8}
9
10void all_led_on(void)
11{
12 PORTD = 0b00000000;
13}
14void num_lock_led_on(void)
15{
16 PORTD = 0b11101111;
17}
18
19void caps_lock_led_on(void)
20{
21 PORTD = 0b01111111;
22}
23
24void scroll_lock_led_on(void)
25{
26 PORTD = 0b11011111;
27}
28void keypad_led_on(void)
29{
30 PORTD = 0b10111111;
31}
32void blink_all_leds(void)
33{
34 all_led_on();
35 _delay_ms(500);
36
37 all_led_off();
38 _delay_ms(100);
39
40 caps_lock_led_on();
41 _delay_ms(100);
42
43 num_lock_led_on();
44 _delay_ms(100);
45
46 scroll_lock_led_on();
47 _delay_ms(100);
48
49 keypad_led_on();
50 _delay_ms(100);
51
52 //back
53
54 scroll_lock_led_on();
55 _delay_ms(100);
56
57 num_lock_led_on();
58 _delay_ms(100);
59
60 caps_lock_led_on();
61 _delay_ms(100);
62
63 all_led_off();
64}
65
66// End section origin https://github.com/alvicstep/tmk_keyboard
67
68 void matrix_init_kb(void) {
69 blink_all_leds();
70 matrix_init_user();
71}
72
73
74void matrix_scan_kb(void) {
75 // put your looping keyboard code here
76 // runs every cycle (a lot)
77
78 matrix_scan_user();
79}
80
81bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
82 // put your per-action keyboard code here
83 // runs for every action, just before processing by the firmware
84
85 return process_record_user(keycode, record);
86}
87
88void led_set_kb(uint8_t usb_led) {
89 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
90
91//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
92 uint8_t leds = 0xF0;
93 if (usb_led & 1 << USB_LED_NUM_LOCK)
94 leds &= ~0x10;
95 if (usb_led & 1 << USB_LED_CAPS_LOCK)
96 leds &= ~0x80;
97 if (usb_led & 1 << USB_LED_SCROLL_LOCK)
98 leds &= ~0x20;
99 PORTD = (PORTD & 0x0F) | leds;
100
101 led_set_user(usb_led);
102
103}
104
105
diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h
new file mode 100644
index 000000000..f91a52314
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/alvicstep.h
@@ -0,0 +1,67 @@
1#ifndef KINESIS_ALVICSTEP_H
2#define KINESIS_ALVICSTEP_H
3
4#include "../kinesis.h"
5
6
7#define KEYMAP( \
8 k02,k22,k12,k01,k21,k11,k00,k20,k10, \
9 k80,k70,k60,k50,k40,k30, \
10 k81,k71,k61,k51,k41,k31, \
11 k82,k72,k62,k52,k42,k32, \
12 k83,k73,k63,k53,k43,k33, \
13 k74,k64,k54,k34, \
14 k36,k35, \
15 k55, \
16 k56,k46,k75, \
17 k03,k23,k13,k04,k24,k14,k05,k85,k84, \
18 k94,kA4,kB4,kD4,kE4,kF4, \
19 k95,kA5,kB5,kD5,kE5,kF5, \
20 k96,kA6,kB6,kD6,kE6,kF6, \
21 k97,kA7,kB7,kD7,kE7,kF7, \
22 k93,kB3,kD3,kE3, \
23 k47,k66, \
24 k67, \
25 k87,k76,k86 \
26) { \
27 { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
28 { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
29 { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
30 { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
31 { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
32 { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
33 { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
34 { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
35 { k80, k81, k82, k83, k84, k85, k86, k87}, \
36 { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
37 { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
38 { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
39 { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
40 { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
41 { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
42 { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
43}
44
45
46/* Row pin configuration
47PF0 A
48PF1 B
49PF2 C
50PF3 G 0 = U4, 1 = U5
51
52
53 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF
54PB0 c0| f6 f8 f7 5 4 3 2 1 =+
55PB1 c1| f3 f5 f4 t r e w q TAB
56PB2 c2| ESC f2 f1 g f d s a CL
57PB3 c3| f9 f11 f10 b v c x z LS UP DN [{ ]}
58PB4 c4| f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
59PB5 c5| PB PGM KPD y u i o p \
60PB6 c6| LC DL BS RC EN SP h j k l ;: '"
61PB7 c7| RA PU PD n m ,< .> /? RS
62 */
63
64
65
66
67#endif
diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h
new file mode 100644
index 000000000..88b7e2644
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/config.h
@@ -0,0 +1,35 @@
1#ifndef ALVICSTEP_CONFIG_H
2#define ALVICSTEP_CONFIG_H
3
4#include "../config.h"
5
6/* USB Device descriptor parameter */
7#define PRODUCT_ID 0x6060
8#define DEVICE_VER 0x0001
9
10/* key matrix size */
11#define MATRIX_ROWS 16
12#define MATRIX_COLS 8
13
14/*
15 * Keyboard Matrix Assignments
16 *
17 * Change this to how you wired your keyboard
18 * COLS: AVR pins used for columns, left to right
19 * ROWS: AVR pins used for rows, top to bottom
20 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
21 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
22 *
23*/
24//Passed through the port multipler, so 4 pins =16
25#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
26
27// May be upside down.
28#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
29#define UNUSED_PINS
30
31/* COL2ROW or ROW2COL */
32#define DIODE_DIRECTION COL2ROW
33
34
35#endif
diff --git a/keyboards/kinesis/docs/kicad/kinesis-cache.lib b/keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib
index f798d39d6..f798d39d6 100644
--- a/keyboards/kinesis/docs/kicad/kinesis-cache.lib
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib
diff --git a/keyboards/kinesis/docs/kicad/kinesis.pro b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro
index 9f130b509..9f130b509 100644
--- a/keyboards/kinesis/docs/kicad/kinesis.pro
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro
diff --git a/keyboards/kinesis/docs/kicad/kinesis.sch b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch
index f75335aa0..f75335aa0 100644
--- a/keyboards/kinesis/docs/kicad/kinesis.sch
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch
diff --git a/keyboards/kinesis/docs/photos/P1050573.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg
index 027ab9efb..027ab9efb 100644
--- a/keyboards/kinesis/docs/photos/P1050573.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/photos/P1050574.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg
index d49c492b8..d49c492b8 100644
--- a/keyboards/kinesis/docs/photos/P1050574.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/photos/P1050575.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg
index 50cc9897c..50cc9897c 100644
--- a/keyboards/kinesis/docs/photos/P1050575.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/readme.txt b/keyboards/kinesis/alvicstep/docs/readme.txt
index af33ac490..af33ac490 100644
--- a/keyboards/kinesis/docs/readme.txt
+++ b/keyboards/kinesis/alvicstep/docs/readme.txt
diff --git a/keyboards/kinesis/docs/schematic.png b/keyboards/kinesis/alvicstep/docs/schematic.png
index fa9405a1f..fa9405a1f 100644
--- a/keyboards/kinesis/docs/schematic.png
+++ b/keyboards/kinesis/alvicstep/docs/schematic.png
Binary files differ
diff --git a/keyboards/kinesis/matrix.c b/keyboards/kinesis/alvicstep/matrix.c
index cb0d5ad7d..cb0d5ad7d 100644
--- a/keyboards/kinesis/matrix.c
+++ b/keyboards/kinesis/alvicstep/matrix.c
diff --git a/keyboards/kinesis/alvicstep/readme.md b/keyboards/kinesis/alvicstep/readme.md
new file mode 100644
index 000000000..974e42e50
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/readme.md
@@ -0,0 +1,46 @@
1kinesis-advantage keyboard firmware
2======================
3
4This directory is called alvicstep because https://github.com/alvicstep did the heavy work and took the photos in the doc directory.
5alvicstep did NOT do anything related to the QMK implementation, so don't bug him/her.
6
7There are other ways of replacing the CPU in the kinesis, this one uses jumper wires from the Teensy to the original DIP socket
8
9
10## Kinesis specific information
11This is a port of https://github.com/alvicstep/tmk_keyboard,
12which is a fork of https://github.com/wjanssens/tmk_keyboard,
13which is based on work from https://github.com/chrisandreae/keyboard-firmware
14
15If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK.
16I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
17
18Not yet implemented:
19- Kinesis EEProm reading or writing
20- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
21
22
23
24## Quantum MK Firmware
25
26For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
27
28## Building
29
30Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
31
32Depending on which keymap you would like to use, you will have to compile slightly differently.
33
34### Default
35
36To build with the default keymap, simply run `make`.
37
38### Other Keymaps
39
40Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
41
42To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
43
44$ make keymap=[default|jack|<name>]
45
46Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/kinesis/alvicstep/rules.mk b/keyboards/kinesis/alvicstep/rules.mk
new file mode 100644
index 000000000..fb421a34f
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/rules.mk
@@ -0,0 +1,10 @@
1ifndef QUANTUM_DIR
2 include ../../../Makefile
3endif
4
5# just silently stop, since we need to upload with teensy uploader
6upload: build
7
8
9
10
diff --git a/keyboards/kinesis/config.h b/keyboards/kinesis/config.h
index 8f1fdbdb6..7cb0532c6 100644
--- a/keyboards/kinesis/config.h
+++ b/keyboards/kinesis/config.h
@@ -22,58 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22 22
23/* USB Device descriptor parameter */ 23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED 24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER You 25#define MANUFACTURER You
28#define PRODUCT kinesis-advantage 26#define PRODUCT kinesis-advantage
29#define DESCRIPTION A custom keyboard 27#define DESCRIPTION A custom keyboard
30 28
31// Mouse 29// Mouse
32#define MOUSEKEY_DELAY 20 30#define MOUSEKEY_DELAY 60
33#define MOUSEKEY_INTERVAL 20 31#define MOUSEKEY_INTERVAL 20
34#define MOUSEKEY_MAX_SPEED 4 32#define MOUSEKEY_MAX_SPEED 4
35#define MOUSEKEY_TIME_TO_MAX 20 33#define MOUSEKEY_TIME_TO_MAX 10
36#define MOUSEKEY_WHEEL_MAX_SPEED 1 34#define MOUSEKEY_WHEEL_MAX_SPEED 1
37#define MOUSEKEY_WHEEL_DELTA 1 35#define MOUSEKEY_WHEEL_DELTA 1
38#define MOUSEKEY_WHEEL_TIME_TO_MAX 1 36#define MOUSEKEY_WHEEL_TIME_TO_MAX 1
39 37
40/* key matrix size */
41#define MATRIX_ROWS 16
42#define MATRIX_COLS 8
43
44/*
45 * Keyboard Matrix Assignments
46 *
47 * Change this to how you wired your keyboard
48 * COLS: AVR pins used for columns, left to right
49 * ROWS: AVR pins used for rows, top to bottom
50 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
51 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
52 *
53*/
54//Passed through the port multipler, so 4 pins =16
55#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
56
57// May be upside down.
58#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
59#define UNUSED_PINS
60
61/* COL2ROW or ROW2COL */
62#define DIODE_DIRECTION COL2ROW
63
64// #define BACKLIGHT_PIN B7
65// #define BACKLIGHT_BREATHING
66// #define BACKLIGHT_LEVELS 3
67
68
69/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 38/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
70#define DEBOUNCING_DELAY 5 39#define DEBOUNCING_DELAY 5
71 40
72/* define if matrix has ghost (lacks anti-ghosting diodes) */
73//#define MATRIX_HAS_GHOST
74
75/* number of backlight levels */
76
77/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
78#define LOCKING_SUPPORT_ENABLE 42#define LOCKING_SUPPORT_ENABLE
79/* Locking resynchronize hack */ 43/* Locking resynchronize hack */
@@ -171,4 +135,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
171//#define NO_ACTION_MACRO 135//#define NO_ACTION_MACRO
172//#define NO_ACTION_FUNCTION 136//#define NO_ACTION_FUNCTION
173 137
138
139
140#ifdef SUBPROJECT_alvicstep
141 #include "alvicstep/config.h"
142#endif
143#ifdef SUBPROJECT_stapelberg
144 #include "stapelberg/config.h"
145#endif
146
174#endif 147#endif
diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c
index 3bf80699c..01a66b5e5 100644
--- a/keyboards/kinesis/keymaps/default/keymap.c
+++ b/keyboards/kinesis/keymaps/default/keymap.c
@@ -1,10 +1,6 @@
1#include "kinesis.h" 1#include "kinesis.h"
2#include "action_layer.h"
3 2
4#define QWERTY 0 // Base qerty 3#define QWERTY 0 // Base qwerty
5#define SYMB 1// Symbol layer
6
7// An almost entirely blank keymap. Test layers with the upper right hand key - 1 in normal mode, reset in layer 2.
8 4
9 5
10/**************************************************************************************************** 6/****************************************************************************************************
@@ -33,7 +29,6 @@
33* `--------------------' `--------------------' 29* `--------------------' `--------------------'
34*/ 30*/
35 31
36
37const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38[QWERTY] = KEYMAP( 33[QWERTY] = KEYMAP(
39 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, 34 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
@@ -45,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 KC_LCTL,KC_LALT, 40 KC_LCTL,KC_LALT,
46 KC_HOME, 41 KC_HOME,
47 KC_BSPC,KC_DEL ,KC_END , 42 KC_BSPC,KC_DEL ,KC_END ,
48 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1, 43 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
49 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, 44 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
50 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 45 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
51 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, 46 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
@@ -54,32 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
54 KC_RGUI,KC_RCTL, 49 KC_RGUI,KC_RCTL,
55 KC_PGUP, 50 KC_PGUP,
56 KC_PGDN,KC_ENTER ,KC_SPC 51 KC_PGDN,KC_ENTER ,KC_SPC
57 ),
58[SYMB] = KEYMAP(
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_TRNS, KC_TRNS,
66 KC_TRNS,
67 KC_TRNS, KC_TRNS, KC_TRNS,
68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, RESET,
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 KC_TRNS, KC_TRNS,
75 KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS
77 ) 52 )
78}; 53};
79 54
80const uint16_t PROGMEM fn_actions[] = {
81 [0] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
82 55
56const uint16_t PROGMEM fn_actions[] = {
83 57
84}; 58};
85 59
diff --git a/keyboards/kinesis/keymaps/programmer/Makefile b/keyboards/kinesis/keymaps/dvorak/Makefile
index 9d3df5964..9d3df5964 100644
--- a/keyboards/kinesis/keymaps/programmer/Makefile
+++ b/keyboards/kinesis/keymaps/dvorak/Makefile
diff --git a/keyboards/kinesis/keymaps/programmer/config.h b/keyboards/kinesis/keymaps/dvorak/config.h
index 8893d122e..8893d122e 100644
--- a/keyboards/kinesis/keymaps/programmer/config.h
+++ b/keyboards/kinesis/keymaps/dvorak/config.h
diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c
new file mode 100644
index 000000000..9008bc808
--- /dev/null
+++ b/keyboards/kinesis/keymaps/dvorak/keymap.c
@@ -0,0 +1,93 @@
1#include "kinesis.h"
2
3#define _DVORAK 0 // Base Dvorak layer
4#define _MEDIA 1 // Media layer
5
6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7[_DVORAK] = KEYMAP(
8 // left hand
9 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
10 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5,
11 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y,
12 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
13 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X,
14 KC_ESC, KC_LBRC, KC_DOWN, KC_UP,
15 // left thumb
16 KC_LGUI, KC_LCTL,
17 KC_LALT,
18 KC_BSPC, KC_DEL, TG(_MEDIA),
19 // right hand
20 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1,
21 KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
22 KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
23 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
24 KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
25 KC_LEFT, KC_RIGHT, KC_RBRC, KC_BSLS,
26 // right thumb
27 KC_RCTL, KC_RGUI,
28 KC_RALT,
29 TG(_MEDIA), KC_ENT, KC_SPC
30 ),
31
32[_MEDIA] = KEYMAP(
33 // left hand
34 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
35 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
36 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
37 KC_NO, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO,
38 KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,
39 KC_NO, KC_NO, KC_MS_D, KC_MS_U,
40 // left thumb
41 KC_NO, KC_NO,
42 KC_NO,
43 KC_NO, KC_NO, KC_TRNS,
44 // right hand
45 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
46 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_POWER,
47 KC_NO, KC_VOLU, KC_MS_U, KC_VOLD, KC_NO, KC_NO,
48 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
49 KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO,
50 KC_MS_L, KC_MS_R, KC_NO, KC_NO,
51 // right thumb
52 KC_NO, KC_NO,
53 KC_NO,
54 KC_TRNS, KC_ENT, KC_NO
55)
56};
57
58
59const uint16_t PROGMEM fn_actions[] = {
60
61};
62
63const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
64{
65 // MACRODOWN only works in this function
66 switch(id) {
67 case 0:
68 if (record->event.pressed) {
69 register_code(KC_RSFT);
70 } else {
71 unregister_code(KC_RSFT);
72 }
73 break;
74 }
75 return MACRO_NONE;
76};
77
78
79void matrix_init_user(void) {
80
81}
82
83void matrix_scan_user(void) {
84
85}
86
87bool process_record_user(uint16_t keycode, keyrecord_t *record) {
88 return true;
89}
90
91void led_set_user(uint8_t usb_led) {
92
93}
diff --git a/keyboards/kinesis/keymaps/milestogo/Makefile b/keyboards/kinesis/keymaps/milestogo/Makefile
new file mode 100644
index 000000000..9d3df5964
--- /dev/null
+++ b/keyboards/kinesis/keymaps/milestogo/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/kinesis/keymaps/milestogo/config.h b/keyboards/kinesis/keymaps/milestogo/config.h
new file mode 100644
index 000000000..8893d122e
--- /dev/null
+++ b/keyboards/kinesis/keymaps/milestogo/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif
diff --git a/keyboards/kinesis/keymaps/programmer/keymap.c b/keyboards/kinesis/keymaps/milestogo/keymap.c
index 83fb7bd5f..c2635eefe 100644
--- a/keyboards/kinesis/keymaps/programmer/keymap.c
+++ b/keyboards/kinesis/keymaps/milestogo/keymap.c
@@ -2,10 +2,10 @@
2#include "action_layer.h" 2#include "action_layer.h"
3#include "mousekey.h" 3#include "mousekey.h"
4 4
5#define QWERTY 0 // Base qerty 5#define _QWERTY 0 // Base qerty
6#define SYMB 1// Symbol layer 6#define _SYMB 1// Symbol layer
7#define MOUSE 2// 7#define _MOUSE 2//
8 8#define _TRANS 3//
9 9
10 10
11 11
@@ -20,27 +20,26 @@ enum {
20}; 20};
21 21
22 22
23// Borrowing very heavily from 23// Why so many gui keys, why not just map all the OS X stuff to buttons? Good question.
24// https://github.com/alvicstep/tmk_keyboard
25/**************************************************************************************************** 24/****************************************************************************************************
26* 25*
27* Keymap: Default Layer in Qwerty 26* Keymap: Default Layer in Qwerty
28* 27*
29* ,-------------------------------------------------------------------------------------------------------------------. 28* ,-------------------------------------------------------------------------------------------------------------------.
30* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT | 29* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
31* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| 30* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
32* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | 31* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
33* |--------+------+------+------+------+------| +------+------+------+------+------+--------| 32* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
34* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | 33* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
35* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 34* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
36* |MouseFN1| A | S | D | F | G | | H | J | K | L | ;: | '" | 35* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" |
37* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 36* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
38* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift | 37* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift |
39* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 38* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
40* | `~ | ESC |MOUSE1|MOUSE2| | [{ | ]} | ESC | GUI | 39* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} |
41* `---------------------------' `---------------------------' 40* `---------------------------' `---------------------------'
42* ,-------------. ,-------------. 41* ,-------------. ,-------------.
43* | Ctrl | Alt | | Gui | Ctrl | 42* | CTRL | GUI | | ALT | GUI |
44* ,------|------|------| |------+------+------. 43* ,------|------|------| |------+------+------.
45* | | | Home | | PgUp | | | 44* | | | Home | | PgUp | | |
46* | BkSp | Del |------| |------|Return| Space| 45* | BkSp | Del |------| |------|Return| Space|
@@ -48,16 +47,15 @@ enum {
48* `--------------------' `--------------------' 47* `--------------------' `--------------------'
49*/ 48*/
50 49
51
52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 50const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
53[QWERTY] = KEYMAP( 51[_QWERTY] = KEYMAP(
54 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, 52 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
55 KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , 53 KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
56 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , 54 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
57 KC_FN1 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , 55 KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
58 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , 56 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
59 KC_GRV ,KC_ESC, KC_BTN1,KC_BTN2, 57 KC_GRAVE, KC_ESC, KC_FN4, KC_FN5,
60 KC_LCTL,KC_LALT, 58 KC_LCTL,KC_LGUI,
61 KC_HOME, 59 KC_HOME,
62 KC_BSPC,KC_DEL ,KC_FN0 , 60 KC_BSPC,KC_DEL ,KC_FN0 ,
63 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET, 61 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET,
@@ -65,18 +63,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 63 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
66 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, 64 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
67 KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT, 65 KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
68 KC_LBRC,KC_RBRC, KC_ESC, KC_RGUI, 66 KC_FN6, KC_FN7, KC_LBRC ,KC_RBRC,
69 KC_RGUI,KC_RCTL, 67 KC_RALT,KC_RGUI,
70 KC_PGUP, 68 KC_PGUP,
71 KC_PGDN,KC_ENTER ,KC_SPC 69 KC_PGDN,KC_ENTER ,KC_SPC
72 ), 70 ),
73[SYMB] = KEYMAP( 71
72/* _SYMBol level
73*
74* ,-------------------------------------------------------------------------------------------------------------------.
75* | | | | | | | | | | | | | | | | bOOT |
76* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
77* | | | * | # | | | | | | | | | |
78* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
79* | | / | [ | ] | | | | | | | | | |
80* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
81* | | | { | } | | | | | | | | | |
82* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
83* | | = | ( | ) | | | | | | | | | |
84* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
85* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } |
86* `---------------------------' `---------------------------'
87* ,-------------. ,-------------.
88* | CTRL | GUI | | ALT | GUI |
89* ,------|------|------| |------+------+------.
90* | | | Home | | PgUp | | |
91* | BkSp | Del |------| |------|Mouse1|Mouse2|
92* | | | End | | PgDn |LClick|Rclick|
93* `--------------------' `--------------------'
94*/
95
96
97
98[_SYMB] = KEYMAP(
74 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 99 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
75 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 100 KC_TRNS, KC_TRNS, KC_ASTR, KC_HASH, KC_TRNS, KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 101 KC_TRNS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
77 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 102 KC_TRNS, KC_TRNS, RSFT(KC_LBRC), RSFT(KC_RBRC), KC_TRNS, KC_TRNS,
78 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 103 KC_TRNS, KC_EQL, RSFT(KC_9), RSFT(KC_0), KC_TRNS, KC_TRNS,
79 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 104 KC_TRNS, KC_TRNS, KC_FN4, KC_FN5,
80 KC_TRNS, KC_TRNS, 105 KC_TRNS, KC_TRNS,
81 KC_TRNS, 106 KC_TRNS,
82 KC_TRNS, KC_TRNS, KC_TRNS, 107 KC_TRNS, KC_TRNS, KC_TRNS,
@@ -85,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
85 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 110 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
86 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 111 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
87 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 112 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
88 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 113 KC_FN6, KC_FN7, KC_TRNS, KC_TRNS,
89 KC_TRNS, KC_TRNS, 114 KC_TRNS, KC_TRNS,
90 KC_TRNS, 115 KC_TRNS,
91 KC_TRNS, KC_TRNS, KC_TRNS 116 KC_TRNS, KC_TRNS, KC_TRNS
@@ -103,10 +128,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
103* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 128* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
104* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | | 129* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
105* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 130* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
106* | `~ | ESC | < | > | | { | } | ESC | | 131* | `~ | ESC | | | | | | { | } |
107* `---------------------------' `---------------------------' 132* `---------------------------' `---------------------------'
108* ,-------------. ,-------------. 133* ,-------------. ,-------------.
109* | Ctrl | Alt | | Gui | Ctrl | 134* | CTRL | GUI | | ALT | GUI |
110* ,------|------|------| |------+------+------. 135* ,------|------|------| |------+------+------.
111* | | | Home | | PgUp | | | 136* | | | Home | | PgUp | | |
112* | BkSp | Del |------| |------|Mouse1|Mouse2| 137* | BkSp | Del |------| |------|Mouse1|Mouse2|
@@ -115,13 +140,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
115*/ 140*/
116 141
117 142
118[MOUSE] = KEYMAP( 143[_MOUSE] = KEYMAP(
119 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 144 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
120 KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC , 145 KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
121 KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, 146 KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
122 KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), 147 KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E),
123 KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN, 148 KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN,
124 KC_TRNS, KC_TRNS, KC_LABK, KC_RABK, 149 KC_TRNS, KC_TRNS, KC_NO, KC_NO,
125 KC_TRNS, KC_TRNS, 150 KC_TRNS, KC_TRNS,
126 KC_TRNS, 151 KC_TRNS,
127 KC_TRNS, KC_TRNS, KC_TRNS, 152 KC_TRNS, KC_TRNS, KC_TRNS,
@@ -129,22 +154,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
129 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2, 154 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
130 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1, 155 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
131 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0, 156 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
132 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), KC_TRNS, KC_TRNS, 157 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC),
133 KC_LCBR, KC_RCBR, KC_ESC, KC_TRNS, 158 KC_LCBR, KC_RCBR, KC_NO, KC_NO,
134 KC_TRNS, KC_TRNS, 159 KC_TRNS, KC_TRNS,
135 KC_TRNS, 160 KC_TRNS,
136 KC_TRNS, KC_BTN1, KC_BTN2 161 KC_TRNS, KC_BTN1, KC_BTN2
137 ), 162 ),
138 163
139 164
165
166/* EMPTY
167*
168* ,-------------------------------------------------------------------------------------------------------------------.
169* | | | | | | | | | | | | | | | | bOOT |
170* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
171* | | | | | | | | | | | | | |
172* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
173* | | | | | | | | | | | | | |
174* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
175* | | | | | | | | | | | | | |
176* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
177* | | | | | | | | | | | | | |
178* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
179* | | | | | | | | | |
180* `---------------------------' `---------------------------'
181* ,-------------. ,-------------.
182* | Ctrl | Alt | | Gui | Ctrl |
183* ,------|------|------| |------+------+------.
184* | | | Home | | PgUp | | |
185* | BkSp | Del |------| |------|Mouse1|Mouse2|
186* | | | End | | PgDn |LClick|Rclick|
187* `--------------------' `--------------------'
188*/
189
190
191
192[_TRANS] = KEYMAP(
193 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
194 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
196 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
197 KC_TRNS, KC_TRNS, KC_FN10, KC_FN11, KC_TRNS, KC_TRNS,
198 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
199 KC_TRNS, KC_TRNS,
200 KC_TRNS,
201 KC_TRNS, KC_TRNS, KC_TRNS,
202 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, KC_2,
203 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
204 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
205 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
206 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
207 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
208 KC_TRNS, KC_TRNS,
209 KC_TRNS,
210 KC_TRNS, KC_TRNS, KC_TRNS
211 ),
212
213
140}; 214};
141 215
142const uint16_t PROGMEM fn_actions[] = {
143 [0] = ACTION_LAYER_TAP_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
144 [1] = ACTION_LAYER_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
145 [2] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
146 216
147 217
218const uint16_t PROGMEM fn_actions[] = {
219 [0] = ACTION_LAYER_TAP_TOGGLE(_MOUSE) ,
220 [1] = ACTION_LAYER_TOGGLE(_MOUSE) ,
221 [2] = ACTION_LAYER_TAP_TOGGLE(_SYMB) ,
222 [5]= ACTION_LAYER_TAP_KEY(_SYMB,KC_RIGHT),
223 [4]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_LEFT),
224 [6]= ACTION_LAYER_TAP_KEY(_SYMB,KC_UP),
225 [7]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_DOWN),
226
227
148}; 228};
149 229
150const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 230const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -214,18 +294,23 @@ void matrix_init_user(void) {
214} 294}
215 295
216void matrix_scan_user(void) { 296void matrix_scan_user(void) {
297
298#ifdef ALVICSTEP_CONFIG_H
217 int8_t layer = biton32(layer_state); 299 int8_t layer = biton32(layer_state);
218 300
219 switch (layer) { 301 switch (layer) {
220 case 1: 302 case 1:
221 all_led_off();
222 break;
223 case 2:
224 if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) { 303 if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) {
225 all_led_off(); 304 all_led_off();
226 caps_lock_led_on(); 305 caps_lock_led_on();
227 } 306 }
228 break; 307 break;
308
309 case 2:
310 if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) {
311 all_led_off();
312 scroll_lock_led_on();
313 }
229 case 0: 314 case 0:
230 all_led_off(); 315 all_led_off();
231 num_lock_led_on(); 316 num_lock_led_on();
@@ -233,6 +318,7 @@ void matrix_scan_user(void) {
233 default: 318 default:
234 break; 319 break;
235 } 320 }
321#endif
236 322
237} 323}
238 324
diff --git a/keyboards/kinesis/keymaps/programmer/readme.md b/keyboards/kinesis/keymaps/milestogo/readme.md
index 76356a687..76356a687 100644
--- a/keyboards/kinesis/keymaps/programmer/readme.md
+++ b/keyboards/kinesis/keymaps/milestogo/readme.md
diff --git a/keyboards/kinesis/kinesis.c b/keyboards/kinesis/kinesis.c
index 1fee90e6f..7a6a1be54 100644
--- a/keyboards/kinesis/kinesis.c
+++ b/keyboards/kinesis/kinesis.c
@@ -1,106 +1 @@
1#include "kinesis.h" #include "kinesis.h"
2
3// begin section origin https://github.com/alvicstep/tmk_keyboard
4
5
6void all_led_off(void)
7{
8 PORTD = 0b11111111;
9}
10
11void all_led_on(void)
12{
13 PORTD = 0b00000000;
14}
15void num_lock_led_on(void)
16{
17 PORTD = 0b11101111;
18}
19
20void caps_lock_led_on(void)
21{
22 PORTD = 0b01111111;
23}
24
25void scroll_lock_led_on(void)
26{
27 PORTD = 0b11011111;
28}
29void keypad_led_on(void)
30{
31 PORTD = 0b10111111;
32}
33void blink_all_leds(void)
34{
35 all_led_on();
36 _delay_ms(500);
37
38 all_led_off();
39 _delay_ms(100);
40
41 caps_lock_led_on();
42 _delay_ms(100);
43
44 num_lock_led_on();
45 _delay_ms(100);
46
47 scroll_lock_led_on();
48 _delay_ms(100);
49
50 keypad_led_on();
51 _delay_ms(100);
52
53 //back
54
55 scroll_lock_led_on();
56 _delay_ms(100);
57
58 num_lock_led_on();
59 _delay_ms(100);
60
61 caps_lock_led_on();
62 _delay_ms(100);
63
64 all_led_off();
65}
66
67// End section origin https://github.com/alvicstep/tmk_keyboard
68
69 void matrix_init_kb(void) {
70 blink_all_leds();
71 matrix_init_user();
72}
73
74
75void matrix_scan_kb(void) {
76 // put your looping keyboard code here
77 // runs every cycle (a lot)
78
79 matrix_scan_user();
80}
81
82bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
83 // put your per-action keyboard code here
84 // runs for every action, just before processing by the firmware
85
86 return process_record_user(keycode, record);
87}
88
89void led_set_kb(uint8_t usb_led) {
90 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
91
92//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
93 uint8_t leds = 0xF0;
94 if (usb_led & 1 << USB_LED_NUM_LOCK)
95 leds &= ~0x10;
96 if (usb_led & 1 << USB_LED_CAPS_LOCK)
97 leds &= ~0x80;
98 if (usb_led & 1 << USB_LED_SCROLL_LOCK)
99 leds &= ~0x20;
100 PORTD = (PORTD & 0x0F) | leds;
101
102 led_set_user(usb_led);
103
104}
105
106
diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h
index c04fbda15..66713731f 100644
--- a/keyboards/kinesis/kinesis.h
+++ b/keyboards/kinesis/kinesis.h
@@ -1,67 +1,23 @@
1#ifndef KINESIS_H 1#ifndef KINESIS_H
2#define KINESIS_H 2#define KINESIS_H
3 3
4#include "quantum.h" 4#ifdef SUBPROJECT_alvicstep
5 5 #include "alvicstep.h"
6 6#endif
7// The first section contains all of the arguements 7#ifdef SUBPROJECT_stapelberg
8// The second converts the arguments into a two-dimensional array 8 #include "stapelberg.h"
9#endif
9 10
10#define KEYMAP( \ 11#include "quantum.h"
11 k02,k22,k12,k01,k21,k11,k00,k20,k10, \
12 k80,k70,k60,k50,k40,k30, \
13 k81,k71,k61,k51,k41,k31, \
14 k82,k72,k62,k52,k42,k32, \
15 k83,k73,k63,k53,k43,k33, \
16 k74,k64,k54,k34, \
17 k36,k35, \
18 k55, \
19 k56,k46,k75, \
20 k03,k23,k13,k04,k24,k14,k05,k85,k84, \
21 k94,kA4,kB4,kD4,kE4,kF4, \
22 k95,kA5,kB5,kD5,kE5,kF5, \
23 k96,kA6,kB6,kD6,kE6,kF6, \
24 k97,kA7,kB7,kD7,kE7,kF7, \
25 k93,kB3,kD3,kE3, \
26 k47,k66, \
27 k67, \
28 k87,k76,k86 \
29) { \
30 { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
31 { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
32 { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
33 { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
34 { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
35 { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
36 { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
37 { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
38 { k80, k81, k82, k83, KC_NO ,KC_NO, k86, k87}, \
39 { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
40 { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
41 { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
42 { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, k84, k85}, \
43 { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
44 { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
45 { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
46}
47 12
48 13
49/* 4y0 A 4y1 B 4y2 4y3 D 4y4 E 4y5 F 4y6 G 4y7 H 5y0 I 5y1 J 5y2 K 5y3 L 5y4 M 5y5 N 5y6 O 5y7 P */ 14void all_led_off(void);
15void all_led_on(void);
16void num_lock_led_on(void);
17void caps_lock_led_on(void);
18void scroll_lock_led_on(void);
19void keypad_led_on(void);
50 20
51/*
52 0 1 2 3 4 5 6 7 8 9 A B C D E F
53 A B C D E F G H I J K L M N O P
54 4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
55 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
560 PB0 21 c0 f6 f8 f7 5 4 3 2 1 =+
571 PB1 22 c1 f3 f5 f4 t r e w q TAB
582 PB2 23 c2 ESC f2 f1 g f d s a CL
593 PB3 24 c3 f9 f11 f10 b v c x z LS UP DN [{ ]}
604 PB4 25 c4 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
615 PB5 26 c5 PB PGM KPD LA HM END y u i o p \
626 PB6 27 c6 LC DEL BS RC ENT SP h j k l ;: '"
637 PB7 28 c7 RA PU PD n m ,< .> /? RS
64*/
65 21
66 22
67#endif 23#endif
diff --git a/keyboards/kinesis/readme.md b/keyboards/kinesis/readme.md
index 79c86581e..2813ee273 100644
--- a/keyboards/kinesis/readme.md
+++ b/keyboards/kinesis/readme.md
@@ -1,42 +1,12 @@
1kinesis-advantage keyboard firmware 1# Firmware for the Kinesis advantage keyboard
2======================
3 2
4## Kinesis specific information 3There are at least two different ways to replace the controller in this keyboard.
5This is a port of https://github.com/alvicstep/tmk_keyboard,
6which is a fork of https://github.com/wjanssens/tmk_keyboard,
7which is based on work from https://github.com/chrisandreae/keyboard-firmware
8 4
9If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK. 5The Stapelberg folder contains the docs and configuration for using the custom controller created by Michael Stapelberg.
10I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
11 6
12Not yet implemented: 7The alvicstep folder contains docs and configuration for directly wiring a Teensy2++ to the existing controller board. This follows the pinouts described in https://github.com/alvicstep/tmk_keyboard, which is where the name comes from.
13- Kinesis EEProm reading or writing
14- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
15 8
9## Keymaps
10Both hardware solutions should work with the same keymaps
16 11
17 12
18## Quantum MK Firmware
19
20For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
21
22## Building
23
24Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
25
26Depending on which keymap you would like to use, you will have to compile slightly differently.
27
28### Default
29
30To build with the default keymap, simply run `make default`.
31
32### Other Keymaps
33
34Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
35
36To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
37
38```
39$ make [default|jack|<name>]
40```
41
42Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/kinesis/stapelberg/Makefile b/keyboards/kinesis/stapelberg/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif
diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h
new file mode 100644
index 000000000..0677e0ade
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/config.h
@@ -0,0 +1,50 @@
1#ifndef STAPELBERG_CONFIG_H
2#define STAPELBERG_CONFIG_H
3
4#include "../config.h"
5
6/* USB Device descriptor parameter */
7#define PRODUCT_ID 0x6060
8#define DEVICE_VER 0x0002
9
10/* key matrix size */
11#define MATRIX_ROWS 15
12#define MATRIX_COLS 7
13
14/*
15 * Keyboard Matrix Assignments
16 *
17 * Change this to how you wired your keyboard
18 * COLS: AVR pins used for columns, left to right
19 * ROWS: AVR pins used for rows, top to bottom
20 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
21 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
22 *
23*/
24#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C0, C1, C2, C3, C4, C5, C6 }
25#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6 }
26#define UNUSED_PINS
27
28/* COL2ROW or ROW2COL */
29#define DIODE_DIRECTION COL2ROW
30
31
32/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
33#define DEBOUNCING_DELAY 5
34
35/* don't know if this should be defined at the board or top level. Assuming board
36#define MOUSEKEY_DELAY 100
37#define MOUSEKEY_INTERVAL 20
38#define MOUSEKEY_MAX_SPEED 3
39#define MOUSEKEY_TIME_TO_MAX 10
40*/
41
42#define IGNORE_MOD_TAP_INTERRUPT
43
44/* key combination for magic key command */
45#define IS_COMMAND() ( \
46 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
47)
48
49
50#endif
diff --git a/keyboards/kinesis/stapelberg/images/controller_board.jpg b/keyboards/kinesis/stapelberg/images/controller_board.jpg
new file mode 100644
index 000000000..b18f76f7e
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/controller_board.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/images/exterior_reset.jpg b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg
new file mode 100644
index 000000000..6edda8130
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/images/teensy_detail.jpg b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg
new file mode 100644
index 000000000..12e6c1c8a
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/readme.md b/keyboards/kinesis/stapelberg/readme.md
new file mode 100644
index 000000000..b04a0bd49
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/readme.md
@@ -0,0 +1,55 @@
1# kinesis_stapelberg keyboard firmware
2
3This folder contains the firmware customization required to run QMK on the custom controller for the Kinesis Advantage created by Michael Stapelberg.
4It differs from the `alvicstep keyboard in that the existing QMK Kinesis Advantage project uses the existing controller board provided by Kinesis.
5
6The controller board hardware is described
7[here](http://michael.stapelberg.de/Artikel/kinesis_custom_controller)
8
9Mapping the pin assignments was done using the corresponding matrix description provided at this
10[link](https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec)
11
12This code makes no attempt to drive the four LEDs provided on the controller board.
13
14
15## Building the Hardware
16
17If you want to perform this customization, these parts may be helpful.
18
19| Function | Quantity | Vendor | Part Number |
20| ------------------------------------------------------ | -------- | ------- | ------------ |
21| 13 pin connector for function keys and finger keywells | 4 | Digi-Key | WM14526-ND |
22| 10 pin headers for thumb clusters | 4 | Digi-Key | 609-3250-ND |
23| 8 pin cable for thumb clusters | 2 | Digi-Key | SAM8928-ND |
24| Teensy++ 2.0 | 1 | Digi-Key | 1528-1056-ND |
25| 2 pin right angle header for reset | 1 | Digi-Key | 3M9467-ND |
26| Reset cables | 2 | Sparkfun | PRT-09140 |
27
28The board and connections are shown here
29![](images/controller_board.jpg)
30
31The Teensy mounting detail can be seen here.
32I used a socket for prototyping.
33![](images/teensy_detail.jpg)
34
35
36Since the proper mounting of the Teensy board places the reset button in a tight space, I added a 2-pin header to the reset and ground pins on the edge of the board.
37Shorting these two pins together will reset the board.
38I also put female to male header jumper cables on these so they could be accessed outside the enclosure.
39The exterior cables can be seen here.
40![](images/exterior_reset.jpg)
41
42
43## Keymaps
44
45### Default
46
47To build with the default keymap, run `make default` while in the
48`kinesis_stapelberg` working directory.
49
50### Dvorak
51
52This keymap contains a dvorak implementation as well as media and symbol layers.
53
54Run `make dvorak` while in the `kinesis_stapelberg` working directory.
55
diff --git a/keyboards/kinesis/stapelberg/rules.mk b/keyboards/kinesis/stapelberg/rules.mk
new file mode 100644
index 000000000..fb421a34f
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/rules.mk
@@ -0,0 +1,10 @@
1ifndef QUANTUM_DIR
2 include ../../../Makefile
3endif
4
5# just silently stop, since we need to upload with teensy uploader
6upload: build
7
8
9
10
diff --git a/keyboards/kinesis/stapelberg/stapelberg.c b/keyboards/kinesis/stapelberg/stapelberg.c
new file mode 100644
index 000000000..111db81fe
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/stapelberg.c
@@ -0,0 +1,28 @@
1#include "stapelberg.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/kinesis/stapelberg/stapelberg.h b/keyboards/kinesis/stapelberg/stapelberg.h
new file mode 100644
index 000000000..c90fc3d52
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/stapelberg.h
@@ -0,0 +1,72 @@
1#ifndef KINESIS_STAPELBERG_H
2#define KINESIS_STAPELBERG_H
3
4#include "quantum.h"
5
6// This a shortcut to help you visually see your layout.
7// The first section contains all of the arguments as on the physical keyboard
8// The second converts the arguments into the 2-D scanned array
9
10#define KEYMAP( \
11 kC0,kD0,kE0,kC1,kD1,kE1,kC2,kD2,kE2, \
12 k00,k10,k20,k30,k40,k50, \
13 k01,k11,k21,k31,k41,k51, \
14 k02,k12,k22,k32,k42,k52, \
15 k03,k13,k23,k33,k43,k53, \
16 k14,k24,k34,k54, \
17 k56,k55, \
18 k35, \
19 k36,k46,k25, \
20 kC3,kD3,kE3,kC4,kD4,kE4,kC5,kE5,kD5, \
21 k60,k70,k80,k90,kA0,kB0, \
22 k61,k71,k81,k91,kA1,kB1, \
23 k62,k72,k82,k92,kA2,kB2, \
24 k63,k73,k83,k93,kA3,kB3, \
25 k64,k84,k94,kA4, \
26 k96,k85, \
27 k86, \
28 k66,k75,k65 \
29) { \
30 { k00, k01, k02, k03, KC_NO, KC_NO, KC_NO }, \
31 { k10, k11, k12, k13, k14, KC_NO, KC_NO }, \
32 { k20, k21, k22, k23, k24, k25, KC_NO }, \
33 { k30, k31, k32, k33, k34, k35, k36 }, \
34 { k40, k41, k42, k43, KC_NO, KC_NO, k46 }, \
35 { k50, k51, k52, k53, k54, k55, k56 }, \
36 { k60, k61, k62, k63, k64, k65, k66 }, \
37 { k70, k71, k72, k73, KC_NO, k75, KC_NO }, \
38 { k80, k81, k82, k83, k84, k85, k86 }, \
39 { k90, k91, k92, k93, k94, KC_NO, k96 }, \
40 { kA0, kA1, kA2, kA3, kA4, KC_NO, KC_NO }, \
41 { kB0, kB1, kB2, kB3, KC_NO, KC_NO, KC_NO }, \
42 { kC0, kC1, kC2, kC3, kC4, kC5, KC_NO }, \
43 { kD0, kD1, kD2, kD3, kD4, kD5, KC_NO }, \
44 { kE0, kE1, kE2, kE3, kE4, kE5, KC_NO } \
45}
46
47/*
48This is the Stapelberg matrix as published at
49https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec
50Along with the pins for each row and column
51 PB0 PB1 PB2 PB3 PB4 PB5 PB6
52 kx0 kx1 kx2 kx3 kx4 kx5 kx6
53PD0 k0x Row: EQL TAB CAP LSH X2 -- --
54PD1 k1x Row: 1 Q A Z BQ -- --
55PD2 k2x Row: 2 W S X INS END --
56PD3 k3x Row: 3 E D C LFT HOM BAK
57PD4 k4x Row: 4 R F V -- -- DEL
58PD5 k5x Row: 5 T G B RT LAL LCT
59PD6 k6x Row: 6 Y H N UP SPC PGD
60PD7 k7x Row: 7 U J M -- RET --
61PB0 k8x Row: 8 I K COM DWN RCT PGU
62PB1 k9x Row: 9 O L PER LBR -- RAL
63PB2 kAx Row: 0 P SEM SLA RBR -- --
64PB3 kBx Row: MIN BSL APO RSH X1 -- --
65PB4 kCx Row: ESC F3 F6 F9 F12 PAU --
66PB5 kDx Row: F1 F4 F7 F10 PRT PRG --
67PB6 kEx Row: F2 F5 F8 F11 SLK KEY --
68*/
69
70
71
72#endif
diff --git a/keyboards/planck/keymaps/jeremy-dev/keymap.c b/keyboards/planck/keymaps/jeremy-dev/keymap.c
new file mode 100644
index 000000000..e7ed09b12
--- /dev/null
+++ b/keyboards/planck/keymaps/jeremy-dev/keymap.c
@@ -0,0 +1,180 @@
1// This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer.
2
3// Configuration options
4#define PREVENT_STUCK_MODIFIERS
5
6#include "planck.h"
7#include "action_layer.h"
8#include "eeconfig.h"
9
10// Each layer gets a name for readability, which is then used in the keymap matrix below.
11enum my_layers {
12 ALPH = 0,
13 NUMS,
14 CURS,
15 SYMB,
16 FKEY
17};
18
19// Each macro gets a name for readability.
20enum my_keycodes {
21 MY_ABVE = SAFE_RANGE,
22 MY_BELW,
23 MY_TERM,
24 MY_DEQL, // /=
25 MY_MEQL, // *=
26 MY_SEQL, // -=
27 MY_PEQL, // +=
28 MY_NEQL, // !=
29 MY_LTGT, // <>
30 MY_DPIP, // ||
31 MY_DAMP, // &&
32};
33
34const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35 [ALPH] = {
36 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P},
37 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
38 {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)},
39 {CTL_T(KC_TAB), OSL(FKEY), OSL(NUMS), OSL(SYMB), KC_SPC, ALT_T(KC_BSPC), GUI_T(KC_DELT), KC_ENT, OSL(SYMB), OSL(CURS), TG(CURS), CTL_T(KC_ESC)}
40 },
41 [NUMS] = {
42 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_COMM, KC_7, KC_8, KC_9, KC_SLSH},
43 {KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, KC_NO, KC_TRNS, KC_TRNS, KC_LPRN, KC_4, KC_5, KC_6, KC_ASTR},
44 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_RPRN, KC_1, KC_2, KC_3, KC_MINS},
45 {KC_NO, KC_NO, KC_TRNS, TG(NUMS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS}
46 },
47 [CURS] = {
48 {KC_MPLY, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
49 {KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_NO, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT},
50 {KC_VOLD, KC_NO, MY_ABVE, MY_TERM, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT},
51 {KC_MUTE, KC_NO, MY_BELW, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO}
52 },
53 [SYMB] = {
54 {MY_DEQL, MY_MEQL, MY_SEQL, MY_PEQL, MY_NEQL, KC_NO, KC_NO, MY_LTGT, KC_LABK, KC_RABK, KC_COLN, KC_DLR},
55 {KC_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_EQL, KC_NO, KC_PIPE, MY_DPIP, KC_GRV, KC_QUOT, KC_DQUO, KC_HASH},
56 {KC_BSLS, KC_CIRC, KC_PERC, KC_UNDS, KC_NO, KC_NO, KC_AMPR, MY_DAMP, KC_TILD, KC_AT, KC_EXLM, KC_QUES},
57 {KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO}
58 },
59 [FKEY] = {
60 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12},
61 {KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8},
62 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4},
63 {KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}
64 }
65};
66
67void press_key(uint16_t key) {
68 register_code(key);
69 unregister_code(key);
70}
71
72void press_two_keys(uint16_t key1, uint16_t key2) {
73 register_code(key1);
74 register_code(key2);
75 unregister_code(key2);
76 unregister_code(key1);
77}
78
79void press_three_keys(uint16_t key1, uint16_t key2, uint16_t key3) {
80 register_code(key1);
81 register_code(key2);
82 register_code(key3);
83 unregister_code(key3);
84 unregister_code(key2);
85 unregister_code(key1);
86}
87
88bool process_record_user(uint16_t keycode, keyrecord_t *record) {
89 switch (keycode) {
90 case MY_BELW:
91 if (record->event.pressed) {
92 press_two_keys(KC_LGUI, KC_RGHT);
93 press_key(KC_ENT);
94 }
95
96 return false;
97
98 case MY_ABVE:
99 if (record->event.pressed) {
100 press_two_keys(KC_LGUI, KC_LEFT);
101 press_key(KC_ENT);
102 press_key(KC_UP);
103 }
104
105 return false;
106
107 case MY_TERM:
108 if (record->event.pressed) {
109 press_three_keys(KC_LGUI, KC_LSFT, KC_ENT);
110 }
111
112 return false;
113
114 case MY_DEQL: // /=
115 if (record->event.pressed) {
116 press_key(KC_SLSH);
117 press_key(KC_EQL);
118 }
119
120 return false;
121
122 case MY_MEQL: // *=
123 if (record->event.pressed) {
124 press_two_keys(KC_LSFT, KC_ASTR);
125 press_key(KC_EQL);
126 }
127
128 return false;
129
130 case MY_SEQL: // -=
131 if (record->event.pressed) {
132 press_key(KC_MINS);
133 press_key(KC_EQL);
134 }
135
136 return false;
137
138 case MY_PEQL: // +=
139 if (record->event.pressed) {
140 press_two_keys(KC_LSFT, KC_PLUS);
141 press_key(KC_EQL);
142 }
143
144 return false;
145
146 case MY_NEQL: // !=
147 if (record->event.pressed) {
148 press_two_keys(KC_LSFT, KC_EXLM);
149 press_key(KC_EQL);
150 }
151
152 return false;
153
154 case MY_LTGT: // <>
155 if (record->event.pressed) {
156 press_two_keys(KC_LSFT, KC_LABK);
157 press_two_keys(KC_LSFT, KC_RABK);
158 }
159
160 return false;
161
162 case MY_DPIP: // ||
163 if (record->event.pressed) {
164 press_two_keys(KC_LSFT, KC_PIPE);
165 press_two_keys(KC_LSFT, KC_PIPE);
166 }
167
168 return false;
169
170 case MY_DAMP: // &&
171 if (record->event.pressed) {
172 press_two_keys(KC_LSFT, KC_AMPR);
173 press_two_keys(KC_LSFT, KC_AMPR);
174 }
175
176 return false;
177 }
178
179 return true;
180}
diff --git a/keyboards/planck/keymaps/jeremy-dev/readme.md b/keyboards/planck/keymaps/jeremy-dev/readme.md
new file mode 100644
index 000000000..b6a402d69
--- /dev/null
+++ b/keyboards/planck/keymaps/jeremy-dev/readme.md
@@ -0,0 +1,85 @@
1Jeremy Cowgar's Planck Keymap
2=============================
3
4I am a programmer by trade and suffer from the beginning stages of RSI. As a programmer, I use letters, symbols and cursor navigation most often. To prevent strange finger gymnastics, I wrote a script to rank which non-letter characters occurred in my primary source projects most often and then placed these characters in the easiest to reach locations, within reason and for me. I made heavy use of momentary layer toggling.
5
6Layers
7------
8
9The key mapping is made up of 5 layers: Letters, Symbols, Navigation, Numbers, and Function Keys.
10
11The layout can be viewed visually at:
12
13http://www.keyboard-layout-editor.com/#/gists/319474e5e2d199e583371ed1d2aec316
14
15* Purple buttons are dual function keys.
16* Green buttons are layer momentary toggle keys.
17* Red buttons are layer persistent toggle keys.
18
19The keys have multiple symbols:
20
21* Upper left: standard layer, the letter layer
22* Upper right: function layer
23* Lower left: navigation layer
24* Lower right: symbol layer
25
26The symbols in the layout editor are not entirely clear.
27
28The Z and ? keys double as shift keys. Hold for a shift, tap for a Z or ?
29
30The bottom row from left to right:
31
32* Tab when pressed, Control when held. It also is the volume mute key when in the "Navigation" layer
33* Function layer momentary toggle
34* Number layer momentary toggle
35* Symbol layer momentary toggle. When in the "Number" layer, this key also makes the "Number" layer sticky for using the 10 key for quite a bit of entry
36* Space
37* Backspace when tapped, Option when held
38* Delete when tapped, Command when held
39* Return
40* Symbol layer momentary toggle. When in the "Number" layer, key also is the zero key.
41* Navigation layer momentary toggle
42* Navigation layer toggle. This was included for when you are browsing a website, document or otherwise wish to stay in navigation mode. When in the "Number" layer, the key is the = symbol
43* Escape when pressed, Control when held. When in the "Number" layer, the key is the + symbol
44
45General Notes
46-------------
47
48The letter layer is separated by 2 center rows of keys. This spreads the hands out a little further which helps not twist the wrists as much. The 2 center rows are [], (), [], and Ctrl and Alt keys.
49
50The symbol layer keys are accessed by the thumbs. They are the closest to the thumbs, instead of the number toggle, because in my code I found I used symbols much more often than numbers. There are two symbol layer keys because the symbols spread across the right and left half of the keyboard. Thus, some symbols are easier hit with the left hand modifier or right hand modifier.
51
52The number layer key is only accessible by the left thumb because all of the number keys are on the right side of the keyboard. When in the number layer, you can press the key to the right to make that layer sticky when you are going to do a lot of number entry.
53
54The function layer key is only accessible by the left thumb because all of the function keys are on the right side of the keyboard.
55
56The navigation layer key is only accessible by the right thumb because all of the navigation keys are on the left side of the keyboard. You can press the key to the right of the navigation layer to make the navigation layer sticky when you are doing a lot of navigation, reading a web page for example.
57
58When using the number or navigation layers, the same hand that accesses the momentary layer toggle key also has the 4 primary modifiers under their home row.
59
60* Pointer finger is control
61* Middle finger is option
62* Ring finger is command
63* Pinky finger is shift
64
65This is so you can easily press Cmd+Shift+F4 or when navigating, select text or words of text by pressing Shift+Control, for example.
66
67Some keys are duplicated. For example, () are available in easy to reach locations while in the Number layer because they are often used in math.
68
69The symbol layer has additional helpers for programming including a single keys that enter /=, \*=, -=, +=, !=, <>, ||, and &&. It also includes three special Return keys on the left:
70
71* Up CR which moves the cursor up, to the end of the line and then presses CR
72* Down CR which moves the cursor to the end of the line and then presses CR
73* Right ; which moves the cursor to the end of the line and presses ; for C styled languages, such as JavaScript which is a primary language I use
74
75Word of Warning
76---------------
77
78I have been using the keymap for some time now and believe it to be a good keymap. There are a few things through the week that I wonder if it would have been better if this key were moved to that location.
79
80This keymap may change for further optimization.
81
82Please Give Feedback!
83---------------------
84
85I am very interested in your feedback. Send me a message here on GitHub, r/jcowgar or @jcowgar.
diff --git a/keyboards/planck/keymaps/priyadi/Makefile b/keyboards/planck/keymaps/priyadi/Makefile
index d9d4f3d1d..336608b8c 100644
--- a/keyboards/planck/keymaps/priyadi/Makefile
+++ b/keyboards/planck/keymaps/priyadi/Makefile
@@ -10,7 +10,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls 12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = yes # Audio output on port C6 13AUDIO_ENABLE = yes # Audio output on port C6
14UNICODE_ENABLE = no # Unicode 14UNICODE_ENABLE = no # Unicode
15UNICODEMAP_ENABLE = yes # Unicode map 15UNICODEMAP_ENABLE = yes # Unicode map
16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
index f0dafebf3..2e979221a 100644
--- a/keyboards/planck/keymaps/priyadi/keymap.c
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -11,6 +11,8 @@
11#include "process_unicode.h" 11#include "process_unicode.h"
12#include "quantum.h" 12#include "quantum.h"
13 13
14// #define TOLELOT_ENABLE
15
14extern keymap_config_t keymap_config; 16extern keymap_config_t keymap_config;
15 17
16enum layers { 18enum layers {
@@ -21,6 +23,8 @@ enum layers {
21 _NUM, 23 _NUM,
22 _FUNC, 24 _FUNC,
23 _EMOJI, 25 _EMOJI,
26 _GREEKU,
27 _GREEKL,
24 _GUI, 28 _GUI,
25}; 29};
26 30
@@ -36,6 +40,7 @@ enum planck_keycodes {
36 FUNC, 40 FUNC,
37 EMOJI, 41 EMOJI,
38 GUI, 42 GUI,
43 GREEK,
39 44
40 // os switchers 45 // os switchers
41 LINUX, 46 LINUX,
@@ -98,6 +103,59 @@ enum unicode_name {
98 SUN, // sun 103 SUN, // sun
99 MOON, // moon 104 MOON, // moon
100 SKULL, // skull 105 SKULL, // skull
106
107 // greek letters
108 UALPH,
109 UBETA,
110 UGAMM,
111 UDELT,
112 UEPSI,
113 UZETA,
114 UETA,
115 UTHET,
116 UIOTA,
117 UKAPP,
118 ULAMB,
119 UMU,
120 UNU,
121 UXI,
122 UOMIC,
123 UPI,
124 URHO,
125 USIGM,
126 UTAU,
127 UUPSI,
128 UPHI,
129 UCHI,
130 UPSI,
131 UOMEG,
132
133 LALPH,
134 LBETA,
135 LGAMM,
136 LDELT,
137 LEPSI,
138 LZETA,
139 LETA,
140 LTHET,
141 LIOTA,
142 LKAPP,
143 LLAMB,
144 LMU,
145 LNU,
146 LXI,
147 LOMIC,
148 LPI,
149 LRHO,
150 LSIGM,
151 LTAU,
152 LUPSI,
153 LPHI,
154 LCHI,
155 LPSI,
156 LOMEG,
157
158 FSIGM,
101}; 159};
102 160
103const uint32_t PROGMEM unicode_map[] = { 161const uint32_t PROGMEM unicode_map[] = {
@@ -148,6 +206,57 @@ const uint32_t PROGMEM unicode_map[] = {
148 [SUN] = 0x2600, 206 [SUN] = 0x2600,
149 [MOON] = 0x1F314, 207 [MOON] = 0x1F314,
150 [SKULL] = 0x1F480, 208 [SKULL] = 0x1F480,
209
210 // greek letters
211 [UALPH] = 0x0391,
212 [UBETA] = 0x0392,
213 [UGAMM] = 0x0393,
214 [UDELT] = 0x0394,
215 [UEPSI] = 0x0395,
216 [UZETA] = 0x0396,
217 [UETA] = 0x0397,
218 [UTHET] = 0x0398,
219 [UIOTA] = 0x0399,
220 [UKAPP] = 0x039A,
221 [ULAMB] = 0x039B,
222 [UMU] = 0x039C,
223 [UNU] = 0x039D,
224 [UXI] = 0x039E,
225 [UOMIC] = 0x039F,
226 [UPI] = 0x03A0,
227 [URHO] = 0x03A1,
228 [USIGM] = 0x03A3,
229 [UTAU] = 0x03A4,
230 [UUPSI] = 0x03A5,
231 [UPHI] = 0x03A6,
232 [UCHI] = 0x03A7,
233 [UPSI] = 0x03A8,
234 [UOMEG] = 0x03A9,
235 [LALPH] = 0x03B1,
236 [LBETA] = 0x03B2,
237 [LGAMM] = 0x03B3,
238 [LDELT] = 0x03B4,
239 [LEPSI] = 0x03B5,
240 [LZETA] = 0x03B6,
241 [LETA] = 0x03B7,
242 [LTHET] = 0x03B8,
243 [LIOTA] = 0x03B9,
244 [LKAPP] = 0x03BA,
245 [LLAMB] = 0x03BB,
246 [LMU] = 0x03BC,
247 [LNU] = 0x03BD,
248 [LXI] = 0x03BE,
249 [LOMIC] = 0x03BF,
250 [LPI] = 0x03C0,
251 [LRHO] = 0x03C1,
252 [LSIGM] = 0x03C3,
253 [LTAU] = 0x03C4,
254 [LUPSI] = 0x03C5,
255 [LPHI] = 0x03C6,
256 [LCHI] = 0x03C7,
257 [LPSI] = 0x03C8,
258 [LOMEG] = 0x03C9,
259 [FSIGM] = 0x03C2,
151}; 260};
152 261
153 262
@@ -174,14 +283,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
174 * |------+------+------+------+------+------|------+------+------+------+------+------| 283 * |------+------+------+------+------+------|------+------+------+------+------+------|
175 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | 284 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
176 * |------+------+------+------+------+------+------+------+------+------+------+------| 285 * |------+------+------+------+------+------+------+------+------+------+------+------|
177 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 286 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |Greek |AltGr | Ctrl |
178 * `-----------------------------------------------------------------------------------' 287 * `-----------------------------------------------------------------------------------'
179 */ 288 */
180[_QWERTY] = { 289[_QWERTY] = {
181 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 290 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
182 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT }, 291 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT },
183 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, 292 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
184 {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL} 293 {KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, GREEK, KC_RALT, KC_RCTL}
185}, 294},
186 295
187/* Colemak 296/* Colemak
@@ -220,6 +329,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
220 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 329 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
221}, 330},
222 331
332/* Uppercase Greek
333 * ,-----------------------------------------------------------------------------------.
334 * | | | | | | | | | | | | |
335 * |------+------+------+------+------+-------------+------+------+------+------+------|
336 * | | | | | | | | | | | | |
337 * |------+------+------+------+------+------+------+------+------+------+------+------|
338 * | | | | | | | | | | | | |
339 * |------+------+------+------+------+------+------+------+------+------+------+------|
340 * | | | | | | | | | | | | |
341 * `-----------------------------------------------------------------------------------'
342 */
343[_GREEKU] = {
344 {_______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______},
345 {_______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), _______, _______},
346 {_______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), _______, _______, _______, _______},
347 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
348},
349
350/* Lowercase Greek
351 * ,-----------------------------------------------------------------------------------.
352 * | | | | | | | | | | | | |
353 * |------+------+------+------+------+-------------+------+------+------+------+------|
354 * | | | | | | | | | | | | |
355 * |------+------+------+------+------+------+------+------+------+------+------+------|
356 * | | | | | | | | | | | | |
357 * |------+------+------+------+------+------+------+------+------+------+------+------|
358 * | | | | | | | | | | | | |
359 * `-----------------------------------------------------------------------------------'
360 */
361[_GREEKL] = {
362 {_______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______},
363 {_______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), _______, _______},
364 {_______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), _______, _______, _______, _______},
365 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
366},
367
223/* Punc 368/* Punc
224 * ,-----------------------------------------------------------------------------------. 369 * ,-----------------------------------------------------------------------------------.
225 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` | 370 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
@@ -323,6 +468,7 @@ float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND);
323float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND); 468float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND);
324float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2)); 469float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2));
325float tone_release[][2] = SONG(MUSICAL_NOTE(_A3, 2)); 470float tone_release[][2] = SONG(MUSICAL_NOTE(_A3, 2));
471float tone_tolelot[][2] = SONG(Q__NOTE(_E5), Q__NOTE(_C5), Q__NOTE(_D5));
326#endif 472#endif
327 473
328void persistant_default_layer_set(uint16_t default_layer) { 474void persistant_default_layer_set(uint16_t default_layer) {
@@ -334,19 +480,61 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
334 // faux clicky 480 // faux clicky
335 // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); 481 // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0);
336 #ifdef AUDIO_ENABLE 482 #ifdef AUDIO_ENABLE
483 #ifdef TOLELOT_ENABLE
484 if (record->event.pressed) {
485 PLAY_NOTE_ARRAY(tone_tolelot, false, 0);
486 }
487 #else
337 if (record->event.pressed) { 488 if (record->event.pressed) {
338 PLAY_NOTE_ARRAY(tone_click, false, 0); 489 PLAY_NOTE_ARRAY(tone_click, false, 0);
339 } else { 490 } else {
340 PLAY_NOTE_ARRAY(tone_release, false, 0); 491 PLAY_NOTE_ARRAY(tone_release, false, 0);
341 } 492 }
342 #endif 493 #endif
494 #endif
495
496 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT);
497 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT);
343 498
344 switch (keycode) { 499 switch (keycode) {
500 // Greek layer handling
501 case GREEK:
502 if (record->event.pressed) {
503 if (lshifted || rshifted) {
504 layer_on(_GREEKU);
505 layer_off(_GREEKL);
506 } else {
507 layer_on(_GREEKL);
508 layer_off(_GREEKU);
509 }
510 } else {
511 layer_off(_GREEKU);
512 layer_off(_GREEKL);
513 }
514 return false;
515 break;
516
517 case KC_LSFT:
518 case KC_RSFT:
519 ;
520 uint8_t layer = biton32(layer_state);
521 if (layer == _GREEKU || layer == _GREEKL) {
522 if (record->event.pressed) {
523 layer_on(_GREEKU);
524 layer_off(_GREEKL);
525 } else {
526 if (lshifted ^ rshifted) { // if only one shift is pressed
527 layer_on(_GREEKL);
528 layer_off(_GREEKU);
529 }
530 }
531 }
532 return true;
533 break;
534
345 // QWERTZ style comma and dot: semicolon and colon when shifted 535 // QWERTZ style comma and dot: semicolon and colon when shifted
346 case KC_COMM: 536 case KC_COMM:
347 if (record->event.pressed) { 537 if (record->event.pressed) {
348 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT);
349 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT);
350 if (lshifted || rshifted) { 538 if (lshifted || rshifted) {
351 if (lshifted) unregister_code(KC_LSFT); 539 if (lshifted) unregister_code(KC_LSFT);
352 if (rshifted) unregister_code(KC_RSFT); 540 if (rshifted) unregister_code(KC_RSFT);
diff --git a/keyboards/planck/keymaps/vifon/Makefile b/keyboards/planck/keymaps/vifon/Makefile
index 53660a2e7..15a7b736f 100644
--- a/keyboards/planck/keymaps/vifon/Makefile
+++ b/keyboards/planck/keymaps/vifon/Makefile
@@ -1,6 +1,3 @@
1# Please remove if no longer applicable
2$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
3$(warning Please disable some options in the Makefile to resolve)
4 1
5 2
6# Build Options 3# Build Options
@@ -10,7 +7,7 @@ $(warning Please disable some options in the Makefile to resolve)
10BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) 7BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
11MOUSEKEY_ENABLE = yes # Mouse keys(+4700) 8MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
12EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 9EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
13CONSOLE_ENABLE = yes # Console for debug(+400) 10CONSOLE_ENABLE = no # Console for debug(+400)
14COMMAND_ENABLE = yes # Commands for debug and configuration 11COMMAND_ENABLE = yes # Commands for debug and configuration
15NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 12NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
16BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 13BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/planck/keymaps/vifon/config.h b/keyboards/planck/keymaps/vifon/config.h
index 9cb0634fb..a08b37cbe 100644
--- a/keyboards/planck/keymaps/vifon/config.h
+++ b/keyboards/planck/keymaps/vifon/config.h
@@ -81,6 +81,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
81/* prevent the modifiers from being stuck, sacrificing some memory */ 81/* prevent the modifiers from being stuck, sacrificing some memory */
82#define PREVENT_STUCK_MODIFIERS 82#define PREVENT_STUCK_MODIFIERS
83 83
84/* A larger buffer for the dynamic macros as this keymap is not taking
85 * up that much memory.
86 */
87#define DYNAMIC_MACRO_SIZE 256
88
84#ifdef SUBPROJECT_rev3 89#ifdef SUBPROJECT_rev3
85 #include "rev3/config.h" 90 #include "rev3/config.h"
86#endif 91#endif
diff --git a/keyboards/planck/keymaps/vifon/keymap.c b/keyboards/planck/keymaps/vifon/keymap.c
index 80c4a516c..ee0c0ac36 100644
--- a/keyboards/planck/keymaps/vifon/keymap.c
+++ b/keyboards/planck/keymaps/vifon/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
62[_PPG] = { /* Pure Pro: Gaming */ 62[_PPG] = { /* Pure Pro: Gaming */
63 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 63 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
65 {_______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_RS), _______, _______}, 65 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
66 {_______, _______, XXXXXXX, _______, KM_RS , _______, _______, KM_LW , _______, _______, _______, _______}, 66 {_______, _______, XXXXXXX, _______, KM_RS , _______, _______, KM_LW , _______, _______, _______, _______},
67}, 67},
68[_NM] = { /* Numeric */ 68[_NM] = { /* Numeric */
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
90 {_______, _______, KC_LGUI, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______} 90 {_______, _______, KC_LGUI, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______}
91}, 91},
92[_DYN]= { /* special */ 92[_DYN]= { /* special */
93 {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_PAUS}, 93 {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, KC_APP, KC_INS, _______, KC_PSCR, KC_PAUS},
94 {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, KC_CAPS, KC_SLCK, KC_NLCK}, 94 {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, KC_CAPS, KC_SLCK, KC_NLCK},
95 {KM_SHLK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 95 {KM_SHLK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
96 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 96 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
diff --git a/keyboards/tv44/keymaps/default/keymap.c b/keyboards/tv44/keymaps/default/keymap.c
index f3f989f2d..b9fe33a7c 100644
--- a/keyboards/tv44/keymaps/default/keymap.c
+++ b/keyboards/tv44/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 [_QW] = { /* Qwerty */ 30 [_QW] = { /* Qwerty */
31 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, 31 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
32 {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, 32 {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) },
33 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, 33 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) },
34 {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } 34 {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
35 }, 35 },
36 [_DV] = { /* Dvorak */ 36 [_DV] = { /* Dvorak */
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index cd3a610b4..a30e93ae3 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -1,6 +1,8 @@
1#include "process_unicode.h" 1#include "process_unicode.h"
2#include "action_util.h"
2 3
3static uint8_t input_mode; 4static uint8_t input_mode;
5uint8_t mods;
4 6
5__attribute__((weak)) 7__attribute__((weak))
6uint16_t hex_to_keycode(uint8_t hex) 8uint16_t hex_to_keycode(uint8_t hex)
@@ -25,6 +27,19 @@ uint8_t get_unicode_input_mode(void) {
25 27
26__attribute__((weak)) 28__attribute__((weak))
27void unicode_input_start (void) { 29void unicode_input_start (void) {
30 // save current mods
31 mods = keyboard_report->mods;
32
33 // unregister all mods to start from clean state
34 if (mods & MOD_BIT(KC_LSFT)) unregister_code(KC_LSFT);
35 if (mods & MOD_BIT(KC_RSFT)) unregister_code(KC_RSFT);
36 if (mods & MOD_BIT(KC_LCTL)) unregister_code(KC_LCTL);
37 if (mods & MOD_BIT(KC_RCTL)) unregister_code(KC_RCTL);
38 if (mods & MOD_BIT(KC_LALT)) unregister_code(KC_LALT);
39 if (mods & MOD_BIT(KC_RALT)) unregister_code(KC_RALT);
40 if (mods & MOD_BIT(KC_LGUI)) unregister_code(KC_LGUI);
41 if (mods & MOD_BIT(KC_RGUI)) unregister_code(KC_RGUI);
42
28 switch(input_mode) { 43 switch(input_mode) {
29 case UC_OSX: 44 case UC_OSX:
30 register_code(KC_LALT); 45 register_code(KC_LALT);
@@ -54,15 +69,25 @@ void unicode_input_start (void) {
54__attribute__((weak)) 69__attribute__((weak))
55void unicode_input_finish (void) { 70void unicode_input_finish (void) {
56 switch(input_mode) { 71 switch(input_mode) {
57 case UC_OSX: 72 case UC_OSX:
58 case UC_WIN: 73 case UC_WIN:
59 unregister_code(KC_LALT); 74 unregister_code(KC_LALT);
60 break; 75 break;
61 case UC_LNX: 76 case UC_LNX:
62 register_code(KC_SPC); 77 register_code(KC_SPC);
63 unregister_code(KC_SPC); 78 unregister_code(KC_SPC);
64 break; 79 break;
65 } 80 }
81
82 // reregister previously set mods
83 if (mods & MOD_BIT(KC_LSFT)) register_code(KC_LSFT);
84 if (mods & MOD_BIT(KC_RSFT)) register_code(KC_RSFT);
85 if (mods & MOD_BIT(KC_LCTL)) register_code(KC_LCTL);
86 if (mods & MOD_BIT(KC_RCTL)) register_code(KC_RCTL);
87 if (mods & MOD_BIT(KC_LALT)) register_code(KC_LALT);
88 if (mods & MOD_BIT(KC_RALT)) register_code(KC_RALT);
89 if (mods & MOD_BIT(KC_LGUI)) register_code(KC_LGUI);
90 if (mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI);
66} 91}
67 92
68void register_hex(uint16_t hex) { 93void register_hex(uint16_t hex) {
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 5cd3c8e78..4853655f9 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -159,6 +159,8 @@ enum quantum_keycodes {
159#define MEH(kc) (kc | QK_LCTL | QK_LSFT | QK_LALT) 159#define MEH(kc) (kc | QK_LCTL | QK_LSFT | QK_LALT)
160#define LCAG(kc) (kc | QK_LCTL | QK_LALT | QK_LGUI) 160#define LCAG(kc) (kc | QK_LCTL | QK_LALT | QK_LGUI)
161#define ALTG(kc) (kc | QK_RCTL | QK_RALT) 161#define ALTG(kc) (kc | QK_RCTL | QK_RALT)
162#define SCMD(kc) (kc | QK_LGUI | QK_LSFT)
163#define SWIN(kc) SCMD(kc)
162 164
163#define MOD_HYPR 0xf 165#define MOD_HYPR 0xf
164#define MOD_MEH 0x7 166#define MOD_MEH 0x7
@@ -293,6 +295,8 @@ enum quantum_keycodes {
293#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl 295#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
294#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui 296#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui
295#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ 297#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
298#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc)
299#define SWIN_T(kc) SCMD_T(kc)
296 300
297// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap 301// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
298#define KC_HYPR HYPR(KC_NO) 302#define KC_HYPR HYPR(KC_NO)
diff --git a/readme.md b/readme.md
index 90584cabc..d33c3ad01 100644
--- a/readme.md
+++ b/readme.md
@@ -31,7 +31,7 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j
31 31
32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest: 32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest:
33 33
34* [**The Wiki**](https://github.com/jackhumbert/qmk_firmware/wiki) - the entirity of the readme has been moved here 34* [**The Wiki**](https://github.com/jackhumbert/qmk_firmware/wiki) - the entirety of the readme has been moved here
35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. 35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on.
36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places: 36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places:
37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. 37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes.