diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-03-07 01:54:50 +1100 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2018-03-07 17:00:21 -0500 |
commit | aadb386de6e81b97f9fa1e85b62b5a925cbc28c0 (patch) | |
tree | 549af5ab01ea5408dbe9ac2b0ba6d5637aba5a05 | |
parent | b688c2c0b3a533cedd6c909f95d6505e667a0443 (diff) | |
download | qmk_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.c | 546 | ||||
-rw-r--r-- | layouts/community/ergodox/qwerty_code_friendly/readme.md | 147 |
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 | ||
121 | static 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 | |||
50 | enum custom_keycodes { | 134 | enum 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 | ||
297 | const uint16_t PROGMEM fn_actions[] = { | 377 | const 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 | |||
305 | const 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 | ||
366 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 383 | bool 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. */ |
399 | void matrix_init_user(void) { | 503 | void 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. */ |
404 | void matrix_scan_user(void) { | 508 | void 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 | ||
27 | Some optional behavior is configurable without editing the code | 33 | Some optional behavior is configurable without editing the code |
28 | using `CFQ_` prefixed defines which can be set by passing `EXTRAFLAGS` to make. | 34 | using `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 | ``` |
43 | Keymap 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 | ||
63 | Optional overrides: see CFQ_USER_KEY# defines | 67 | Optional 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 | ||
80 | Notes: | 91 | Notes: |
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 | |||
142 | This is for assigning whole words to single keys. | ||
143 | You can define the arguments (which must be quoted) using: `CFQ_WORD_[A-Z]` | ||
144 | eg: `-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 | ||