aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-03-07 01:54:50 +1100
committerJack Humbert <jack.humb@gmail.com>2018-03-07 17:00:21 -0500
commitaadb386de6e81b97f9fa1e85b62b5a925cbc28c0 (patch)
tree549af5ab01ea5408dbe9ac2b0ba6d5637aba5a05
parentb688c2c0b3a533cedd6c909f95d6505e667a0443 (diff)
downloadqmk_firmware-aadb386de6e81b97f9fa1e85b62b5a925cbc28c0.tar.gz
qmk_firmware-aadb386de6e81b97f9fa1e85b62b5a925cbc28c0.zip
qwerty_code_friendly: various updates
- Remove action_get_macro in favor of process_record_user - Support user defined words on layer 3 (pass via flags) - Support backspace & del on left thumb cluster. (optionally override top right backspace).
-rw-r--r--layouts/community/ergodox/qwerty_code_friendly/keymap.c546
-rw-r--r--layouts/community/ergodox/qwerty_code_friendly/readme.md147
2 files changed, 422 insertions, 271 deletions
diff --git a/layouts/community/ergodox/qwerty_code_friendly/keymap.c b/layouts/community/ergodox/qwerty_code_friendly/keymap.c
index bd3d550a5..788c37d6e 100644
--- a/layouts/community/ergodox/qwerty_code_friendly/keymap.c
+++ b/layouts/community/ergodox/qwerty_code_friendly/keymap.c
@@ -1,3 +1,5 @@
1/* -*- Mode:C; c-basic-offset:2; tab-width:2; indent-tabs-mode:nil; evil-indent-convert-tabs:t; -*- */
2
1#include QMK_KEYBOARD_H 3#include QMK_KEYBOARD_H
2#include "debug.h" 4#include "debug.h"
3#include "action_layer.h" 5#include "action_layer.h"
@@ -7,51 +9,153 @@
7 * See `readme.md` for notes on each define. 9 * See `readme.md` for notes on each define.
8 */ 10 */
9 11
10// Personal preference (enable by passing EXTRAFLAGS=... to make). 12/* Personal preference (enable by passing EXTRAFLAGS=... to make). */
11// #define CFQ_USE_MOMENTARY_LAYER_KEYS 13/* #define CFQ_USE_MOMENTARY_LAYER_KEYS */
12// #define CFQ_USE_EXPEREMENTAL_LAYER
13 14
14// keep enabled for now
15#define CFQ_USE_DYNAMIC_MACRO 15#define CFQ_USE_DYNAMIC_MACRO
16 16
17#if !defined(CFQ_USER_KEY0)
18# define CFQ_USER_KEY0 KC_BSPC
19#endif
17#if !defined(CFQ_USER_KEY1) 20#if !defined(CFQ_USER_KEY1)
18# define CFQ_USER_KEY1 CFQ_KC_FN1 21# define CFQ_USER_KEY1 CFQ_KC_FN1
19#endif 22#endif
20#if !defined(CFQ_USER_KEY2) 23#if !defined(CFQ_USER_KEY2)
21# define CFQ_USER_KEY2 KC_INS 24# define CFQ_USER_KEY2 KC_LT
22#endif 25#endif
23#if !defined(CFQ_USER_KEY3) 26#if !defined(CFQ_USER_KEY3)
24# ifdef CFQ_USE_EXPEREMENTAL_LAYER 27# define CFQ_USER_KEY3 KC_GT
25# define CFQ_USER_KEY3 CFQ_KC_FN3
26# else
27# define CFQ_USER_KEY3 KC_CAPS
28# endif
29#endif 28#endif
30#if !defined(CFQ_USER_KEY4) 29#if !defined(CFQ_USER_KEY4)
31# define CFQ_USER_KEY4 KC_SPC 30# define CFQ_USER_KEY4 KC_BSPC
32#endif 31#endif
33#if !defined(CFQ_USER_KEY5) 32#if !defined(CFQ_USER_KEY5)
34# define CFQ_USER_KEY5 KC_ENT 33# define CFQ_USER_KEY5 KC_DELT
35#endif 34#endif
36#if !defined(CFQ_USER_KEY6) 35#if !defined(CFQ_USER_KEY6)
37# define CFQ_USER_KEY6 CFQ_KC_FN2 36# define CFQ_USER_KEY6 KC_CAPS
38#endif 37#endif
39#if !defined(CFQ_USER_KEY7) 38#if !defined(CFQ_USER_KEY7)
40# define CFQ_USER_KEY7 CFQ_KC_FN1 39# define CFQ_USER_KEY7 CFQ_KC_FN3
41#endif 40#endif
42 41
43#define BASE 0 // default layer 42#ifndef CFQ_WORD_A
44#define SYMB 1 // symbols 43#define CFQ_WORD_A ""
45#define MDIA 2 // media keys 44#endif
46#ifdef CFQ_USE_EXPEREMENTAL_LAYER 45#ifndef CFQ_WORD_B
47# define EXPR 3 // experimental keys 46#define CFQ_WORD_B ""
47#endif
48#ifndef CFQ_WORD_C
49#define CFQ_WORD_C ""
50#endif
51#ifndef CFQ_WORD_D
52#define CFQ_WORD_D ""
53#endif
54#ifndef CFQ_WORD_E
55#define CFQ_WORD_E ""
56#endif
57#ifndef CFQ_WORD_F
58#define CFQ_WORD_F ""
59#endif
60#ifndef CFQ_WORD_G
61#define CFQ_WORD_G ""
62#endif
63#ifndef CFQ_WORD_H
64#define CFQ_WORD_H ""
65#endif
66#ifndef CFQ_WORD_I
67#define CFQ_WORD_I ""
68#endif
69#ifndef CFQ_WORD_J
70#define CFQ_WORD_J ""
71#endif
72#ifndef CFQ_WORD_K
73#define CFQ_WORD_K ""
74#endif
75#ifndef CFQ_WORD_L
76#define CFQ_WORD_L ""
77#endif
78#ifndef CFQ_WORD_M
79#define CFQ_WORD_M ""
80#endif
81#ifndef CFQ_WORD_N
82#define CFQ_WORD_N ""
83#endif
84#ifndef CFQ_WORD_O
85#define CFQ_WORD_O ""
86#endif
87#ifndef CFQ_WORD_P
88#define CFQ_WORD_P ""
89#endif
90#ifndef CFQ_WORD_Q
91#define CFQ_WORD_Q ""
92#endif
93#ifndef CFQ_WORD_R
94#define CFQ_WORD_R ""
95#endif
96#ifndef CFQ_WORD_S
97#define CFQ_WORD_S ""
98#endif
99#ifndef CFQ_WORD_T
100#define CFQ_WORD_T ""
101#endif
102#ifndef CFQ_WORD_U
103#define CFQ_WORD_U ""
104#endif
105#ifndef CFQ_WORD_V
106#define CFQ_WORD_V ""
107#endif
108#ifndef CFQ_WORD_W
109#define CFQ_WORD_W ""
110#endif
111#ifndef CFQ_WORD_X
112#define CFQ_WORD_X ""
113#endif
114#ifndef CFQ_WORD_Y
115#define CFQ_WORD_Y ""
116#endif
117#ifndef CFQ_WORD_Z
118#define CFQ_WORD_Z ""
48#endif 119#endif
49 120
121static const char *cfq_word_lut[26] = {
122 CFQ_WORD_A, CFQ_WORD_B, CFQ_WORD_C, CFQ_WORD_D, CFQ_WORD_E, CFQ_WORD_F,
123 CFQ_WORD_G, CFQ_WORD_H, CFQ_WORD_I, CFQ_WORD_J, CFQ_WORD_K, CFQ_WORD_L,
124 CFQ_WORD_M, CFQ_WORD_N, CFQ_WORD_O, CFQ_WORD_P, CFQ_WORD_Q, CFQ_WORD_R,
125 CFQ_WORD_S, CFQ_WORD_T, CFQ_WORD_U, CFQ_WORD_V, CFQ_WORD_W, CFQ_WORD_X,
126 CFQ_WORD_Y, CFQ_WORD_Z,
127};
128
129#define BASE 0 /* default layer */
130#define SYMB 1 /* symbols */
131#define MDIA 2 /* media keys */
132#define WORD 3 /* experimental keys */
133
50enum custom_keycodes { 134enum custom_keycodes {
51 PLACEHOLDER = SAFE_RANGE, // can always be here 135 PLACEHOLDER = SAFE_RANGE, /* can always be here */
52 EPRM,
53 VRSN,
54 RGB_SLD, 136 RGB_SLD,
137
138 M_BRACKET_IN_CBR,
139 M_BRACKET_IN_PRN,
140 M_BRACKET_IN_BRC,
141 M_BRACKET_IN_ANG,
142 M_BRACKET_OUT_CBR,
143 M_BRACKET_OUT_PRN,
144 M_BRACKET_OUT_BRC,
145 M_BRACKET_OUT_ANG,
146 M_ARROW_RMINUS,
147 M_ARROW_LMINUS,
148 M_ARROW_REQL,
149 M_ARROW_LEQL,
150
151 /* allow user defined words for each character:
152 * use CFQ_WORD_[A-Z] defines. */
153 M_WORD_A, M_WORD_B, M_WORD_C, M_WORD_D, M_WORD_E, M_WORD_F,
154 M_WORD_G, M_WORD_H, M_WORD_I, M_WORD_J, M_WORD_K, M_WORD_L,
155 M_WORD_M, M_WORD_N, M_WORD_O, M_WORD_P, M_WORD_Q, M_WORD_R,
156 M_WORD_S, M_WORD_T, M_WORD_U, M_WORD_V, M_WORD_W, M_WORD_X,
157 M_WORD_Y, M_WORD_Z,
158
55#ifdef CFQ_USE_DYNAMIC_MACRO 159#ifdef CFQ_USE_DYNAMIC_MACRO
56 DYNAMIC_MACRO_RANGE, 160 DYNAMIC_MACRO_RANGE,
57#endif 161#endif
@@ -61,30 +165,6 @@ enum custom_keycodes {
61#include "dynamic_macro.h" 165#include "dynamic_macro.h"
62#endif 166#endif
63 167
64// macros
65#ifdef CFQ_USE_EXPEREMENTAL_LAYER
66#define M_SPACES_1 2
67#define M_SPACES_2 3
68#define M_SPACES_3 4
69#define M_SPACES_4 5
70#define M_SPACES_5 6
71#define M_SPACES_6 7
72#define M_SPACES_7 8
73#define M_SPACES_8 9
74#endif
75#define M_BRACKET_IN_CBR 10
76#define M_BRACKET_IN_PRN 11
77#define M_BRACKET_IN_BRC 12
78#define M_BRACKET_IN_ANG 13
79#define M_BRACKET_OUT_CBR 14
80#define M_BRACKET_OUT_PRN 15
81#define M_BRACKET_OUT_BRC 16
82#define M_BRACKET_OUT_ANG 17
83#define M_ARROW_RMINUS 18
84#define M_ARROW_LMINUS 19
85#define M_ARROW_REQL 20
86#define M_ARROW_LEQL 21
87
88#ifdef CFQ_USE_MOMENTARY_LAYER_KEYS 168#ifdef CFQ_USE_MOMENTARY_LAYER_KEYS
89#define CFQ_KC_FN1 MO(1) 169#define CFQ_KC_FN1 MO(1)
90#define CFQ_KC_FN2 MO(2) 170#define CFQ_KC_FN2 MO(2)
@@ -99,42 +179,49 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99/* Keymap 0: Basic layer 179/* Keymap 0: Basic layer
100 * ,--------------------------------------------------. ,--------------------------------------------------. 180 * ,--------------------------------------------------. ,--------------------------------------------------.
101 * | Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace | 181 * | Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace |
102 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 182 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
103 * | Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ | 183 * | Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ |
104 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 184 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
105 * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | 185 * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
106 * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| 186 * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
107 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | 187 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
108 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 188 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
109 * | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Del | 189 * | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Ins |
110 * `----------------------------------' `----------------------------------' 190 * `----------------------------------' `----------------------------------'
111 * ,-------------. ,-------------. 191 * ,-------------. ,-------------.
112 * | Ins |CapsLk| | Home | End | 192 * | < | > | | Home | End |
113 * ,------|------|------| |------+------+------. 193 * ,------+------+------| |------+------+------.
114 * | | | ~L2 | | PgUp | | | 194 * | | |CapsLk| | PgUp | | |
115 * |Space |Enter |------| |------|Enter |Space | 195 * |BSpace| Del |------| |------| ~L2 |Space |
116 * | | | ~L1 | | PgDn | | | 196 * | | | ~L3 | | PgDn | | |
117 * `--------------------' `--------------------' 197 * `--------------------' `--------------------'
118 * 198 *
119 * Optional overrides: see CFQ_USER_KEY# defines. 199 * Optional overrides: see CFQ_USER_KEY# defines.
120 * 200 *
121 * -------+------+------+------+------+ 201 * ,--------------------------------------------------. ,--------------------------------------------------.
122 * | | | | USR1 | | 202 * | | | | | | | | | | | | | | | USR0 |
123 * `----------------------------------' 203 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
124 * 204 * | | | | | | | | | | | | | | | |
125 * ,-------------. 205 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
126 * | USR2 | USR3 | 206 * | | | | | | |------| |------| | | | | | |
127 * ,------|------|------| 207 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
128 * | | | USR6 | 208 * | | | | | | | | | | | | | | | |
129 * | USR4 | USR5 |------| 209 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
130 * | | | USR7 | 210 * | | | | USR1 | | | | | | | |
131 * `--------------------' 211 * `----------------------------------' `----------------------------------'
212 * ,-------------. ,-------------.
213 * | USR2 | USR3 | | | |
214 * ,------+------+------| |------+------+------.
215 * | | | USR6 | | | | |
216 * | USR4 | USR5 |------| |------| | |
217 * | | | USR7 | | | | |
218 * `--------------------' `--------------------'
132 */ 219 */
133 220
134// If it accepts an argument (i.e, is a function), it doesn't need KC_. 221/* If it accepts an argument (i.e, is a function), it doesn't need KC_.
135// Otherwise, it needs KC_* 222 * Otherwise, it needs KC_* */
136[BASE] = LAYOUT_ergodox( // layer 0 : default 223[BASE] = LAYOUT_ergodox( /* layer 0 : default */
137 // left hand 224 /* left hand */
138 KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LCBR, 225 KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LCBR,
139 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN, 226 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN,
140 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, 227 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
@@ -143,48 +230,43 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
143 CFQ_USER_KEY2, CFQ_USER_KEY3, 230 CFQ_USER_KEY2, CFQ_USER_KEY3,
144 CFQ_USER_KEY6, 231 CFQ_USER_KEY6,
145 CFQ_USER_KEY4, CFQ_USER_KEY5, CFQ_USER_KEY7, 232 CFQ_USER_KEY4, CFQ_USER_KEY5, CFQ_USER_KEY7,
146 // right hand 233 /* right hand */
147 KC_RCBR, KC_CIRC, KC_AMPR, KC_ASTR,KC_MINS, KC_EQL, KC_BSPC, 234 KC_RCBR, KC_CIRC, KC_AMPR, KC_ASTR,KC_MINS, KC_EQL, CFQ_USER_KEY0,
148 KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, 235 KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
149 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 236 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
150 KC_RBRC, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, 237 KC_RBRC, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
151 KC_LEFT, KC_DOWN,KC_UP, KC_RGHT, KC_DELT, 238 KC_LEFT, KC_DOWN,KC_UP, KC_RGHT, KC_INS,
152 KC_HOME, KC_END, 239 KC_HOME, KC_END,
153 KC_PGUP, 240 KC_PGUP,
154#ifdef CFQ_USE_SWAP_RIGHT_SPACE_ENTER 241 KC_PGDN, CFQ_KC_FN2, KC_ENT
155 KC_PGDN, KC_SPC, KC_ENT 242),/* Keymap 1: KeyPad, Macro Record
156#else
157 KC_PGDN, KC_ENT, KC_SPC
158#endif
159),
160/* Keymap 1: Symbol layer
161 * 243 *
162 * ,--------------------------------------------------. ,--------------------------------------------------. 244 * ,--------------------------------------------------. ,--------------------------------------------------.
163 * | | F1 | F2 | F3 | F4 | F5 | {} | | }{ | F6 | F7 | F8 | F9 | F10 | | 245 * | | | | | | | {} | | }{ | |NumLck| / | * | - | |
164 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 246 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
165 * | | | | | | => | () | | )( | <= | 7 | 8 | 9 | \ | F11 | 247 * | | | | | | => | () | | )( | <= | 7 | 8 | 9 | + | |
166 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 248 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
167 * | | | | | | -> |------| |------| <- | 4 | 5 | 6 | * | F12 | 249 * | | | | | | -> |------| |------| <- | 4 | 5 | 6 | + | |
168 * |--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------| 250 * |--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------|
169 * | | | | | | <> | | | | >< | 1 | 2 | 3 | - | | 251 * | | | | | | <> | | | | >< | 1 | 2 | 3 | Enter| |
170 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 252 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
171 * | | | | | | | 0 | | . | + | | 253 * | | | | | | | 0 | | . | Enter| |
172 * `----------------------------------' `----------------------------------' 254 * `----------------------------------' `----------------------------------'
173 * ,-------------. ,---------------. 255 * ,-------------. ,--------------.
174 * |Start1|Start2| | | | 256 * |Start1|Start2| | | |
175 * ,------|------|------| |------+--------+------. 257 * ,------+------+------| |------+-------+------.
176 * | | | Stop | | | | | 258 * | | | Stop | | | | |
177 * |Play1 |Play2 |------| |------| | | 259 * |Play1 |Play2 |------| |------| | |
178 * | | | | | | | | 260 * | | | | | | | |
179 * `--------------------' `----------------------' 261 * `--------------------' `---------------------'
180 */ 262 */
181// SYMBOLS 263/* SYMBOLS */
182[SYMB] = LAYOUT_ergodox( 264[SYMB] = LAYOUT_ergodox(
183 // left hand 265 /* left hand */
184 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, M(M_BRACKET_IN_CBR), 266 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_BRACKET_IN_CBR,
185 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_ARROW_REQL), M(M_BRACKET_IN_PRN), 267 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_ARROW_REQL, M_BRACKET_IN_PRN,
186 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_ARROW_RMINUS), 268 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_ARROW_RMINUS,
187 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(M_BRACKET_IN_ANG), M(M_BRACKET_IN_BRC), 269 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M_BRACKET_IN_ANG, M_BRACKET_IN_BRC,
188 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 270 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
189#ifdef CFQ_USE_DYNAMIC_MACRO 271#ifdef CFQ_USE_DYNAMIC_MACRO
190 DYN_REC_START1, DYN_REC_START2, 272 DYN_REC_START1, DYN_REC_START2,
@@ -195,21 +277,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
195 KC_TRNS, 277 KC_TRNS,
196 KC_TRNS, KC_TRNS, KC_TRNS, 278 KC_TRNS, KC_TRNS, KC_TRNS,
197#endif 279#endif
198 // right hand 280 /* right hand */
199 M(M_BRACKET_OUT_CBR), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, 281 M_BRACKET_OUT_CBR, KC_TRNS, KC_NLCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_TRNS,
200 M(M_BRACKET_OUT_PRN), M(M_ARROW_LEQL), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, KC_F11, 282 M_BRACKET_OUT_PRN, M_ARROW_LEQL, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_TRNS,
201 M(M_ARROW_LMINUS), KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, KC_F12, 283 M_ARROW_LMINUS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_TRNS,
202 M(M_BRACKET_OUT_BRC), M(M_BRACKET_OUT_ANG), KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_MINUS, KC_TRNS, 284 M_BRACKET_OUT_BRC, M_BRACKET_OUT_ANG, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_TRNS,
203 KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_PLUS, KC_TRNS, 285 KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_ENTER, KC_TRNS,
204 KC_TRNS, KC_TRNS, 286 KC_TRNS, KC_TRNS,
205 KC_TRNS, 287 KC_TRNS,
206 KC_TRNS, KC_TRNS, KC_TRNS 288 KC_TRNS, KC_TRNS, KC_TRNS
207), 289),
208/* Keymap 2: Media and mouse keys 290/* Keymap 2: F-Keys, media and mouse keys
209 * 291 *
210 * ,--------------------------------------------------. ,--------------------------------------------------. 292 * ,--------------------------------------------------. ,--------------------------------------------------.
211 * | | | | | | | | | | | | | | | | 293 * | | | | | | | | | | | | | | | |
212 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 294 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
213 * | | | | MsUp | | |MWhlUp| | | | | | | | | 295 * | | | | MsUp | | |MWhlUp| | | | | | | | |
214 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 296 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
215 * | | |MsLeft|MsDown|MsRght| |------| |------| Left | Down | Up |Right | | | 297 * | | |MsLeft|MsDown|MsRght| |------| |------| Left | Down | Up |Right | | |
@@ -220,15 +302,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
220 * `----------------------------------' `----------------------------------' 302 * `----------------------------------' `----------------------------------'
221 * ,-------------. ,-------------. 303 * ,-------------. ,-------------.
222 * | MRwd | MFwd | | MPrv | MNxt | 304 * | MRwd | MFwd | | MPrv | MNxt |
223 * ,------|------|------| |------+------+------. 305 * ,------+------+------| |------+------+------.
224 * | | | | |VolUp | | | 306 * | | | | |VolUp | | |
225 * | | |------| |------| Mute | Play | 307 * | Mute | |------| |------| | Play |
226 * | | | | |VolDn | | | 308 * | | | | |VolDn | | |
227 * `--------------------' `--------------------' 309 * `--------------------' `--------------------'
228 */ 310 */
229// MEDIA AND MOUSE 311/* MEDIA AND MOUSE */
230[MDIA] = LAYOUT_ergodox( 312[MDIA] = LAYOUT_ergodox(
231 // left hand 313 /* left hand */
232 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 314 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
233 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_WH_U, 315 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_WH_U,
234 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, 316 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
@@ -236,131 +318,66 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
236 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 318 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
237 KC_MRWD, KC_MFFD, 319 KC_MRWD, KC_MFFD,
238 KC_TRNS, 320 KC_TRNS,
239 KC_TRNS, KC_TRNS, KC_TRNS, 321 KC_MUTE, KC_TRNS, KC_TRNS,
240 // right hand 322 /* right hand */
241 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 323 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
242 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 324 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
243 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, 325 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
244 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 326 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
245 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 327 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
246 KC_MPRV, KC_MNXT, 328 KC_MPRV, KC_MNXT,
247 KC_VOLU, 329 KC_VOLU,
248 KC_VOLD, KC_MUTE, KC_MPLY 330 KC_VOLD, KC_TRNS, KC_MPLY
249), 331),
250#ifdef CFQ_USE_EXPEREMENTAL_LAYER 332/* Keymap 3: Entire Words (one for each key)
251/* Keymap 3: My own testing keys!
252 * 333 *
253 * ,--------------------------------------------------. ,--------------------------------------------------. 334 * ,--------------------------------------------------. ,--------------------------------------------------.
254 * | | | | { | } | | } | | | | | | | | | 335 * | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
255 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 336 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
256 * | | | | ( | ) | | ) | | | Spc7 | Spc8 | | | | | 337 * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
257 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 338 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
258 * | | | | [ | ] | |------| |------| Spc4 | Spc5 | Spc6 | | | | 339 * | | A | S | D | F | G |------| |------| H | J | K | L | | |
259 * |--------+------+------+------+------+------| ] | | |------+------+------+------+------+--------| 340 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
260 * | | | | < | > | | | | | Spc1 | Spc2 | Spc3 | | | | 341 * | | Z | X | C | V | B | | | | N | M | | | | |
261 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 342 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
262 * | | | | | | | | | | | | 343 * | | | | | | | | | | | |
263 * `----------------------------------' `----------------------------------' 344 * `----------------------------------' `----------------------------------'
264 * ,-------------. ,-------------. 345 * ,-------------. ,-------------.
265 * | | | | | | 346 * | | | | | |
266 * ,------|------|------| |------+------+------. 347 * ,------+------+------| |------+------+------.
267 * | | | | | | | | 348 * | | | | | | | |
268 * | | |------| |------| | | 349 * | | |------| |------| | |
269 * | | | | | | | | 350 * | | | | | | | |
270 * `--------------------' `--------------------' 351 * `--------------------' `--------------------'
271 */ 352 */
272 353
273// EXPERIMENT 354/* WORDS */
274[EXPR] = LAYOUT_ergodox( 355[WORD] = LAYOUT_ergodox(
275 // left hand 356 /* left hand */
276 KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_RCBR, 357 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
277 KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, KC_RPRN, 358 KC_TRNS, M_WORD_Q, M_WORD_W, M_WORD_E, M_WORD_R, M_WORD_T, KC_TRNS,
278 KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, 359 KC_TRNS, M_WORD_A, M_WORD_S, M_WORD_D, M_WORD_F, M_WORD_G,
279 KC_TRNS, KC_TRNS, KC_TRNS, S(KC_COMM), S(KC_DOT), KC_TRNS, KC_RBRC, 360 KC_TRNS, M_WORD_Z, M_WORD_X, M_WORD_C, M_WORD_V, M_WORD_B, KC_TRNS,
280 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 361 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
281 KC_TRNS, KC_TRNS, 362 KC_TRNS, KC_TRNS,
282 KC_TRNS, 363 KC_TRNS,
283 KC_TRNS, KC_TRNS, KC_TRNS, 364 KC_TRNS, KC_TRNS, KC_TRNS,
284 // right hand 365 /* right hand */
285 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 366 KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
286 KC_TRNS, KC_TRNS, M(M_SPACES_7), M(M_SPACES_8), KC_TRNS, KC_TRNS, KC_TRNS, 367 KC_TRNS, M_WORD_Y, M_WORD_U, M_WORD_I, M_WORD_O, M_WORD_P, KC_TRNS,
287 KC_TRNS, M(M_SPACES_4), M(M_SPACES_5), M(M_SPACES_6), KC_TRNS, KC_TRNS, 368 M_WORD_H, M_WORD_J, M_WORD_K, M_WORD_L, KC_TRNS, KC_TRNS,
288 KC_TRNS, KC_TRNS, M(M_SPACES_1), M(M_SPACES_2), M(M_SPACES_3), KC_TRNS, KC_TRNS, 369 KC_TRNS, M_WORD_N, M_WORD_M, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
289 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 370 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
290 KC_TRNS, KC_TRNS, 371 KC_TRNS, KC_TRNS,
291 KC_TRNS, 372 KC_TRNS,
292 KC_TRNS, KC_TRNS, KC_TRNS 373 KC_TRNS, KC_TRNS, KC_TRNS
293), 374),
294#endif // CFQ_USE_EXPEREMENTAL_LAYER
295}; 375};
296 376
297const uint16_t PROGMEM fn_actions[] = { 377const uint16_t PROGMEM fn_actions[] = {
298 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) 378 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), /* FN1 - Momentary Layer 1 (Symbols) */
299 [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), // FN2 - Momentary Layer 2 (Media) 379 [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), /* FN2 - Momentary Layer 2 (Media) */
300#ifdef CFQ_USE_EXPEREMENTAL_LAYER 380 [3] = ACTION_LAYER_TAP_TOGGLE(WORD), /* FN3 - Momentary Layer 3 (Words) */
301 [3] = ACTION_LAYER_TAP_TOGGLE(EXPR), // FN3 - Momentary Layer 3 (Expremental)
302#endif
303};
304
305const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
306{
307 // MACRODOWN only works in this function
308 switch(id) {
309 case 0:
310 if (record->event.pressed) {
311 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
312 }
313 break;
314 case 1:
315 if (record->event.pressed) { // For resetting EEPROM
316 eeconfig_init();
317 }
318 break;
319#ifdef CFQ_USE_EXPEREMENTAL_LAYER
320 case M_SPACES_1:
321 if (record->event.pressed) { return MACRO(T(SPC), END); }
322 case M_SPACES_2:
323 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), END); }
324 case M_SPACES_3:
325 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), END); }
326 case M_SPACES_4:
327 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), T(SPC), END); }
328 case M_SPACES_5:
329 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), END); }
330 case M_SPACES_6:
331 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), END); }
332 case M_SPACES_7:
333 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), END); }
334 case M_SPACES_8:
335 if (record->event.pressed) { return MACRO(T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), T(SPC), END); }
336#endif // CFQ_USE_EXPEREMENTAL_LAYER
337 case M_BRACKET_IN_CBR: // {}
338 if (record->event.pressed) { return MACRO(D(LSFT), T(LBRC), T(RBRC), U(LSFT), T(LEFT), END); }
339 case M_BRACKET_IN_PRN: // ()
340 if (record->event.pressed) { return MACRO(D(LSFT), T(9), T(0), U(LSFT), T(LEFT), END); }
341 case M_BRACKET_IN_BRC: // []
342 if (record->event.pressed) { return MACRO(T(LBRC), T(RBRC), T(LEFT), END); }
343 case M_BRACKET_IN_ANG: // <>
344 if (record->event.pressed) { return MACRO(D(LSFT), T(COMM), T(DOT), U(LSFT), T(LEFT), END); }
345 case M_BRACKET_OUT_CBR: // }{
346 if (record->event.pressed) { return MACRO(D(LSFT), T(RBRC), T(LBRC), U(LSFT), T(LEFT), END); }
347 case M_BRACKET_OUT_PRN: // )(
348 if (record->event.pressed) { return MACRO(D(LSFT), T(0), T(9), U(LSFT), T(LEFT), END); }
349 case M_BRACKET_OUT_BRC: // ][
350 if (record->event.pressed) { return MACRO(T(RBRC), T(LBRC), T(LEFT), END); }
351 case M_BRACKET_OUT_ANG: // ><
352 if (record->event.pressed) { return MACRO(D(LSFT), T(DOT), T(COMM), U(LSFT), T(LEFT), END); }
353
354 case M_ARROW_RMINUS:
355 if (record->event.pressed) { return MACRO(T(MINUS), D(LSFT), T(DOT), U(LSFT), END); }
356 case M_ARROW_LMINUS:
357 if (record->event.pressed) { return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINUS), END); }
358 case M_ARROW_REQL:
359 if (record->event.pressed) { return MACRO(T(EQL), D(LSFT), T(DOT), U(LSFT), END); }
360 case M_ARROW_LEQL:
361 if (record->event.pressed) { return MACRO(D(LSFT), T(COMM), U(LSFT), T(EQL), END); }
362 }
363 return MACRO_NONE;
364}; 381};
365 382
366bool process_record_user(uint16_t keycode, keyrecord_t *record) { 383bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -370,37 +387,124 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
370 } 387 }
371#endif 388#endif
372 switch (keycode) { 389 switch (keycode) {
373 // dynamically generate these. 390 /* dynamically generate these. */
374 case EPRM: 391 case RGB_SLD:
375 if (record->event.pressed) { 392 if (record->event.pressed) {
376 eeconfig_init(); 393#ifdef RGBLIGHT_ENABLE
394 rgblight_mode(1);
395#endif
377 } 396 }
378 return false; 397 return false;
379 break; 398 break;
380 case VRSN: 399 case M_BRACKET_IN_CBR: /* {} */
381 if (record->event.pressed) { 400 if (record->event.pressed) {
382 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); 401 SEND_STRING("{}" SS_TAP(X_LEFT));
402 return false;
383 } 403 }
384 return false;
385 break; 404 break;
386 case RGB_SLD: 405 case M_BRACKET_IN_PRN: /* () */
387 if (record->event.pressed) { 406 if (record->event.pressed) {
388#ifdef RGBLIGHT_ENABLE 407 SEND_STRING("()" SS_TAP(X_LEFT));
389 rgblight_mode(1); 408 return false;
390#endif 409 }
410 break;
411 case M_BRACKET_IN_BRC: /* [] */
412 if (record->event.pressed) {
413 SEND_STRING("[]" SS_TAP(X_LEFT));
414 return false;
415 }
416 break;
417 case M_BRACKET_IN_ANG: /* <> */
418 if (record->event.pressed) {
419 SEND_STRING("<>" SS_TAP(X_LEFT));
420 return false;
421 }
422 break;
423 case M_BRACKET_OUT_CBR: /* }{ */
424 if (record->event.pressed) {
425 SEND_STRING("}{" SS_TAP(X_LEFT));
426 return false;
427 }
428 break;
429 case M_BRACKET_OUT_PRN: /* )( */
430 if (record->event.pressed) {
431 SEND_STRING(")(" SS_TAP(X_LEFT));
432 return false;
433 }
434 break;
435 case M_BRACKET_OUT_BRC: /* ][ */
436 if (record->event.pressed) {
437 SEND_STRING("][" SS_TAP(X_LEFT));
438 return false;
439 }
440 break;
441 case M_BRACKET_OUT_ANG: /* >< */
442 if (record->event.pressed) {
443 SEND_STRING("><" SS_TAP(X_LEFT));
444 return false;
445 }
446 break;
447 case M_ARROW_LMINUS: /* <- */
448 if (record->event.pressed) {
449 SEND_STRING("<-");
450 return false;
391 } 451 }
392 return false;
393 break; 452 break;
453 case M_ARROW_RMINUS: /* -> */
454 if (record->event.pressed) {
455 SEND_STRING("->");
456 return false;
457 }
458 break;
459 case M_ARROW_LEQL: /* <= */
460 if (record->event.pressed) {
461 SEND_STRING("<=");
462 return false;
463 }
464 break;
465 case M_ARROW_REQL: /* => */
466 if (record->event.pressed) {
467 SEND_STRING("=>");
468 return false;
469 }
470 break;
471 case KC_LSHIFT: /* '' */
472 if (record->event.pressed && (keyboard_report->mods & (MOD_BIT(KC_RSFT)))) {
473 clear_mods();
474 SEND_STRING("''" SS_TAP(X_LEFT) SS_DOWN(X_RSHIFT) SS_DOWN(X_LSHIFT));
475 return false;
476 }
477 break;
478 case KC_RSHIFT: /* "" */
479 if (record->event.pressed && (keyboard_report->mods & (MOD_BIT(KC_LSFT)))) {
480 clear_mods();
481 SEND_STRING("\x22\x22" SS_TAP(X_LEFT) SS_DOWN(X_LSHIFT) SS_DOWN(X_RSHIFT));
482 return false;
483 }
484 break;
485
486 case M_WORD_A...M_WORD_Z:
487 {
488 const char *word = cfq_word_lut[keycode - M_WORD_A];
489 if (record->event.pressed) {
490 if (*word) {
491 send_string(word);
492 }
493 return false;
494 }
495 break;
496 }
394 } 497 }
498
395 return true; 499 return true;
396} 500}
397 501
398// Runs just one time when the keyboard initializes. 502/* Runs just one time when the keyboard initializes. */
399void matrix_init_user(void) { 503void matrix_init_user(void) {
400 504
401}; 505};
402 506
403// Runs constantly in the background, in a loop. 507/* Runs constantly in the background, in a loop. */
404void matrix_scan_user(void) { 508void matrix_scan_user(void) {
405 509
406 uint8_t layer = biton32(layer_state); 510 uint8_t layer = biton32(layer_state);
@@ -416,13 +520,11 @@ void matrix_scan_user(void) {
416 case 2: 520 case 2:
417 ergodox_right_led_2_on(); 521 ergodox_right_led_2_on();
418 break; 522 break;
419#ifdef CFQ_USE_EXPEREMENTAL_LAYER
420 case 3: 523 case 3:
421 ergodox_right_led_3_on(); 524 ergodox_right_led_3_on();
422 break; 525 break;
423#endif
424 default: 526 default:
425 // none 527 /* none */
426 break; 528 break;
427 } 529 }
428 530
diff --git a/layouts/community/ergodox/qwerty_code_friendly/readme.md b/layouts/community/ergodox/qwerty_code_friendly/readme.md
index 92130c6fb..231123b78 100644
--- a/layouts/community/ergodox/qwerty_code_friendly/readme.md
+++ b/layouts/community/ergodox/qwerty_code_friendly/readme.md
@@ -3,7 +3,8 @@
3- This layout aims to balance muscle memory from a typical QWERTY layout 3- This layout aims to balance muscle memory from a typical QWERTY layout
4 with having keys used for software development easily accessible. 4 with having keys used for software development easily accessible.
5 5
6- Arrow keys follow VIM convention (the media layer even uses arrow keys for HJKL). 6- Arrow keys follow VIM convention
7 (the media layer even uses arrow keys for HJKL).
7 8
8- On the top row only symbols are used (not numbers), 9- On the top row only symbols are used (not numbers),
9 it's expected the symbol layer's number-pad layout will be used for numbers. 10 it's expected the symbol layer's number-pad layout will be used for numbers.
@@ -17,65 +18,75 @@
17 at the same key locations to type matching pairs. 18 at the same key locations to type matching pairs.
18 19
19- The extra space-bar on the lower-left looks like it's in an obscure location, 20- The extra space-bar on the lower-left looks like it's in an obscure location,
20 however using the larger thumb cluster ended up being more of a reach while typing. 21 however using the larger thumb cluster
22 ended up being more of a reach while typing.
21 23
22- L3 is currently only used if `CFQ_USE_EXPEREMENTAL_LAYER` is defined, 24- There is a handy shortcut for writing quotes that inserts the cursor
23 this is a layer to place extra functionality and test new keys. 25 between the quotation marks.
26
27 Holding LShift, then RShift types: "" (then presses left).
28
29 Holding RShift, then LShift types: '' (then presses left).
24 30
25## Configuration 31## Configuration
26 32
27Some optional behavior is configurable without editing the code 33Some optional behavior is configurable without editing the code
28using `CFQ_` prefixed defines which can be set by passing `EXTRAFLAGS` to make. 34using `CFQ_` prefixed defines which can be set by passing `EXTRAFLAGS` to make.
29 35
30- `CFQ_USER_KEY1` (1..7) are used for custom-keys 36- `CFQ_USER_KEY0`
31- `CFQ_USE_MOMENTARY_LAYER_KEYS` is used to prevent layer keys from toggling when tapped. 37 (0..7) are used for custom-keys
32- `CFQ_USE_SWAP_RIGHT_SPACE_ENTER` swap Enter and Space on the right hand thumb cluster. 38- `CFQ_USE_MOMENTARY_LAYER_KEYS`
33 While asymmetric, it makes Enter more easily accessible. 39 is used to prevent layer keys from toggling when tapped.
34- `CFQ_USE_EXPEREMENTAL_LAYER` defines an extra layer for misc extra keys/macros. 40- `CFQ_WORD_[A-Z]`
35 When set, Caps-Lock is replace by Layer3. 41 defines can bind a key to an entire user defined word.
36 Currently it's mostly empty.
37 42
38 43
39 44
40## Keymap 0: Basic layer 45## Keymap 0: Basic layer
41 46
42``` 47```
43Keymap 0: Basic layer
44,--------------------------------------------------. ,--------------------------------------------------. 48,--------------------------------------------------. ,--------------------------------------------------.
45| Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace | 49| Grave | ! | @ | # | $ | % | { | | } | ^ | & | * | - | = | BSpace |
46|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 50|--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
47| Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ | 51| Tab | Q | W | E | R | T | ( | | ) | Y | U | I | O | P | \ |
48|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 52|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
49| Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | 53| Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
50|--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| 54|--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------|
51| LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | 55| LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
52`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 56`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
53 | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Del | 57 | LCtl |Super | Alt | ~L1 |Space | | Left | Down | Up |Right | Ins |
54 `----------------------------------' `----------------------------------' 58 `----------------------------------' `----------------------------------'
55 ,-------------. ,-------------. 59 ,-------------. ,-------------.
56 | Ins |CapsLk| | Home | End | 60 | < | > | | Home | End |
57 ,------|------|------| |------+------+------. 61 ,------+------+------| |------+------+------.
58 | | | ~L2 | | PgUp | | | 62 | | |CapsLk| | PgUp | | |
59 |Space |Enter |------| |------|Enter |Space | 63 |BSpace| Del |------| |------| ~L2 |Space |
60 | | | ~L1 | | PgDn | | | 64 | | | ~L3 | | PgDn | | |
61 `--------------------' `--------------------' 65 `--------------------' `--------------------'
62 66
63Optional overrides: see CFQ_USER_KEY# defines 67Optional overrides: see CFQ_USER_KEY# defines.
64 68
65 -------+------+------+------+------+ 69,--------------------------------------------------. ,--------------------------------------------------.
66 | | | | USR1 | | 70| | | | | | | | | | | | | | | USR0 |
67 `----------------------------------' 71|--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
68 72| | | | | | | | | | | | | | | |
69 ,-------------. 73|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
70 | USR2 | USR3 | 74| | | | | | |------| |------| | | | | | |
71 ,------|------|------| 75|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
72 | | | USR6 | 76| | | | | | | | | | | | | | | |
73 | USR4 | USR5 |------| 77`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
74 | | | USR7 | 78 | | | | USR1 | | | | | | | |
75 `--------------------' 79 `----------------------------------' `----------------------------------'
80 ,-------------. ,-------------.
81 | USR2 | USR3 | | | |
82 ,------+------+------| |------+------+------.
83 | | | USR6 | | | | |
84 | USR4 | USR5 |------| |------| | |
85 | | | USR7 | | | | |
86 `--------------------' `--------------------'
76``` 87```
77 88
78## Keymap 1: Symbol layer 89## Keymap 1: KeyPad, Macro Record
79 90
80Notes: 91Notes:
81 92
@@ -84,31 +95,31 @@ Notes:
84 95
85``` 96```
86,--------------------------------------------------. ,--------------------------------------------------. 97,--------------------------------------------------. ,--------------------------------------------------.
87| | F1 | F2 | F3 | F4 | F5 | {} | | }{ | F6 | F7 | F8 | F9 | F10 | | 98| | | | | | | {} | | }{ | |NumLck| / | * | - | |
88|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 99|--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
89| | | | | | => | () | | )( | <= | 7 | 8 | 9 | \ | F11 | 100| | | | | | => | () | | )( | <= | 7 | 8 | 9 | + | |
90|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 101|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
91| | | | | | -> |------| |------| <- | 4 | 5 | 6 | * | F12 | 102| | | | | | -> |------| |------| <- | 4 | 5 | 6 | + | |
92|--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------| 103|--------+------+------+------+------+------| [] | | ][ |------+------+------+------+------+--------|
93| | | | | | <> | | | | >< | 1 | 2 | 3 | - | | 104| | | | | | <> | | | | >< | 1 | 2 | 3 | Enter| |
94`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 105`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
95 | | | | | | | 0 | | . | + | | 106 | | | | | | | 0 | | . | Enter| |
96 `----------------------------------' `----------------------------------' 107 `----------------------------------' `----------------------------------'
97 ,-------------. ,---------------. 108 ,-------------. ,--------------.
98 |Start1|Start2| | | | 109 |Start1|Start2| | | |
99 ,------|------|------| |------+--------+------. 110 ,------+------+------| |------+-------+------.
100 | | | Stop | | | | | 111 | | | Stop | | | | |
101 |Play1 |Play2 |------| |------| | | 112 |Play1 |Play2 |------| |------| | |
102 | | | | | | | | 113 | | | | | | | |
103 `--------------------' `----------------------' 114 `--------------------' `---------------------'
104``` 115```
105 116
106## Keymap 2: Media and mouse keys 117## Keymap 2: Keymap 2: Media and mouse keys
107 118
108``` 119```
109,--------------------------------------------------. ,--------------------------------------------------. 120,--------------------------------------------------. ,--------------------------------------------------.
110| | | | | | | | | | | | | | | | 121| | | | | | | | | | | | | | | |
111|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 122|--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
112| | | | MsUp | | |MWhlUp| | | | | | | | | 123| | | | MsUp | | |MWhlUp| | | | | | | | |
113|--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 124|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
114| | |MsLeft|MsDown|MsRght| |------| |------| Left | Down | Up |Right | | | 125| | |MsLeft|MsDown|MsRght| |------| |------| Left | Down | Up |Right | | |
@@ -119,15 +130,53 @@ Notes:
119 `----------------------------------' `----------------------------------' 130 `----------------------------------' `----------------------------------'
120 ,-------------. ,-------------. 131 ,-------------. ,-------------.
121 | MRwd | MFwd | | MPrv | MNxt | 132 | MRwd | MFwd | | MPrv | MNxt |
122 ,------|------|------| |------+------+------. 133 ,------+------+------| |------+------+------.
123 | | | | |VolUp | | | 134 | | | | |VolUp | | |
124 | | |------| |------| Mute | Play | 135 | Mute | |------| |------| | Play |
125 | | | | |VolDn | | | 136 | | | | |VolDn | | |
126 `--------------------' `--------------------' 137 `--------------------' `--------------------'
127``` 138```
128 139
140## Keymap 3: K-Keys & User defined words
141
142This is for assigning whole words to single keys.
143You can define the arguments (which must be quoted) using: `CFQ_WORD_[A-Z]`
144eg: `-DCFQ_WORD_E=\"my@email.com\"`
145
146```
147,--------------------------------------------------. ,--------------------------------------------------.
148| | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
149|--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
150| | Q | W | E | R | T | | | | Y | U | I | O | P | |
151|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
152| | A | S | D | F | G |------| |------| H | J | K | L | | |
153|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
154| | Z | X | C | V | B | | | | N | M | | | | |
155`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
156 | | | | | | | | | | | |
157 `----------------------------------' `----------------------------------'
158 ,-------------. ,-------------.
159 | | | | | |
160 ,------+------+------| |------+------+------.
161 | | | | | | | |
162 | | |------| |------| | |
163 | | | | | | | |
164 `--------------------' `--------------------'
165```
166
129## Changelog 167## Changelog
130 168
169- 2018/03/06
170 Add layer for user defined words (replaces `CFQ_USE_EXPEREMENTAL_LAYER`).
171
172 Minor changes to thumb cluster.
173
174 Move backspace to left thumb, optionally remap the top right backspace.
175
176 Make keypad layout match a typical numpad.
177
178 Move F-Keys to layer 3.
179
131- 2017/11/09 180- 2017/11/09
132 Use Caps-Lock when `CFQ_USE_EXPEREMENTAL_LAYER` isn't defined. 181 Use Caps-Lock when `CFQ_USE_EXPEREMENTAL_LAYER` isn't defined.
133 182