diff options
Diffstat (limited to 'keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c')
-rw-r--r-- | keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c | 867 |
1 files changed, 867 insertions, 0 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c new file mode 100644 index 000000000..ed7aede1f --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c | |||
@@ -0,0 +1,867 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | #include "debug.h" | ||
3 | #include "action_layer.h" | ||
4 | #include "version.h" | ||
5 | |||
6 | |||
7 | #include "keymap_german.h" | ||
8 | |||
9 | #include "keymap_nordic.h" | ||
10 | |||
11 | // Define layer names | ||
12 | #define BASE 0 | ||
13 | #define COLEMAK 1 | ||
14 | #define DVORAK 2 | ||
15 | #define SYMB 3 | ||
16 | #define OVERWATCH 4 | ||
17 | #define DIABLO 5 | ||
18 | #define MOUS 6 | ||
19 | |||
20 | //define modifiers | ||
21 | #define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | ||
22 | #define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) | ||
23 | #define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) | ||
24 | |||
25 | //define macro keycodes | ||
26 | #define M_VERSION M(0) | ||
27 | #define M_SYMM M(1) | ||
28 | #define M_SALT M(2) | ||
29 | #define M_HARD M(3) | ||
30 | #define M_MAKE M(4) | ||
31 | #define M_COVECUBE M(5) | ||
32 | #define M_MORESALT M(6) | ||
33 | #define M_DOOMFIST M(7) | ||
34 | |||
35 | |||
36 | //define layer change stuff for underglow indicator | ||
37 | bool skip_leds = false; | ||
38 | bool has_layer_changed = false; | ||
39 | static uint8_t current_layer; | ||
40 | |||
41 | static uint16_t key_timer; | ||
42 | //define diablo macro timer variables | ||
43 | static uint16_t diablo_timer[4]; | ||
44 | static uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30}; | ||
45 | static uint8_t diablo_key_time[4]; | ||
46 | |||
47 | bool check_dtimer(uint8_t dtimer) { | ||
48 | // has the correct number of seconds elapsed (as defined by diablo_times) | ||
49 | return (timer_elapsed(diablo_timer[dtimer]) < ( diablo_key_time[dtimer] * 1000 ) ) ? false : true; | ||
50 | }; | ||
51 | |||
52 | bool checktime(void){ | ||
53 | return (timer_elapsed(key_timer) < 150) ? true : false; | ||
54 | }; | ||
55 | |||
56 | |||
57 | enum custom_keycodes { | ||
58 | PLACEHOLDER = SAFE_RANGE, // can always be here | ||
59 | EPRM, | ||
60 | VRSN, | ||
61 | RGB_SLD, | ||
62 | RGB_0000FF, | ||
63 | RGB_008000, | ||
64 | RGB_FF0000, | ||
65 | RGB_800080, | ||
66 | RGB_00FF90, | ||
67 | KC_DIABLO_CLEAR | ||
68 | }; | ||
69 | |||
70 | #ifdef TAP_DANCE_ENABLE | ||
71 | enum { | ||
72 | SFT_CAP = 0, | ||
73 | TD_DIABLO_J, | ||
74 | TD_CLN, | ||
75 | TD_EGG, | ||
76 | TD_FLSH, | ||
77 | TD_DIABLO_1, | ||
78 | TD_DIABLO_2, | ||
79 | TD_DIABLO_3, | ||
80 | TD_DIABLO_4 | ||
81 | }; | ||
82 | |||
83 | |||
84 | |||
85 | void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
86 | if (state->count == 1) { | ||
87 | register_code (KC_RSFT); | ||
88 | register_code (KC_SCLN); | ||
89 | } else { | ||
90 | register_code (KC_SCLN); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
95 | if (state->count == 1) { | ||
96 | unregister_code (KC_RSFT); | ||
97 | unregister_code (KC_SCLN); | ||
98 | } else { | ||
99 | unregister_code (KC_SCLN); | ||
100 | } | ||
101 | } | ||
102 | |||
103 | void dance_egg (qk_tap_dance_state_t *state, void *user_data) { | ||
104 | if (state->count >= 10) { | ||
105 | SEND_STRING ("Safety dance!"); | ||
106 | reset_tap_dance (state); | ||
107 | } | ||
108 | } | ||
109 | |||
110 | // on each tap, light up one led, from right to left | ||
111 | // on the forth tap, turn them off from right to left | ||
112 | void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) { | ||
113 | if (!skip_leds) { | ||
114 | ergodox_board_led_off(); | ||
115 | ergodox_right_led_1_off(); | ||
116 | ergodox_right_led_2_off(); | ||
117 | ergodox_right_led_3_off(); | ||
118 | skip_leds = true; | ||
119 | } | ||
120 | switch (state->count) { | ||
121 | case 1: | ||
122 | ergodox_right_led_3_on(); | ||
123 | break; | ||
124 | case 2: | ||
125 | ergodox_right_led_2_on(); | ||
126 | break; | ||
127 | case 3: | ||
128 | ergodox_right_led_1_on(); | ||
129 | break; | ||
130 | case 4: | ||
131 | ergodox_right_led_3_off(); | ||
132 | _delay_ms(50); | ||
133 | ergodox_right_led_2_off(); | ||
134 | _delay_ms(50); | ||
135 | ergodox_right_led_1_off(); | ||
136 | |||
137 | } | ||
138 | } | ||
139 | |||
140 | // on the fourth tap, set the keyboard on flash state | ||
141 | void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { | ||
142 | if (state->count >= 4) { | ||
143 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
144 | rgblight_enable(); | ||
145 | rgblight_mode(1); | ||
146 | rgblight_setrgb(0xff,0x00,0x00); | ||
147 | #endif | ||
148 | reset_keyboard(); | ||
149 | reset_tap_dance(state); | ||
150 | } | ||
151 | } | ||
152 | |||
153 | void diablo_tapdance_master (qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) { | ||
154 | if (state->count >= 7) { | ||
155 | diablo_key_time[diablo_key] = diablo_times[0]; | ||
156 | reset_tap_dance(state); | ||
157 | } else { | ||
158 | diablo_key_time[diablo_key] = diablo_times[state->count - 1]; | ||
159 | } | ||
160 | } | ||
161 | |||
162 | void diablo_tapdance1 (qk_tap_dance_state_t *state, void *user_data) { | ||
163 | diablo_tapdance_master (state, user_data, 0); | ||
164 | } | ||
165 | |||
166 | void diablo_tapdance2 (qk_tap_dance_state_t *state, void *user_data) { | ||
167 | diablo_tapdance_master (state, user_data, 1); | ||
168 | } | ||
169 | |||
170 | void diablo_tapdance3 (qk_tap_dance_state_t *state, void *user_data) { | ||
171 | diablo_tapdance_master (state, user_data, 2); | ||
172 | } | ||
173 | |||
174 | void diablo_tapdance4 (qk_tap_dance_state_t *state, void *user_data) { | ||
175 | diablo_tapdance_master (state, user_data, 3); | ||
176 | } | ||
177 | |||
178 | |||
179 | // if the flash state didnt happen, then turn off leds, left to right | ||
180 | void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) { | ||
181 | _delay_ms(200); | ||
182 | ergodox_right_led_1_off(); | ||
183 | _delay_ms(200); | ||
184 | ergodox_right_led_2_off(); | ||
185 | _delay_ms(200); | ||
186 | ergodox_right_led_3_off(); | ||
187 | _delay_ms(500); | ||
188 | skip_leds = false; | ||
189 | } | ||
190 | |||
191 | //Tap Dance Definitions | ||
192 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
193 | //Tap one for Space, and twice for Enter | ||
194 | [SFT_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_LSHIFT, KC_CAPS), | ||
195 | // Special Z | ||
196 | [TD_DIABLO_J] = ACTION_TAP_DANCE_DOUBLE(KC_J, S(KC_J)), | ||
197 | // Once for colin, twice for semi-colin | ||
198 | [TD_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset), | ||
199 | // Tap until you get a surprise | ||
200 | [TD_EGG] = ACTION_TAP_DANCE_FN (dance_egg), | ||
201 | //Once for Blue, Twice for Green, Thrice for Red, and four to flash | ||
202 | [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset), | ||
203 | |||
204 | [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1), | ||
205 | [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), | ||
206 | [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), | ||
207 | [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), | ||
208 | |||
209 | }; | ||
210 | #endif | ||
211 | |||
212 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
213 | /* Keymap 0: Basic layer | ||
214 | * | ||
215 | * | ||
216 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
217 | * | = + | 1 ! | 2 @ | 3 # | 4 $ | 5 % | TG(4)| | TG(4)| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | | ||
218 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
219 | * | TAB | Q | W | E | R | T | TG(3)| |TG(3) | Y | U | I | O | P | \ | | | ||
220 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
221 | * | Bksp | A | S | D | F | G |------| |------| H | J | K | L | ; | ' " | | ||
222 | * |--------+------+------+------+------+------| TG(2)| | TG(2)|------+------+------+------+------+--------| | ||
223 | * | Shift | Z | X | C | V | B | | | | N | M | , < | . > | UP | Shift | | ||
224 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
225 | * | `/SYM| ' " | LGUI | [ { | ] } | | SYMB | ? / | LEFT | DOWN |RIGHT | | ||
226 | * `----------------------------------' `----------------------------------' | ||
227 | * ,--------------. ,--------------. | ||
228 | * |Alt/Ap| Win | | Alt |Ctl/Esc| | ||
229 | * ,------|------|-------| |------+-------+------. | ||
230 | * | | | Home | | PgUp | | | | ||
231 | * | Space| Bksp |-------| |------| DEL |Enter | | ||
232 | * | | | End | | PgDn | | | | ||
233 | * `---------------------' `---------------------' | ||
234 | */ | ||
235 | [BASE] = KEYMAP( | ||
236 | KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), | ||
237 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DIABLO), | ||
238 | KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G, | ||
239 | KC_LSHIFT, CTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), | ||
240 | LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI, KC_LBRACKET,KC_RBRACKET, | ||
241 | |||
242 | ALT_T(KC_APPLICATION), KC_LGUI, | ||
243 | KC_HOME, | ||
244 | KC_SPACE, KC_BSPACE, KC_END, | ||
245 | |||
246 | TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, | ||
247 | TG(DVORAK), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, | ||
248 | KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_QUOTE), | ||
249 | TG(COLEMAK), KC_N, KC_M, KC_COMMA, KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT, | ||
250 | KC_FN1, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, | ||
251 | KC_LALT, CTL_T(KC_ESCAPE), | ||
252 | KC_PGUP, | ||
253 | KC_PGDOWN, KC_DELETE, KC_ENTER | ||
254 | ), | ||
255 | /* Keymap 1: Basic layer | ||
256 | * | ||
257 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
258 | * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | | ||
259 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
260 | * | Del | Q | W | F | P | G | L1 | | L1 | J | L | U | Y | ; | \ | | ||
261 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
262 | * | BkSp | A | R | S | T | D |------| |------| H | N | E | I |O / L2| ' | | ||
263 | * |--------+------+------+------+------+------| OVER | | Meh |------+------+------+------+------+--------| | ||
264 | * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift | | ||
265 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
266 | * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | | ||
267 | * `----------------------------------' `----------------------------------' | ||
268 | * ,-------------. ,-------------. | ||
269 | * | App | LGui | | Alt |Ctrl/Esc| | ||
270 | * ,------|------|------| |------+--------+------. | ||
271 | * | | | Home | | PgUp | | | | ||
272 | * | Space|Backsp|------| |------| Tab |Enter | | ||
273 | * | |ace | End | | PgDn | | | | ||
274 | * `--------------------' `----------------------' | ||
275 | */ | ||
276 | // If it accepts an argument (i.e, is a function), it doesn't need KC_. | ||
277 | // Otherwise, it needs KC_* | ||
278 | [COLEMAK] = KEYMAP( | ||
279 | // left hand | ||
280 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), | ||
281 | KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(DIABLO), | ||
282 | KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, | ||
283 | KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), | ||
284 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LBRACKET,KC_RBRACKET, | ||
285 | ALT_T(KC_APP), KC_LGUI, | ||
286 | KC_HOME, | ||
287 | KC_SPC,KC_BSPC,KC_END, | ||
288 | // right hand | ||
289 | KC_TRANSPARENT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | ||
290 | KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, | ||
291 | KC_H, KC_N, KC_E, KC_I, LT(MOUS, KC_O), KC_QUOTE, | ||
292 | KC_TRANSPARENT,KC_K, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT, | ||
293 | KC_FN1, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, | ||
294 | KC_LALT, CTL_T(KC_ESC), | ||
295 | KC_PGUP, | ||
296 | KC_PGDN,KC_TAB, KC_ENT | ||
297 | ), | ||
298 | /* Keymap 2: Basic layer | ||
299 | * | ||
300 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
301 | * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | \ | | ||
302 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
303 | * | Del | ' | , | . | P | Y | L1 | | L1 | F | G | C | R | L | / | | ||
304 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
305 | * | BkSp | A | O | E | U | I |------| |------| D | H | T | N |S / L2| - | | ||
306 | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| | ||
307 | * | LShift |:/Ctrl| Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift | | ||
308 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
309 | * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | | ||
310 | * `----------------------------------' `----------------------------------' | ||
311 | * ,-------------. ,-------------. | ||
312 | * | App | LGui | | Alt |Ctrl/Esc| | ||
313 | * ,------|------|------| |------+--------+------. | ||
314 | * | | | Home | | PgUp | | | | ||
315 | * | Space|Backsp|------| |------| Tab |Enter | | ||
316 | * | |ace | End | | PgDn | | | | ||
317 | * `--------------------' `----------------------' | ||
318 | */ | ||
319 | // If it accepts an argument (i.e, is a function), it doesn't need KC_. | ||
320 | // Otherwise, it needs KC_* | ||
321 | [DVORAK] = KEYMAP( | ||
322 | // left hand | ||
323 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), | ||
324 | KC_DELT, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(DIABLO), | ||
325 | KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, | ||
326 | KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(OVERWATCH), | ||
327 | LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LBRACKET,KC_RBRACKET, | ||
328 | ALT_T(KC_APP), KC_LGUI, | ||
329 | KC_HOME, | ||
330 | KC_SPC,KC_BSPC,KC_END, | ||
331 | // right hand | ||
332 | KC_TRANSPARENT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, | ||
333 | KC_TRANSPARENT, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, | ||
334 | KC_D, KC_H, KC_T, KC_N, LT(MOUS, KC_S), KC_MINS, | ||
335 | KC_NO,KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSHIFT, | ||
336 | KC_FN1, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, | ||
337 | KC_LALT, CTL_T(KC_ESC), | ||
338 | KC_PGUP, | ||
339 | KC_PGDN,KC_TAB, KC_ENT | ||
340 | ), | ||
341 | |||
342 | /* Keymap 3: Symbol Layer | ||
343 | * | ||
344 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
345 | * | ESC | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | ||
346 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
347 | * | VERSION| ! | @ | { | } | | | | | | + | 7 | 8 | 9 | * | F12 | | ||
348 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
349 | * | MAKE | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | / | PrtSc | | ||
350 | * |--------+------+------+------+------+------| COVE | | |------+------+------+------+------+--------| | ||
351 | * | RESET | % | ^ | [ | ] | ~ | CUBE | | | NUM | 1 | 2 | 3 | = | PAUSE | | ||
352 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
353 | * | LT0 | & | * | : | ; | | 0 | 0 | NUM. | ENT | ENT | | ||
354 | * `----------------------------------' `----------------------------------' | ||
355 | * ,-------------. ,-------------. | ||
356 | * | RGBM | RED | | OFF | SOLID| | ||
357 | * ,------|------|------| |------+------+------. | ||
358 | * | | | GREEN| | | | | | ||
359 | * | RGB | RGB |------| |------| NUM. | NUM0 | | ||
360 | * | DARK |BRITE | BLUE | | | | | | ||
361 | * `--------------------' `--------------------' | ||
362 | */ | ||
363 | [SYMB] = KEYMAP( | ||
364 | KC_ESCAPE,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, | ||
365 | M_VERSION, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, | ||
366 | M_MAKE, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, | ||
367 | TD(TD_FLSH), KC_PERC, KC_CIRC, KC_LBRACKET,KC_RBRACKET,KC_TILD, M_COVECUBE, | ||
368 | KC_NO, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, | ||
369 | RGB_MOD, RGB_0000FF, | ||
370 | RGB_008000, | ||
371 | RGB_VAD, RGB_VAI, RGB_FF0000, | ||
372 | |||
373 | KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | ||
374 | KC_TRANSPARENT, KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, KC_F12, | ||
375 | KC_KP_MINUS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH,KC_PSCREEN, | ||
376 | KC_TRANSPARENT, KC_NUMLOCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, KC_PAUSE, | ||
377 | KC_KP_0, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_ENTER, | ||
378 | RGB_TOG, RGB_SLD, | ||
379 | RGB_HUI, | ||
380 | RGB_HUD, KC_KP_DOT, KC_KP_0 | ||
381 | ), | ||
382 | |||
383 | /* Keymap 4: Customized Overwatch Layout | ||
384 | * | ||
385 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
386 | * | ESC | SALT | SYMM | MORE | DOOM | | | | | F9 | F10 | F11 | F12 | | | | ||
387 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
388 | * | F1 | K | Q | W | E | R | T | | | | | | | | | | ||
389 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
390 | * | TAB | G | A | S | D | F |------| |------| | | | | | | | ||
391 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
392 | * | LCTR | LSHFT| Z | X | C | M | | | | | | | | | | | ||
393 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
394 | * | J | U | I | Y | T | | | | | | | | ||
395 | * `----------------------------------' `----------------------------------' | ||
396 | * ,-------------. ,-------------. | ||
397 | * | O | P | | | | | ||
398 | * ,------|------|------| |------+------+------. | ||
399 | * | | | LGUI | | | | | | ||
400 | * | V | SPACE|------ |------| | Enter| | ||
401 | * | | | H | | | | | | ||
402 | * `--------------------' `--------------------' | ||
403 | */ | ||
404 | [OVERWATCH] = KEYMAP( | ||
405 | KC_ESCAPE, M_SALT, M_SYMM, M_MORESALT, M_DOOMFIST, KC_NO, KC_NO, | ||
406 | KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, | ||
407 | KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, | ||
408 | KC_LCTL, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_M, KC_TRANSPARENT, | ||
409 | KC_G, KC_U, KC_I, KC_Y, KC_T, | ||
410 | KC_O, KC_P, | ||
411 | KC_LGUI, | ||
412 | KC_V, KC_SPACE, KC_H, | ||
413 | |||
414 | KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, | ||
415 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
416 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
417 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
418 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
419 | KC_NO, KC_NO, | ||
420 | KC_NO, | ||
421 | KC_NO, KC_NO, KC_ENTER | ||
422 | ), | ||
423 | |||
424 | /* Keymap 3: | ||
425 | * | ||
426 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
427 | * | ESC | V | D | ALT | | | | | | | | | | | | | ||
428 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
429 | * | TAB | S | I | F | M | T | | | | | | | | | | | ||
430 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
431 | * | Q | 1 | 2 | 3 | 4 | G |------| |------| | | | | | | | ||
432 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
433 | * | NUMLOCK| NUM1 | NUM2 | NUM3 | NUM4 | Z | | | | | | | | | | | ||
434 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
435 | * | LCTL | MAC1 | MAC2 | MAC3 | MAC4 | | | | | | | | ||
436 | * `----------------------------------' `----------------------------------' | ||
437 | * ,-------------. ,-------------. | ||
438 | * | L | J | | | | | ||
439 | * ,------|------|------| |------+------+------. | ||
440 | * | | | G | | | | | | ||
441 | * | SPACE| Q |------ |------| | | | ||
442 | * | SHIFT| ALT | 0MAC | | | | | | ||
443 | * `--------------------' `--------------------' | ||
444 | */ | ||
445 | [DIABLO] = KEYMAP( | ||
446 | KC_ESCAPE, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, | ||
447 | KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRANSPARENT, | ||
448 | KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, | ||
449 | KC_NUMLOCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_Z, KC_NO, | ||
450 | KC_LCTL, TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), | ||
451 | KC_L, KC_J, | ||
452 | KC_F, | ||
453 | SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, | ||
454 | |||
455 | |||
456 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
457 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
458 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
459 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
460 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
461 | KC_NO, KC_NO, | ||
462 | KC_NO, | ||
463 | KC_NO, KC_NO, KC_NO | ||
464 | ), | ||
465 | |||
466 | /* Keymap 4: Media and mouse keys | ||
467 | * | ||
468 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
469 | * | | | | | | | | | | | | | | | | | ||
470 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
471 | * | | | MsUp | | | | | | | | | | | | | | ||
472 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
473 | * | |MsLeft|MsDown|MsRght| | |------| |------| | | Acc0 | Acc1 | Acc2 | | | ||
474 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
475 | * | | Acc0 | Acc1 | Acc2 | | | | | | Play | Stop | Mute |VolDn |VolUp | | | ||
476 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
477 | * | | | | | | | | | | | | | ||
478 | * `----------------------------------' `----------------------------------' | ||
479 | * ,-------------. ,-------------. | ||
480 | * | | | | | | | ||
481 | * ,------|------|------| |------+------+------. | ||
482 | * | | | MWUp | | | | | | ||
483 | * | Lclk | Rclk |------| |------| MBn4 | MBn4 | | ||
484 | * | | | MWDn | | Mclk | | | | ||
485 | * `--------------------' `--------------------' | ||
486 | */ | ||
487 | [MOUS] = KEYMAP( | ||
488 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, | ||
489 | KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, | ||
490 | KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT,KC_NO, KC_NO, | ||
491 | KC_NO, KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO, KC_NO, KC_TRANSPARENT, | ||
492 | KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, | ||
493 | KC_NO,KC_NO, | ||
494 | KC_MS_WH_UP, | ||
495 | KC_MS_BTN1,KC_MS_BTN2,KC_MS_WH_DOWN, | ||
496 | |||
497 | KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, | ||
498 | KC_TRANSPARENT,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, | ||
499 | KC_NO,KC_NO,KC_MS_ACCEL0,KC_MS_ACCEL1,KC_MS_ACCEL2,KC_NO,KC_NO, | ||
500 | KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_STOP,KC_AUDIO_MUTE,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_NO, | ||
501 | KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, | ||
502 | KC_NO,KC_NO, | ||
503 | KC_NO, | ||
504 | KC_MS_BTN3,KC_MS_BTN4,KC_MS_BTN5 | ||
505 | ), | ||
506 | |||
507 | }; | ||
508 | |||
509 | const uint16_t PROGMEM fn_actions[] = { | ||
510 | [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), | ||
511 | // FN1 - Momentary Layer 1 (Symbols) | ||
512 | [2] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_UP), | ||
513 | [3] = ACTION_MODS_TAP_KEY(MOD_RGUI, KC_LEFT), | ||
514 | [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_DOWN), | ||
515 | [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RIGHT), | ||
516 | }; | ||
517 | |||
518 | void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) | ||
519 | { | ||
520 | |||
521 | } | ||
522 | |||
523 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
524 | { | ||
525 | switch(id) { | ||
526 | case 0: | ||
527 | if (record->event.pressed) { | ||
528 | // Output Keyboard Firmware info | ||
529 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
530 | return false; | ||
531 | } | ||
532 | case 1: | ||
533 | if (record->event.pressed) { | ||
534 | // Symmentra "Left Click to win" salt | ||
535 | return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(L), U(LSFT), T(E), T(F), T(T), T(SPACE), T(C), T(L), T(I), T(C), T(K), T(SPACE), T(T), T(O), T(SPACE), T(W), T(I), T(N), D(LSFT), T(1), U(LSFT), T(ENTER), END ); | ||
536 | } | ||
537 | case 2: | ||
538 | if (record->event.pressed) { | ||
539 | //salt salt salt | ||
540 | return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(S), U(LSFT), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(DOT), T(DOT), T(DOT), T(ENTER), END ); | ||
541 | } | ||
542 | case 3: | ||
543 | if (record->event.pressed) { | ||
544 | // your saltiness makes me hard | ||
545 | return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(Y), U(LSFT), T(O), T(U), T(R), T(SPACE), T(S), T(A), T(L), T(T), T(SPACE), T(O), T(N), T(L), T(Y), T(SPACE), T(M), T(A), T(K), T(E), T(S), T(SPACE), T(M), T(Y), T(SPACE), T(P), T(E), T(N), T(I), T(S), T(SPACE), T(T), T(H), T(A), T(T), T(SPACE), T(M), T(U), T(C), T(H), T(SPACE), T(H), T(A), T(R), T(D), T(E), T(R), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), T(E), T(V), T(E), T(N), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(A), T(G), T(G), T(R), T(E), T(S), T(S), T(I), T(V), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END ); | ||
546 | } | ||
547 | case 4: | ||
548 | if (record->event.pressed) { | ||
549 | // make ergodox-ez-drashna-custom-teensy | ||
550 | return MACRO( I(5), T(M), T(A), T(K), T(E), T(SPACE), T(E), T(R), T(G), T(O), T(D), T(O), T(X), T(MINUS), T(E), T(Z), T(MINUS), T(D), T(R), T(A), T(S), T(H), T(N), T(A), T(MINUS), T(C), T(U), T(S), T(T), T(O), T(M), T(MINUS), T(T), T(E), T(E), T(N), T(S), T(Y), T(ENTER), END ); | ||
551 | } | ||
552 | case 5: | ||
553 | if (record->event.pressed) { | ||
554 | //super secret hash | ||
555 | SEND_STRING("supersecrethash"); | ||
556 | return MACRO_NONE; | ||
557 | } | ||
558 | case 6: | ||
559 | if (record->event.pressed) { | ||
560 | // Please sir, can I have some more salt | ||
561 | return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(P), U(LSFT), T(L), T(E), T(A), T(S), T(E), T(SPACE), T(S), T(I), T(R), T(COMMA), T(SPACE), T(C), T(A), T(N), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(H), T(A), T(V), T(E), T(SPACE), T(S), T(O), T(M), T(E), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(S), T(A), T(L), T(T), D(LSFT), T(SLASH), U(LSFT), D(LSFT), T(1), U(LSFT), T(ENTER), END ); | ||
562 | } | ||
563 | break; | ||
564 | case 7: | ||
565 | if (record->event.pressed) { | ||
566 | // DoomFisted | ||
567 | // Hey, look at me. I'm Doomfist, and I'm overpowered! | ||
568 | // All I do is spam punches all day! I'm DPS, tank and | ||
569 | // defense, rolled into one! All I need is team healing to be complete! | ||
570 | return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(H), U(LSFT), T(E), T(Y), T(COMMA), T(SPACE), T(L), T(O), T(O), T(K), T(SPACE), T(A), T(T), T(SPACE), T(M), T(E), T(DOT), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), T(O), T(O), T(M), T(F), T(I), T(S), T(T), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), T(O), T(V), T(E), T(R), T(P), T(O), T(W), T(E), T(R), T(E), T(D), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(D), T(O), T(SPACE), T(I), T(S), T(SPACE), T(S), T(P), T(A), T(M), T(SPACE), T(P), T(U), T(N), T(C), T(H), T(E), T(S), T(SPACE), T(A), T(L), T(L), T(SPACE), T(D), T(A), T(Y), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), D(LSFT), T(P), U(LSFT), D(LSFT), T(S), U(LSFT), T(COMMA), T(SPACE), T(T), T(A), T(N), T(K), T(SPACE), T(A), T(N), T(D), T(SPACE), T(D), T(E), T(F), T(E), T(N), T(S), T(E), T(COMMA), T(SPACE), T(R), T(O), T(L), T(L), T(E), T(D), T(SPACE), T(I), T(N), T(T), T(O), T(SPACE), T(O), T(N), T(E), D(LSFT), T(1), U(LSFT), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(N), T(E), T(E), T(D), T(SPACE), T(I), T(S), T(SPACE), T(T), T(E), T(A), T(M), T(SPACE), T(H), T(E), T(A), T(L), T(I), T(N), T(G), T(SPACE), T(T), T(O), T(SPACE), T(B), T(E), T(SPACE), T(C), T(O), T(M), T(P), T(L), T(E), T(T), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END ); | ||
571 | } | ||
572 | case 8: //MAC1 - Hold for rshift and } on tap | ||
573 | if (record->event.pressed) { | ||
574 | key_timer = timer_read(); | ||
575 | return MACRO(D(LSFT), END ); | ||
576 | } else { | ||
577 | return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END); | ||
578 | }; break; | ||
579 | case 9: //MAC1 - Hold for rshift and } on tap | ||
580 | if (record->event.pressed) { | ||
581 | key_timer = timer_read(); | ||
582 | return MACRO(D(RSFT), END ); | ||
583 | } else { | ||
584 | return checktime() ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END); | ||
585 | }; break; | ||
586 | case 10: //MAC2 - Hold for lctrl and [ on tap | ||
587 | if (record->event.pressed) { | ||
588 | key_timer = timer_read(); | ||
589 | return MACRO(D(LCTL), END ); | ||
590 | } else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END); | ||
591 | }; break; | ||
592 | case 11: //MAC3 - Hold for rctrl and ] on tap | ||
593 | if (record->event.pressed) { | ||
594 | key_timer = timer_read(); | ||
595 | return MACRO(D(RCTL), END ); | ||
596 | } else { | ||
597 | return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END); | ||
598 | }; break; | ||
599 | } | ||
600 | return MACRO_NONE; | ||
601 | }; | ||
602 | |||
603 | |||
604 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
605 | switch (keycode) { | ||
606 | // dynamically generate these. | ||
607 | case EPRM: | ||
608 | if (record->event.pressed) { | ||
609 | eeconfig_init(); | ||
610 | } | ||
611 | return false; | ||
612 | break; | ||
613 | case VRSN: | ||
614 | if (record->event.pressed) { | ||
615 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
616 | } | ||
617 | return false; | ||
618 | break; | ||
619 | case RGB_SLD: | ||
620 | if (record->event.pressed) { | ||
621 | rgblight_mode(1); | ||
622 | } | ||
623 | return false; | ||
624 | break; | ||
625 | |||
626 | case RGB_0000FF: | ||
627 | if (record->event.pressed) { | ||
628 | #ifdef RGBLIGHT_ENABLE | ||
629 | rgblight_enable(); | ||
630 | rgblight_mode(1); | ||
631 | rgblight_setrgb(0x00,0x00,0xff); | ||
632 | #endif | ||
633 | } | ||
634 | return false; | ||
635 | break; | ||
636 | |||
637 | case RGB_008000: | ||
638 | if (record->event.pressed) { | ||
639 | #ifdef RGBLIGHT_ENABLE | ||
640 | rgblight_enable(); | ||
641 | rgblight_mode(1); | ||
642 | rgblight_setrgb(0x00,0x80,0x00); | ||
643 | #endif | ||
644 | } | ||
645 | return false; | ||
646 | break; | ||
647 | |||
648 | case RGB_FF0000: | ||
649 | if (record->event.pressed) { | ||
650 | #ifdef RGBLIGHT_ENABLE | ||
651 | rgblight_enable(); | ||
652 | rgblight_mode(1); | ||
653 | rgblight_setrgb(0xff,0x00,0x00); | ||
654 | #endif | ||
655 | } | ||
656 | return false; | ||
657 | break; | ||
658 | |||
659 | case RGB_800080: | ||
660 | if (record->event.pressed) { | ||
661 | #ifdef RGBLIGHT_ENABLE | ||
662 | rgblight_enable(); | ||
663 | rgblight_mode(1); | ||
664 | rgblight_setrgb(0x80,0x00,0x80); | ||
665 | #endif | ||
666 | } | ||
667 | return false; | ||
668 | break; | ||
669 | |||
670 | case RGB_00FF90: | ||
671 | if (record->event.pressed) { | ||
672 | #ifdef RGBLIGHT_ENABLE | ||
673 | rgblight_enable(); | ||
674 | rgblight_mode(1); | ||
675 | rgblight_setrgb(0x00,0xff,0x90); | ||
676 | #endif | ||
677 | } | ||
678 | return false; | ||
679 | break; | ||
680 | case KC_DIABLO_CLEAR: | ||
681 | if (record->event.pressed) { | ||
682 | uint8_t dtime; | ||
683 | |||
684 | for (dtime = 0; dtime < 4; dtime++) { | ||
685 | diablo_key_time[dtime] = diablo_times[0]; | ||
686 | } | ||
687 | } | ||
688 | return false; | ||
689 | break; | ||
690 | |||
691 | } | ||
692 | return true; | ||
693 | } | ||
694 | |||
695 | void send_diablo_keystroke (uint8_t diablo_key) { | ||
696 | if (current_layer == DIABLO) { | ||
697 | switch (diablo_key) { | ||
698 | case 0: | ||
699 | SEND_STRING("1"); | ||
700 | break; | ||
701 | case 1: | ||
702 | SEND_STRING("2"); | ||
703 | break; | ||
704 | case 2: | ||
705 | SEND_STRING("3"); | ||
706 | break; | ||
707 | case 3: | ||
708 | SEND_STRING("4"); | ||
709 | break; | ||
710 | } | ||
711 | } | ||
712 | } | ||
713 | |||
714 | void run_diablo_macro_check(void) { | ||
715 | uint8_t dtime; | ||
716 | |||
717 | for (dtime = 0; dtime < 4; dtime++) { | ||
718 | if (check_dtimer(dtime) && diablo_key_time[dtime]) { | ||
719 | diablo_timer[dtime] = timer_read(); | ||
720 | send_diablo_keystroke(dtime); | ||
721 | } | ||
722 | } | ||
723 | |||
724 | } | ||
725 | |||
726 | void matrix_init_user(void) { // Runs boot tasks for keyboard | ||
727 | wait_ms(500); | ||
728 | ergodox_board_led_on(); | ||
729 | wait_ms(200); | ||
730 | ergodox_right_led_1_on(); | ||
731 | wait_ms(200); | ||
732 | ergodox_right_led_2_on(); | ||
733 | wait_ms(200); | ||
734 | ergodox_right_led_3_on(); | ||
735 | wait_ms(200); | ||
736 | ergodox_board_led_off(); | ||
737 | wait_ms(200); | ||
738 | ergodox_right_led_1_off(); | ||
739 | wait_ms(200); | ||
740 | ergodox_right_led_2_off(); | ||
741 | wait_ms(200); | ||
742 | ergodox_right_led_3_off(); | ||
743 | |||
744 | |||
745 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
746 | rgblight_enable(); | ||
747 | rgblight_sethsv(195,255,255); | ||
748 | #endif | ||
749 | has_layer_changed = false; | ||
750 | |||
751 | |||
752 | |||
753 | }; | ||
754 | |||
755 | |||
756 | |||
757 | void matrix_scan_user(void) { // runs frequently to update info | ||
758 | uint8_t modifiders = get_mods(); | ||
759 | uint8_t layer = biton32(layer_state); | ||
760 | |||
761 | if (!skip_leds) { | ||
762 | ergodox_board_led_off(); | ||
763 | ergodox_right_led_1_off(); | ||
764 | ergodox_right_led_2_off(); | ||
765 | ergodox_right_led_3_off(); | ||
766 | |||
767 | if ( modifiders & MODS_SHIFT_MASK) { | ||
768 | ergodox_right_led_1_on(); | ||
769 | } | ||
770 | if ( modifiders & MODS_CTRL_MASK) { | ||
771 | ergodox_right_led_2_on(); | ||
772 | } | ||
773 | if ( modifiders & MODS_ALT_MASK) { | ||
774 | ergodox_right_led_3_on(); | ||
775 | } | ||
776 | |||
777 | } | ||
778 | |||
779 | switch (layer) { | ||
780 | case SYMB: | ||
781 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
782 | if (has_layer_changed) { | ||
783 | rgblight_sethsv (240,255,255); | ||
784 | } | ||
785 | #else | ||
786 | ergodox_right_led_3_on(); | ||
787 | #endif | ||
788 | break; | ||
789 | case OVERWATCH: | ||
790 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
791 | if (has_layer_changed) { | ||
792 | rgblight_sethsv (30,255,255); | ||
793 | } | ||
794 | #else | ||
795 | ergodox_right_led_2_on(); | ||
796 | #endif | ||
797 | break; | ||
798 | case DIABLO: | ||
799 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
800 | if (has_layer_changed) { | ||
801 | rgblight_sethsv (0,255,255); | ||
802 | } | ||
803 | #else | ||
804 | ergodox_right_led_1_on(); | ||
805 | #endif | ||
806 | break; | ||
807 | case MOUS: | ||
808 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
809 | if (has_layer_changed) { | ||
810 | rgblight_sethsv (60,255,255); | ||
811 | } | ||
812 | #else | ||
813 | ergodox_right_led_3_on(); | ||
814 | ergodox_right_led_2_on(); | ||
815 | #endif | ||
816 | break; | ||
817 | case COLEMAK: | ||
818 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
819 | if (has_layer_changed) { | ||
820 | rgblight_sethsv (300,255,255); | ||
821 | } | ||
822 | #else | ||
823 | ergodox_right_led_1_on(); | ||
824 | ergodox_right_led_3_on(); | ||
825 | #endif | ||
826 | break; | ||
827 | case DVORAK: | ||
828 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
829 | if (has_layer_changed) { | ||
830 | rgblight_sethsv (120,255,255); | ||
831 | } | ||
832 | #else | ||
833 | ergodox_right_led_2_on(); | ||
834 | ergodox_right_led_1_on(); | ||
835 | #endif | ||
836 | break; | ||
837 | case 7: | ||
838 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
839 | if (has_layer_changed) { | ||
840 | rgblight_sethsv (255,255,255); | ||
841 | } | ||
842 | #else | ||
843 | ergodox_right_led_1_on(); | ||
844 | ergodox_right_led_2_on(); | ||
845 | ergodox_right_led_3_on(); | ||
846 | #endif | ||
847 | break; | ||
848 | default: | ||
849 | // Do not add anything here, as this will be ran EVERY check, and can cause a significant slowdown | ||
850 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
851 | if (has_layer_changed) { | ||
852 | rgblight_sethsv (195,255,255); | ||
853 | } | ||
854 | #endif | ||
855 | break; | ||
856 | } | ||
857 | |||
858 | if (current_layer == layer) { | ||
859 | has_layer_changed = false; | ||
860 | } else { | ||
861 | has_layer_changed = true; | ||
862 | current_layer = layer; | ||
863 | } | ||
864 | run_diablo_macro_check(); | ||
865 | }; | ||
866 | |||
867 | |||