aboutsummaryrefslogtreecommitdiff
path: root/layouts/community/ergodox/albert/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ergodox/albert/keymap.c')
-rw-r--r--layouts/community/ergodox/albert/keymap.c661
1 files changed, 661 insertions, 0 deletions
diff --git a/layouts/community/ergodox/albert/keymap.c b/layouts/community/ergodox/albert/keymap.c
new file mode 100644
index 000000000..c1b47312f
--- /dev/null
+++ b/layouts/community/ergodox/albert/keymap.c
@@ -0,0 +1,661 @@
1#include QMK_KEYBOARD_H
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#include <stdarg.h>
7
8/* use UK keymap */
9
10#define UK_HASH KC_NONUS_HASH
11#define UK_BSLS KC_NONUS_BSLASH
12#define UK_PIPE LSFT(UK_BSLS)
13
14#define BASE 0 // default layer
15#define SYMB 1 // symbols
16#define NUMB 2 // numbers and hex
17#define CRSR 3 // cursor keys
18#define MOUS 4 // mouse keys
19#define KEYW 5 // keyword macros
20#define EMAC 6 // emacs
21
22// my macros
23#define UM_ECET M(0) // { }
24#define UM_0x M(1)
25#define UM_PUB M(2)
26#define UM_PRO M(3)
27#define UM_PRV M(4)
28#define UM_CLS M(5)
29#define UM_STR M(6)
30#define UM_RET M(7)
31#define UM_INC M(8)
32#define UM_OBJ M(9)
33#define UM_GITLOG M(10)
34#define UM_GOODM M(11)
35#define UM_NAMESP M(12)
36#define UM_EMTR M(14) // emacs toggle read-only
37#define UM_EMWR M(15) // emacs write buffer (save)
38#define UM_EMUN M(16) // emacs undo
39#define UM_EMRE M(17) // emacs redo
40#define UM_EMPB M(18) // emacs previous buffer
41#define UM_EMNB M(19) // emacs next buffer
42#define UM_GOODN M(20)
43#define UM_ECETS M(22) // { };
44#define UM_TMPL M(23)
45#define UM_TYPN M(24)
46#define UM_CONT M(25)
47#define UM_BREAK M(26)
48#define UM_CONST M(27)
49#define UM_SMILY M(28)
50#define UM_SADF M(29)
51#define UM_SCARF M(30)
52#define UM_DECAF M(31)
53#define UM_OPER M(32)
54#define UM_NULP M(33)
55#define UM_EXTR M(34)
56#define UM_VIRT M(35)
57#define UM_EMFB M(36) // emacs font bigger
58#define UM_EMFS M(37) // emacs font smaller
59#define UM_VOLAT M(38)
60
61const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
62/* Keymap 0: Base layer
63 *
64 * ,--------------------------------------------------. ,--------------------------------------------------.
65 * | ESC | 1 | 2 | 3 | 4 | 5 | SfLt | | SfRt | 6 | 7 | 8 | 9 | 0 | BkSp |
66 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
67 * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Del |
68 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
69 * | Caps/L2| A | S | D | F | G |------| |------| H | J | K | L | ; |Enter/L2|
70 * |--------+------+------+------+------+------| L6 | | L6 |------+------+------+------+------+--------|
71 * | LSft/( | Z | X | C | V/L3 | B/L4 | | | | N/L4 | M/L3 | , | . | / | RSft/) |
72 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
73 * |Ctrl/[| Alt/]| # | Left |Right | | Up | Down | - | Alt/[|Ctrl/]|
74 * `----------------------------------' `----------------------------------'
75 * ,-------------. ,-------------.
76 * | L2 | lead | | lead | Ins |
77 * ,------|------|------| |------+------+------.
78 * | Space| BkSp | Home | | PgUp | Enter|Space |
79 * | / | / |------| |------| / | / |
80 * | Ctrl | Alt |End/L5| |PDn/L5| Alt | Ctrl |
81 * `--------------------' `--------------------'
82 */
83[BASE] = LAYOUT_ergodox( // layer 0 : default
84 // left hand
85 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_LEFT),
86 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(SYMB),
87 LT(NUMB, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G,
88 KC_LSPO, KC_Z, KC_X, KC_C, LT(CRSR, KC_V), LT(MOUS, KC_B), MO(EMAC),
89 CTL_T(KC_LBRC), ALT_T(KC_RBRC), UK_HASH, KC_LEFT, KC_RGHT,
90 TG(NUMB), KC_LEAD,
91 KC_HOME,
92 CTL_T(KC_SPC), ALT_T(KC_BSPC), LT(KEYW, KC_END),
93 // right hand
94 LSFT(KC_RGHT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
95 MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DELT,
96 KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(NUMB, KC_ENT),
97 MO(EMAC), LT(MOUS, KC_N), LT(CRSR, KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
98 KC_UP, KC_DOWN, KC_MINS, ALT_T(KC_LBRC), CTL_T(KC_RBRC),
99 KC_LEAD, KC_INS,
100 KC_PGUP,
101 LT(KEYW, KC_PGDN), ALT_T(KC_ENT), CTL_T(KC_SPC)
102 ),
103/* Keymap 1: Symbol Layer with F keys
104 *
105 * ,--------------------------------------------------. ,--------------------------------------------------.
106 * | ## | F1 | F2 | F3 | F4 | F5 | ## | | ## | F6 | F7 | F8 | F9 | F10 | F11 |
107 * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
108 * | ## | ! | " | £ | $ | % | ## | | ## | - | + | = | @ | ~ | F12 |
109 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
110 * | ## | ^ | & | * | _ | # |------| |------| { | } | ; | ' | # | ## |
111 * |--------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
112 * | ## | \ | | | ` | - | / | | | | [ | ] | < | > | ? | ## |
113 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
114 * | ## | ## | ## | ## | ## | | ## | ## | ## | ## | ## |
115 * `----------------------------------' `----------------------------------'
116 * ,-------------. ,-------------.
117 * | ## | ## | | ## | ## |
118 * ,------|------|------| |------+------+------.
119 * | | | ## | | ## | | |
120 * | ## | ## |------| |------| ## | ## |
121 * | | | ## | | ## | | |
122 * `--------------------' `--------------------'
123 */
124[SYMB] = LAYOUT_ergodox(
125 // left hand
126 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
127 KC_TRNS, KC_EXLM, LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), KC_TRNS,
128 KC_TRNS, LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_MINS), UK_HASH,
129 KC_TRNS, UK_BSLS, UK_PIPE, KC_GRV, KC_MINS, KC_SLSH, KC_TRNS,
130 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_TRNS, KC_TRNS,
132 KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS,
134 // right hand
135 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
136 KC_TRNS, KC_MINS, KC_PLUS, KC_EQL, LSFT(KC_QUOT), LSFT(UK_HASH), KC_F12,
137 KC_LCBR, KC_RCBR, KC_SCLN, KC_QUOT, UK_HASH, KC_TRNS,
138 KC_TRNS, KC_LBRC, KC_RBRC, LSFT(KC_COMM), LSFT(KC_DOT), LSFT(KC_SLSH), KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
140 KC_TRNS, KC_TRNS,
141 KC_TRNS,
142 KC_TRNS, KC_TRNS, KC_TRNS
143 ),
144/* Keymap 2: Numerics and hex
145 *
146 * ,---------------------------------------------------. ,--------------------------------------------------.
147 * | ## | A | B | C | D | E | F | | A | B | C | D | E | F | ## |
148 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
149 * | ## | * | 7 | 8 | 9 | * | 0x | | 0x | * | 7 | 8 | 9 | * | ## |
150 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
151 * | ## | / | 4 | 5 | 6 | / |------| |------| / | 4 | 5 | 6 | / | ## |
152 * |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
153 * | ## | - | 1 | 2 | 3 | - | | | | - | 1 | 2 | 3 | - | ## |
154 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
155 * | = | + | 0 | , | . | | 0 | , | . | + | = |
156 * `-----------------------------------' `----------------------------------'
157 * ,-------------. ,-------------.
158 * | ## | ## | | ## | ## |
159 * ,------|------|------| |------+------+------.
160 * | | | ## | | ## | | |
161 * | ## | ## |------| |------| ## | ## |
162 * | | | ## | | ## | | |
163 * `--------------------' `--------------------'
164 */
165[NUMB] = LAYOUT_ergodox(
166 // left hand
167 KC_TRNS, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
168 KC_TRNS, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, UM_0x,
169 KC_TRNS, KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH,
170 KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
171 KC_EQL, KC_PLUS, KC_0, KC_COMM, KC_DOT,
172 KC_TRNS, KC_TRNS,
173 KC_TRNS,
174 KC_TRNS, KC_TRNS, KC_TRNS,
175 // right hand
176 KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_TRNS,
177 UM_0x, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
178 KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH, KC_TRNS,
179 KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
180 KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_EQL,
181 KC_TRNS, KC_TRNS,
182 KC_TRNS,
183 KC_TRNS, KC_TRNS, KC_TRNS
184 ),
185/* Keymap 3: Cursor movement
186 *
187 * ,---------------------------------------------------. ,--------------------------------------------------.
188 * | | | | | | | | | | | | | | | |
189 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
190 * | | Home | | Up | | PgUp | | | | PgUp | | Up | | Home | |
191 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
192 * | | End | Left | Down | Right| PgDn |------| |------| PgDn | Left | Down | Right| End | |
193 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
194 * | ## | Up | | Down | ## | | | | | | ## | Down | | Up | ## |
195 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
196 * | Left | Down | Right| | | | | | Left | Down | Right|
197 * `-----------------------------------' `----------------------------------'
198 * ,-------------. ,-------------.
199 * | | | | | |
200 * ,------|------|------| |------+------+------.
201 * | | | | | | | |
202 * | ## | ## |------| |------| ## | ## |
203 * | | | | | | | |
204 * `--------------------' `--------------------'
205 */
206[CRSR] = LAYOUT_ergodox(
207 // left hand
208 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
209 KC_NO, KC_HOME, KC_NO, KC_UP, KC_NO, KC_PGUP, KC_NO,
210 KC_NO, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,
211 KC_TRNS, KC_UP, KC_NO, KC_DOWN, KC_TRNS, KC_NO, KC_NO,
212 KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,
213 KC_NO, KC_NO,
214 KC_NO,
215 KC_TRNS, KC_TRNS, KC_NO,
216 // right hand
217 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
218 KC_NO, KC_PGUP, KC_NO, KC_UP, KC_NO, KC_HOME, KC_NO,
219 KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_NO,
220 KC_NO, KC_NO, KC_TRNS, KC_DOWN, KC_NO, KC_UP, KC_TRNS,
221 KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
222 KC_NO, KC_NO,
223 KC_NO,
224 KC_NO, KC_TRNS, KC_TRNS
225 ),
226/* Keymap 4: Media and mouse keys
227 *
228 * ,--------------------------------------------------. ,--------------------------------------------------.
229 * | | | | | | | | | | | | | | | |
230 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
231 * | | | Lclk | MsUp | Rclk | | | | | | Lclk | MsUp | Rclk | | |
232 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
233 * | | |MsLeft|MsDown|MsRght| |------| |------| |MsLeft|MsDown|MsRght| | |
234 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
235 * | Lclk | MsUp | Rclk |MsDown| | ## | | | | ## | |MsDown| Lclk | MsUp | Rclk |
236 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
237 * |MsLeft|MsDown|MsRight | | | | |MsLeft|MsDown|MsRght|
238 * `----------------------------------' `----------------------------------'
239 * ,-------------. ,-------------.
240 * | | | | | |
241 * ,------|------|------| |------+------+------.
242 * | | | | | | | |
243 * | | |------| |------| | |
244 * | | | | | | | |
245 * `--------------------' `--------------------'
246 */
247[MOUS] = LAYOUT_ergodox(
248 // left hand
249 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
250 KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
251 KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,
252 KC_BTN1, KC_MS_U, KC_BTN2, KC_MS_D, KC_NO, KC_TRNS, KC_NO,
253 KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
254 KC_NO, KC_NO,
255 KC_NO,
256 KC_NO, KC_NO, KC_NO,
257 // right hand
258 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
259 KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
260 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
261 KC_NO, KC_TRNS, KC_NO, KC_MS_D, KC_BTN1, KC_MS_U, KC_BTN2,
262 KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R,
263 KC_NO, KC_NO,
264 KC_NO,
265 KC_NO, KC_NO, KC_NO
266 ),
267/* Keymap 5: Keywords
268 *
269 * ,---------------------------------------------------. ,--------------------------------------------------.
270 * | | | | scarf| sadf | smily| | | | decaf| | | | | |
271 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
272 * | | const| volat| oper | ret | tmpl | | | | typen| cont | prv | pro | pub | |
273 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
274 * | | | str | obj | | gitl |------| |------| | | | nulp | | |
275 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
276 * | | | extr | cls | virt | break| | | |namesp| goodm| goodn| | | |
277 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
278 * | | | inc | | | | | | | | |
279 * `-----------------------------------' `----------------------------------'
280 * ,-------------. ,-------------.
281 * | | | | ecet | ecets|
282 * ,------|------|------| |------+------+------.
283 * | | | | | | | |
284 * | | |------| |------| | |
285 * | | | ## | | ## | | |
286 * `--------------------' `--------------------'
287 */
288[KEYW] = LAYOUT_ergodox(
289 // left hand
290 KC_NO, KC_NO, KC_NO, UM_SCARF, UM_SADF, UM_SMILY, KC_NO,
291 KC_NO, UM_CONST, UM_VOLAT, UM_OPER, UM_RET, UM_TMPL, KC_NO,
292 KC_NO, KC_NO, UM_STR, UM_OBJ, KC_NO, UM_GITLOG,
293 KC_NO, KC_NO, UM_EXTR, UM_CLS, UM_VIRT, UM_BREAK, KC_NO,
294 KC_NO, KC_NO, UM_INC, KC_NO, KC_NO,
295 KC_NO, KC_NO,
296 KC_NO,
297 KC_NO, KC_NO, KC_TRNS,
298 // right hand
299 KC_NO, UM_DECAF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
300 KC_NO, UM_TYPN, UM_CONT, UM_PRV, UM_PRO, UM_PUB, KC_NO,
301 KC_NO, KC_NO, KC_NO, UM_NULP, KC_NO, KC_NO,
302 KC_NO, UM_NAMESP, UM_GOODM, UM_GOODN, KC_NO, KC_NO, KC_NO,
303 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
304 UM_ECET, UM_ECETS,
305 KC_NO,
306 KC_TRNS, KC_NO, KC_NO
307 ),
308/* Keymap 6: emacs
309 *
310 * ,---------------------------------------------------. ,--------------------------------------------------.
311 * | | | | | | | empb | | emnb | emfs | emfb | | | | |
312 * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
313 * | | emtr | | | | | | | | emun | emre | w-up | | | |
314 * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
315 * | | | emwr | | | |------| |------| |w-left|w-down|w-rght| | |
316 * |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
317 * | | | | | | | | | | | |w-down| | | |
318 * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
319 * | | | | | | | | | | | |
320 * `-----------------------------------' `----------------------------------'
321 * ,-------------. ,-------------.
322 * | | | | | |
323 * ,------|------|------| |------+------+------.
324 * | | | | | | | |
325 * | | |------| |------| | |
326 * | | | | | | | |
327 * `--------------------' `--------------------'
328 */
329[EMAC] = LAYOUT_ergodox(
330 // left hand
331 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, UM_EMPB,
332 KC_NO, UM_EMTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
333 KC_NO, KC_NO, UM_EMWR, KC_NO, KC_NO, KC_NO,
334 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
335 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
336 KC_NO, KC_NO,
337 KC_NO,
338 KC_NO, KC_NO, KC_NO,
339 // right hand
340 UM_EMNB, UM_EMFS, UM_EMFB, KC_NO, KC_NO, KC_NO, KC_NO,
341 KC_NO, UM_EMUN, UM_EMRE, LSFT(KC_UP), KC_NO, KC_NO, KC_NO,
342 KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, KC_NO,
343 KC_TRNS, KC_NO, KC_NO, LSFT(KC_DOWN), KC_NO, KC_NO, KC_NO,
344 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
345 KC_NO, KC_NO,
346 KC_NO,
347 KC_NO, KC_NO, KC_NO
348 ),
349};
350
351enum next_key_down_up {
352 NK_DOWN_UP,
353 NK_DOWN,
354 NK_UP // a bit of a hack, this works as long as NK_UP < KC_A
355};
356
357void send_keystrokes(uint8_t key, ...)
358{
359 va_list vl;
360 va_start(vl, key);
361 enum next_key_down_up nkdu = NK_DOWN_UP;
362 while (key != KC_NO) {
363 if (key < KC_A) {
364 nkdu = key;
365 } else {
366 switch (nkdu) {
367 case NK_DOWN_UP:
368 register_code(key);
369 case NK_UP:
370 unregister_code(key);
371 break;
372 case NK_DOWN:
373 register_code(key);
374 }
375 nkdu = NK_DOWN_UP;
376 }
377 key = va_arg(vl, int);
378 }
379 va_end(vl);
380}
381
382const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
383{
384 // MACRODOWN only works in this function
385 switch(id) {
386 case 0: // { }
387 if (record->event.pressed) {
388 return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
389 D(LSFT), T(RBRC), U(LSFT), T(UP),
390 T(TAB), END);
391 }
392 break;
393 case 1:
394 if (record->event.pressed) {
395 return MACRO(T(0), T(X), END);
396 }
397 break;
398 case 2:
399 if (record->event.pressed) {
400 SEND_STRING("public");
401 }
402 break;
403 case 3:
404 if (record->event.pressed) {
405 SEND_STRING("protected");
406 }
407 break;
408 case 4:
409 if (record->event.pressed) {
410 SEND_STRING("private");
411 }
412 break;
413 case 5: // class
414 if (record->event.pressed) {
415 return MACRO(T(C), T(L), T(A), T(S), T(S), T(ENT),
416 D(LSFT), T(LBRC), U(LSFT), T(ENT),
417 T(P), T(U), T(B), T(L), T(I), T(C),
418 D(LSFT), T(SCLN), U(LSFT), T(ENT), T(ENT),
419 T(P), T(R), T(I), T(V), T(A), T(T), T(E),
420 D(LSFT), T(SCLN), U(LSFT), T(ENT),
421 D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
422 T(UP), T(UP), T(UP), T(UP), T(UP), T(UP), T(UP),
423 T(END), T(SPC), END);
424 }
425 break;
426 case 6: // struct
427 if (record->event.pressed) {
428 return MACRO(T(S), T(T), T(R), T(U), T(C), T(T), T(ENT),
429 D(LSFT), T(LBRC), U(LSFT), T(ENT),
430 D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
431 T(UP), T(UP), T(UP), T(UP),
432 T(END), T(SPC), END);
433 }
434 break;
435 case 7:
436 if (record->event.pressed) {
437 SEND_STRING("return");
438 }
439 break;
440 case 8: // #include
441 if (record->event.pressed) {
442 return MACRO(T(NONUS_HASH), T(I), T(N), T(C), T(L), T(U), T(D), T(E), END);
443 }
444 break;
445 case 9:
446 if (record->event.pressed) {
447 SEND_STRING("objdump -CT -x -d");
448 }
449 break;
450 case 10:
451 if (record->event.pressed) {
452 SEND_STRING("git log --oneline --graph --decorate=short");
453 }
454 break;
455 case 11:
456 if (record->event.pressed) {
457 SEND_STRING("good morning");
458 }
459 break;
460 case 12:
461 if (record->event.pressed) {
462 SEND_STRING("namespace");
463 }
464 break;
465 case 14: // emacs toggle read-only
466 if (record->event.pressed) {
467 return MACRO(D(LCTL), T(X), T(Q), U(LCTL), END);
468 }
469 break;
470 case 15: // emacs write buffer
471 if (record->event.pressed) {
472 return MACRO(D(LCTL), T(X), T(S), U(LCTL), END);
473 }
474 break;
475 case 16: // emacs undo
476 if (record->event.pressed) {
477 return MACRO(D(LCTL), D(LSFT), T(MINS), U(LSFT), U(LCTL), END);
478 }
479 break;
480 case 17: // emacs redo
481 if (record->event.pressed) {
482 return MACRO(D(LALT), D(LSFT), T(MINS), U(LSFT), U(LALT), END);
483 }
484 break;
485 case 18: // emacs previous buffer
486 if (record->event.pressed) {
487 return MACRO(D(LCTL), T(X), U(LCTL), T(LEFT), END);
488 }
489 break;
490 case 19: // emacs next buffer
491 if (record->event.pressed) {
492 return MACRO(D(LCTL), T(X), U(LCTL), T(RGHT), END);
493 }
494 break;
495 case 20:
496 if (record->event.pressed) {
497 SEND_STRING("good night");
498 }
499 break;
500 case 22: // { };
501 if (record->event.pressed) {
502 return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
503 D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(UP),
504 T(TAB), END);
505 }
506 break;
507 case 23:
508 if (record->event.pressed) {
509 SEND_STRING("template");
510 }
511 break;
512 case 24:
513 if (record->event.pressed) {
514 SEND_STRING("typename");
515 }
516 break;
517 case 25:
518 if (record->event.pressed) {
519 SEND_STRING("continue");
520 return MACRO(T(SCLN), END);
521 }
522 break;
523 case 26:
524 if (record->event.pressed) {
525 SEND_STRING("break");
526 return MACRO(T(SCLN), END);
527 }
528 break;
529 case 27:
530 if (record->event.pressed) {
531 SEND_STRING("const");
532 }
533 break;
534 case 28:
535 if (record->event.pressed) {
536 SEND_STRING(":-)");
537 }
538 break;
539 case 29:
540 if (record->event.pressed) {
541 SEND_STRING(":-(");
542 }
543 break;
544 case 30: // dazed
545 if (record->event.pressed) {
546 send_keystrokes(NK_DOWN, KC_LSFT, KC_8, KC_MINS, KC_8, NK_UP, KC_LSFT, KC_NO);
547 }
548 break;
549 case 31: // decaf
550 if (record->event.pressed) {
551 send_keystrokes(NK_DOWN, KC_LSFT, KC_C, KC_9, KC_MINS, KC_0, NK_UP, KC_LSFT, KC_NO);
552 }
553 break;
554 case 32:
555 if (record->event.pressed) {
556 SEND_STRING("operator");
557 }
558 break;
559 case 33:
560 if (record->event.pressed) {
561 SEND_STRING("nullptr");
562 }
563 break;
564 case 34:
565 if (record->event.pressed) {
566 SEND_STRING("extern");
567 }
568 break;
569 case 35:
570 if (record->event.pressed) {
571 SEND_STRING("virtual");
572 }
573 break;
574 case 36: // emacs font smaller
575 if (record->event.pressed) {
576 return MACRO(D(LCTL), T(X), T(EQL), U(LCTL), END);
577 }
578 break;
579 case 37: // emacs font bigger
580 if (record->event.pressed) {
581 return MACRO(D(LCTL), T(X), T(MINS), U(LCTL), END);
582 }
583 break;
584 case 38:
585 if (record->event.pressed) {
586 SEND_STRING("volatile");
587 }
588 break;
589 }
590 return MACRO_NONE;
591}
592
593LEADER_EXTERNS();
594
595// Runs constantly in the background, in a loop.
596void matrix_scan_user(void) {
597
598 LEADER_DICTIONARY() {
599 leading = false;
600 leader_end();
601
602 SEQ_TWO_KEYS(KC_G, KC_A) {
603 SEND_STRING("git add .");
604 }
605 SEQ_TWO_KEYS(KC_G, KC_D) {
606 SEND_STRING("git diff");
607 }
608 SEQ_THREE_KEYS(KC_G, KC_D, KC_S) {
609 SEND_STRING("git diff --staged");
610 }
611 SEQ_TWO_KEYS(KC_G, KC_L) {
612 SEND_STRING("git log");
613 }
614 SEQ_THREE_KEYS(KC_G, KC_L, KC_O) {
615 SEND_STRING("git log --oneline");
616 }
617 SEQ_TWO_KEYS(KC_G, KC_F) {
618 SEND_STRING("git fetch");
619 }
620 SEQ_TWO_KEYS(KC_G, KC_O) {
621 SEND_STRING("git checkout");
622 }
623 SEQ_TWO_KEYS(KC_G, KC_P) {
624 SEND_STRING("git pull");
625 }
626 SEQ_TWO_KEYS(KC_G, KC_S) {
627 SEND_STRING("git status");
628 }
629 SEQ_TWO_KEYS(KC_G, KC_C) {
630 SEND_STRING("git commit -m ''");
631 send_keystrokes(KC_LEFT, KC_NO);
632 }
633 SEQ_THREE_KEYS(KC_G, KC_C, KC_A) {
634 SEND_STRING("git commit --amend");
635 }
636
637 SEQ_TWO_KEYS(KC_C, KC_C) {
638 SEND_STRING("const_cast<>");
639 send_keystrokes(KC_LEFT, KC_NO);
640 }
641 SEQ_TWO_KEYS(KC_C, KC_D) {
642 SEND_STRING("dynamic_cast<>");
643 send_keystrokes(KC_LEFT, KC_NO);
644 }
645 SEQ_TWO_KEYS(KC_C, KC_R) {
646 SEND_STRING("reinterpret_cast<>");
647 send_keystrokes(KC_LEFT, KC_NO);
648 }
649 SEQ_TWO_KEYS(KC_C, KC_S) {
650 SEND_STRING("static_cast<>");
651 send_keystrokes(KC_LEFT, KC_NO);
652 }
653
654 SEQ_ONE_KEY(KC_SLSH) {
655 send_keystrokes(KC_SLSH, NK_DOWN, KC_LSFT, KC_8, KC_8, NK_UP, KC_LSFT, KC_ENT,
656 NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_ENT,
657 NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_SLSH, KC_UP, KC_END, KC_SPC,
658 KC_NO);
659 }
660 }
661}