diff options
Diffstat (limited to 'keyboards/keebio/iris/keymaps/transmogrified/keymap.c')
-rw-r--r-- | keyboards/keebio/iris/keymaps/transmogrified/keymap.c | 421 |
1 files changed, 421 insertions, 0 deletions
diff --git a/keyboards/keebio/iris/keymaps/transmogrified/keymap.c b/keyboards/keebio/iris/keymaps/transmogrified/keymap.c new file mode 100644 index 000000000..67545f08e --- /dev/null +++ b/keyboards/keebio/iris/keymaps/transmogrified/keymap.c | |||
@@ -0,0 +1,421 @@ | |||
1 | #include "iris.h" | ||
2 | #include "action_layer.h" | ||
3 | #include "eeconfig.h" | ||
4 | |||
5 | extern keymap_config_t keymap_config; | ||
6 | |||
7 | #define _QWERTY 0 | ||
8 | #define _COLEMAK 1 | ||
9 | #define _RLAYER 2 | ||
10 | #define _LLAYER 3 | ||
11 | #define _DUAL 4 | ||
12 | #define _CONFIG 5 | ||
13 | |||
14 | enum custom_keycodes { | ||
15 | QWERTY = SAFE_RANGE, // qwerty base layer | ||
16 | COLEMAK, // colemak base layer | ||
17 | RLAYER, // right layer | ||
18 | LLAYER, // left layer | ||
19 | RLOCK, // right layer LOCK | ||
20 | LLOCK, // left layer LOCK | ||
21 | DUAL, // right and left combo layer | ||
22 | CONFIG, // config layer | ||
23 | LEDUP, // custom LED brightness increase keycode | ||
24 | LEDDOWN, // custom LED brightness decrease keycode | ||
25 | }; | ||
26 | |||
27 | /* Tap Dance */ | ||
28 | enum { | ||
29 | TD_LGUIAPP, // LGUI x1, app/menu x2 | ||
30 | TD_SHIFTCAPS, // LSHIFT x1, CAPS x3 | ||
31 | TD_CTRLALTDL, // CTRL+ALT+DEL x3 | ||
32 | TD_SHIFTCLAT, // LSHIFT x1, LCRTL x2, LALT x3, CTRL+ALT x4 | ||
33 | }; | ||
34 | |||
35 | /* NOOP Key and Transparent */ | ||
36 | #define KC_ KC_TRNS | ||
37 | #define KC_XXXX KC_NO | ||
38 | |||
39 | /* LAYERS / CUSTOM KEYS */ | ||
40 | #define KC_LLAY LLAYER | ||
41 | #define KC_RLAY RLAYER | ||
42 | #define KC_RLOK RLOCK | ||
43 | #define KC_LLOK LLOCK | ||
44 | #define KC_QWER QWERTY | ||
45 | #define KC_COLE COLEMAK | ||
46 | #define KC_DUAL DUAL | ||
47 | #define KC_CONF CONFIG | ||
48 | #define KC_BLUP LEDUP | ||
49 | #define KC_BLDN LEDDOWN | ||
50 | |||
51 | /* Custom Shortened Keys (4 digits so they fit in my grid) */ | ||
52 | #define KC_MCTB LCTL(KC_TAB) | ||
53 | #define KC_MCST LCTL(LSFT(KC_TAB)) | ||
54 | #define KC_CTEC CTL_T(KC_ESC) | ||
55 | #define KC_SINS LSFT(KC_INS) | ||
56 | #define KC_LGU1 LGUI(KC_1) | ||
57 | #define KC_LGU2 LGUI(KC_2) | ||
58 | #define KC_LGU3 LGUI(KC_3) | ||
59 | #define KC_LGU4 LGUI(KC_4) | ||
60 | #define KC_LGU5 LGUI(KC_5) | ||
61 | #define KC_LGU6 LGUI(KC_6) | ||
62 | #define KC_LGU7 LGUI(KC_7) | ||
63 | #define KC_LGU8 LGUI(KC_8) | ||
64 | #define KC_LGU9 LGUI(KC_9) | ||
65 | #define KC_LGU0 LGUI(KC_0) | ||
66 | #define KC_SYSR KC_SYSREQ | ||
67 | #define KC_REST RESET | ||
68 | |||
69 | /* Tap Dance */ | ||
70 | #define KC_LGUA TD(TD_LGUIAPP) | ||
71 | #define KC_SHCP TD(TD_SHIFTCAPS) | ||
72 | #define KC_CADL TD(TD_CTRLALTDL) | ||
73 | #define KC_SHCA TD(TD_SHIFTCLAT) | ||
74 | |||
75 | |||
76 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
77 | |||
78 | [_QWERTY] = LAYOUT_kc( | ||
79 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
80 | CADL, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC, | ||
81 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
82 | TAB , Q , W , E , R , T , Y , U , I , O , P ,DEL , | ||
83 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
84 | CTEC, A , S , D , F , G , H , J , K , L ,SCLN,ENT , | ||
85 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
86 | SHCP, Z , X , C , V , B ,LLOK, RLOK, N , M ,COMM,DOT ,SLSH,SHCA, | ||
87 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
88 | LALT,LLAY,TAB , SPC ,RLAY,LGUA | ||
89 | // `----+----+----' `----+----+----' | ||
90 | ), | ||
91 | |||
92 | [_COLEMAK] = LAYOUT_kc( | ||
93 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
94 | CADL, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC, | ||
95 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
96 | TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,DEL , | ||
97 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
98 | CTEC, A , R , S , T , D , H , N , E , I , O ,ENT , | ||
99 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
100 | SHCP, Z , X , C , V , B ,LLOK, RLOK, K , M ,COMM,DOT ,SLSH,SHCA, | ||
101 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
102 | LALT,LLAY,TAB , SPC ,RLAY,LGUA | ||
103 | // `----+----+----' `----+----+----' | ||
104 | ), | ||
105 | |||
106 | [_RLAYER] = LAYOUT_kc( | ||
107 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
108 | ,SLCK,SYSR,PSCR,INS ,PAUS, MUTE,VOLD,VOLU,BLDN,BLUP, , | ||
109 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
110 | ,TILD,GRV ,EQL ,LBRC,RBRC, ASTR,HOME, UP ,PGUP,PLUS, , | ||
111 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
112 | ,EXLM,PIPE,DLR ,LPRN,RPRN, AMPR,LEFT,DOWN,RGHT,MINS,QUOT, | ||
113 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
114 | , AT ,HASH,PERC,LCBR,RCBR, , ,CIRC,END ,UNDS,PGDN,BSLS, , | ||
115 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
116 | , , , , , | ||
117 | // `----+----+----' `----+----+----' | ||
118 | ), | ||
119 | |||
120 | [_LLAYER] = LAYOUT_kc( | ||
121 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
122 | , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 , , | ||
123 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
124 | ,XXXX,XXXX, UP , F5 ,XXXX, ASTR, 7 , 8 , 9 ,PLUS, , | ||
125 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
126 | ,XXXX,MCST,DOWN,MCTB,ENT , SLSH, 4 , 5 , 6 ,MINS, , | ||
127 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
128 | ,XXXX,XXXX,BSPC,SINS,SPC ,F11 , F12 ,EQL , 1 , 2 , 3 ,DOT , , | ||
129 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
130 | , , , 0 , , | ||
131 | // `----+----+----' `----+----+----' | ||
132 | ), | ||
133 | |||
134 | [_DUAL] = LAYOUT_kc( | ||
135 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
136 | ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, | ||
137 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
138 | ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,MS_U,XXXX,XXXX,XXXX, | ||
139 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
140 | ,XXXX,XXXX,XXXX,XXXX,XXXX, BTN2,MS_L,MS_D,MS_R,BTN1,XXXX, | ||
141 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
142 | ,LGU1,LGU2,LGU3,LGU4,LGU5,CONF, XXXX,LGU6,LGU7,LGU8,LGU9,LGU0, , | ||
143 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
144 | , , , , , | ||
145 | // `----+----+----' `----+----+----' | ||
146 | ), | ||
147 | |||
148 | [_CONFIG] = LAYOUT_kc( | ||
149 | //,----+----+----+----+----+----. ,----+----+----+----+----+----. | ||
150 | REST,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, | ||
151 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
152 | XXXX,QWER,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, | ||
153 | //|----+----+----+----+----+----| |----+----+----+----+----+----| | ||
154 | XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, | ||
155 | //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| | ||
156 | XXXX,XXXX,XXXX,COLE,XXXX,XXXX, , ,XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, | ||
157 | //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' | ||
158 | XXXX, ,XXXX, XXXX, ,XXXX | ||
159 | // `----+----+----' `----+----+----' | ||
160 | ), | ||
161 | }; | ||
162 | |||
163 | |||
164 | /* VARIABLES */ | ||
165 | // Configurable Variables for layer toggled light | ||
166 | int layerBLStep = 20; // change how much the brightness changes when holding layer key | ||
167 | int breathPulse = 5; // timing of the breathing | ||
168 | int breathPulseStall = 3; // time to pause at top and bottom of breath cycle | ||
169 | int blSteps = 6; // blSteps + 1 is the amount of brightness settings when manually adjusting | ||
170 | |||
171 | // Variables needed for layer locked breathing and layer toggling lighting to work | ||
172 | int counter = 0; | ||
173 | bool breathUp = true; | ||
174 | bool resetBL = false; | ||
175 | bool rlocked = false; | ||
176 | bool llocked = false; | ||
177 | bool configOn = false; | ||
178 | int lockedBLLevel; | ||
179 | int momentaryLBLLevel; | ||
180 | int momentaryRBLLevel; | ||
181 | int currentBL; | ||
182 | /* END VARIABLES */ | ||
183 | |||
184 | /* TAP DANCE */ | ||
185 | void shift_caps_down (qk_tap_dance_state_t *state, void *user_data) { | ||
186 | if (state->count >= 3) { | ||
187 | register_code (KC_CAPS); | ||
188 | } else { | ||
189 | register_code (KC_LSFT); | ||
190 | } | ||
191 | } | ||
192 | void shift_caps_up (qk_tap_dance_state_t *state, void *user_data) { | ||
193 | if (state->count >= 3) { | ||
194 | unregister_code (KC_CAPS); | ||
195 | } else { | ||
196 | unregister_code (KC_LSFT); | ||
197 | } | ||
198 | } | ||
199 | void shift_ctrlalt_down (qk_tap_dance_state_t *state, void *user_data) { | ||
200 | if (state->count >= 4) { | ||
201 | register_code (KC_LCTL); | ||
202 | register_code (KC_LALT); | ||
203 | } else if (state->count == 3) { | ||
204 | register_code (KC_LALT); | ||
205 | } else if (state->count == 2) { | ||
206 | register_code (KC_LCTL); | ||
207 | } else { | ||
208 | register_code (KC_RSFT); | ||
209 | } | ||
210 | } | ||
211 | void shift_ctlalt_up (qk_tap_dance_state_t *state, void *user_data) { | ||
212 | if (state->count >= 4) { | ||
213 | unregister_code (KC_LALT); | ||
214 | unregister_code (KC_LCTL); | ||
215 | } else if (state->count == 3) { | ||
216 | unregister_code (KC_LALT); | ||
217 | } else if (state->count == 2) { | ||
218 | unregister_code (KC_LCTL); | ||
219 | } else { | ||
220 | unregister_code (KC_RSFT); | ||
221 | } | ||
222 | } | ||
223 | void ctrlaltdel_up (qk_tap_dance_state_t *state, void *user_data) { | ||
224 | if (state->count >= 3) { | ||
225 | unregister_code (KC_DEL); | ||
226 | unregister_code (KC_LALT); | ||
227 | unregister_code (KC_LCTL); | ||
228 | } else { | ||
229 | } | ||
230 | } | ||
231 | void ctrlaltdel_down (qk_tap_dance_state_t *state, void *user_data) { | ||
232 | if (state->count >= 3) { | ||
233 | register_code (KC_LCTL); | ||
234 | register_code (KC_LALT); | ||
235 | register_code (KC_DEL); | ||
236 | } else { | ||
237 | } | ||
238 | } | ||
239 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
240 | [TD_LGUIAPP] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_APP), | ||
241 | [TD_SHIFTCAPS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, shift_caps_down, shift_caps_up), | ||
242 | [TD_SHIFTCLAT] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, shift_ctrlalt_down, shift_ctlalt_up), | ||
243 | [TD_CTRLALTDL] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ctrlaltdel_down, ctrlaltdel_up) | ||
244 | }; | ||
245 | /* END TAP DANCE */ | ||
246 | |||
247 | |||
248 | |||
249 | void persistent_default_layer_set(uint16_t default_layer) { | ||
250 | eeconfig_update_default_layer(default_layer); | ||
251 | default_layer_set(default_layer); | ||
252 | } | ||
253 | |||
254 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
255 | switch (keycode) { | ||
256 | case QWERTY: | ||
257 | if (record->event.pressed) { | ||
258 | set_single_persistent_default_layer(_QWERTY); | ||
259 | configOn = false; | ||
260 | if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){ | ||
261 | backlight_toggle(); | ||
262 | } | ||
263 | } | ||
264 | return false; | ||
265 | break; | ||
266 | case COLEMAK: | ||
267 | if (record->event.pressed) { | ||
268 | set_single_persistent_default_layer(_COLEMAK); | ||
269 | configOn = false; | ||
270 | if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){ | ||
271 | backlight_toggle(); | ||
272 | } | ||
273 | } | ||
274 | return false; | ||
275 | break; | ||
276 | case CONFIG: | ||
277 | if (record->event.pressed) { | ||
278 | set_single_persistent_default_layer(_CONFIG); | ||
279 | configOn = true; | ||
280 | if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){ | ||
281 | backlight_toggle(); | ||
282 | } | ||
283 | } | ||
284 | return false; | ||
285 | break; | ||
286 | case RLAYER: | ||
287 | if (record->event.pressed) { | ||
288 | layer_on(_RLAYER); | ||
289 | update_tri_layer(_RLAYER, _LLAYER, _DUAL); | ||
290 | momentaryRBLLevel = get_backlight_level(); | ||
291 | if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){ | ||
292 | for (int i = 0; i < layerBLStep ; i++){ | ||
293 | backlight_increase(); | ||
294 | } | ||
295 | } | ||
296 | } else { | ||
297 | unregister_code(KC_LGUI); | ||
298 | layer_off(_RLAYER); | ||
299 | update_tri_layer(_RLAYER, _LLAYER, _DUAL); | ||
300 | if ( llocked == false && configOn == false ) { | ||
301 | for (int i = 0; i < layerBLStep ; i++){ | ||
302 | backlight_decrease(); | ||
303 | } | ||
304 | } else { | ||
305 | } | ||
306 | rlocked = false; | ||
307 | } | ||
308 | return false; | ||
309 | break; | ||
310 | case LLAYER: | ||
311 | if (record->event.pressed) { | ||
312 | layer_on(_LLAYER); | ||
313 | update_tri_layer(_RLAYER, _LLAYER, _DUAL); | ||
314 | momentaryLBLLevel = get_backlight_level(); | ||
315 | if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){ | ||
316 | for (int i = 0; i < layerBLStep ; i++){ | ||
317 | backlight_increase(); | ||
318 | } | ||
319 | } | ||
320 | } else { | ||
321 | layer_off(_LLAYER); | ||
322 | update_tri_layer(_RLAYER, _LLAYER, _DUAL); | ||
323 | if ( rlocked == false && configOn == false ) { | ||
324 | for (int i = 0; i < layerBLStep ; i++){ | ||
325 | backlight_decrease(); | ||
326 | } | ||
327 | } else { | ||
328 | } | ||
329 | llocked = false; | ||
330 | } | ||
331 | return false; | ||
332 | break; | ||
333 | case RLOCK: | ||
334 | if (record->event.pressed) { | ||
335 | layer_on(_RLAYER); | ||
336 | /* add logic to toggle backlight change when on a layer */ | ||
337 | if (rlocked == false && llocked == false){ | ||
338 | lockedBLLevel = get_backlight_level(); | ||
339 | } | ||
340 | rlocked = true; | ||
341 | } else { | ||
342 | } | ||
343 | return false; | ||
344 | break; | ||
345 | case LLOCK: | ||
346 | if (record->event.pressed) { | ||
347 | layer_on(_LLAYER); | ||
348 | /* add logic to toggle backlight change when on a layer */ | ||
349 | if (rlocked == false && llocked == false){ | ||
350 | lockedBLLevel = get_backlight_level(); | ||
351 | } | ||
352 | llocked = true; | ||
353 | } else { | ||
354 | } | ||
355 | return false; | ||
356 | break; | ||
357 | case LEDUP: | ||
358 | if (record->event.pressed) { | ||
359 | for (int i = 0; i < (BACKLIGHT_LEVELS / blSteps ) ; i++ ){ | ||
360 | backlight_increase(); | ||
361 | } | ||
362 | } else { | ||
363 | } | ||
364 | return false; | ||
365 | break; | ||
366 | case LEDDOWN: | ||
367 | if (record->event.pressed) { | ||
368 | for (int i = 0; i < (BACKLIGHT_LEVELS / blSteps ) ; i++ ){ | ||
369 | backlight_decrease(); | ||
370 | } | ||
371 | } else { | ||
372 | } | ||
373 | return false; | ||
374 | break; | ||
375 | } | ||
376 | return true; | ||
377 | } | ||
378 | |||
379 | |||
380 | // LED breathing when a layer is locked | ||
381 | void matrix_scan_user(void) { | ||
382 | // Only breath if layer is locked | ||
383 | if (lockedBLLevel != 0 && (rlocked || llocked)){ | ||
384 | // counter to slow down the breathing | ||
385 | if (counter >= breathPulse) { | ||
386 | counter = 0; | ||
387 | // iterate brightness up or down | ||
388 | if (breathUp){ | ||
389 | backlight_increase(); | ||
390 | } else { | ||
391 | backlight_decrease(); | ||
392 | } | ||
393 | // figure out if we need to change directions | ||
394 | currentBL = get_backlight_level(); | ||
395 | if (currentBL >= BACKLIGHT_LEVELS){ | ||
396 | breathUp = false; | ||
397 | // make counter a big negative number to add some stall time | ||
398 | counter = ((BACKLIGHT_LEVELS * breathPulseStall) * (-1)); | ||
399 | } else if (currentBL == 0){ | ||
400 | breathUp = true; | ||
401 | // make counter a big negative number to add some stall time | ||
402 | counter = ((BACKLIGHT_LEVELS * breathPulseStall) * (-1)); | ||
403 | } | ||
404 | // make not that we need to change the brightness back to when we started the breathing | ||
405 | resetBL = true; | ||
406 | } else { | ||
407 | counter++; | ||
408 | } | ||
409 | } else { | ||
410 | // get the brightness back to the level it started at | ||
411 | if (resetBL){ | ||
412 | int i = 0; | ||
413 | // i is just there to make sure i don't get stuck in a loop if for some reason get_backlight_level isn't working as expected | ||
414 | while (get_backlight_level() != lockedBLLevel && i <= BACKLIGHT_LEVELS ){ | ||
415 | backlight_step(); | ||
416 | i++; | ||
417 | } | ||
418 | resetBL = false; | ||
419 | } | ||
420 | } | ||
421 | } | ||