aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/iris/keymaps/transmogrified/Readme.md9
-rw-r--r--keyboards/iris/keymaps/transmogrified/config.h22
-rw-r--r--keyboards/iris/keymaps/transmogrified/keymap.c330
3 files changed, 214 insertions, 147 deletions
diff --git a/keyboards/iris/keymaps/transmogrified/Readme.md b/keyboards/iris/keymaps/transmogrified/Readme.md
new file mode 100644
index 000000000..96e27411d
--- /dev/null
+++ b/keyboards/iris/keymaps/transmogrified/Readme.md
@@ -0,0 +1,9 @@
1This layout is an attempt to make switching between the Iris and my laptop keyboard as seemless as possible. I switch caps lock and Ctrl/ESC on my laptop and I am able to adjust well with everything else... I still miss the Iris, but I am able to get work done.
2
3I use the following lighting queues to indicate layer changes.
4
5* Momentary toggled layer : LEDs brighten and dim when layer is released.
6* Locked layer : LEDs breath.
7* Config layer locked : LEDs off.
8
9NOTE you will need to flash both sides to update the brightness_levels so that breathing works on both sides as expected.
diff --git a/keyboards/iris/keymaps/transmogrified/config.h b/keyboards/iris/keymaps/transmogrified/config.h
index 8df0824b7..12f2d7d6d 100644
--- a/keyboards/iris/keymaps/transmogrified/config.h
+++ b/keyboards/iris/keymaps/transmogrified/config.h
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright 2017 Danny Nguyen <danny@keeb.io> 2Copyright 2017 Adam Roberts <adam+gh@bikuman.com>
3 3
4This program is free software: you can redistribute it and/or modify 4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by 5it under the terms of the GNU General Public License as published by
@@ -15,11 +15,7 @@ You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>. 15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18 18#pragma once
19#ifndef CONFIG_USER_H
20#define CONFIG_USER_H
21
22#include "config_common.h"
23 19
24/* Use I2C or Serial, not both */ 20/* Use I2C or Serial, not both */
25 21
@@ -27,8 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
27// #define USE_I2C 23// #define USE_I2C
28 24
29/* Select hand configuration */ 25/* Select hand configuration */
30 26//#define MASTER_LEFT
31// #define MASTER_LEFT
32#define MASTER_RIGHT 27#define MASTER_RIGHT
33// #define EE_HANDS 28// #define EE_HANDS
34 29
@@ -39,4 +34,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
39#define RGBLIGHT_SAT_STEP 8 34#define RGBLIGHT_SAT_STEP 8
40#define RGBLIGHT_VAL_STEP 8 35#define RGBLIGHT_VAL_STEP 8
41 36
42#endif 37#define NO_USB_STARTUP_CHECK //keep both sides on when pc is sleeping.
38#define TAPPING_TERM 200
39
40// Remove features i don't use
41#define NO_ACTION_ONESHOT
42#define NO_ACTION_MACRO
43
44// Override the rev2 config.h BACKLIGHT_LEVELS setting
45#undef BACKLIGHT_LEVELS
46#define BACKLIGHT_LEVELS 125
diff --git a/keyboards/iris/keymaps/transmogrified/keymap.c b/keyboards/iris/keymaps/transmogrified/keymap.c
index 43d6cc600..67545f08e 100644
--- a/keyboards/iris/keymaps/transmogrified/keymap.c
+++ b/keyboards/iris/keymaps/transmogrified/keymap.c
@@ -2,64 +2,55 @@
2#include "action_layer.h" 2#include "action_layer.h"
3#include "eeconfig.h" 3#include "eeconfig.h"
4 4
5// config settings
6#define TAPPING_TERM 250
7#define ONESHOT_TAP_TOGGLE 1
8#define ONESHOT_TIMEOUT 10000
9
10extern keymap_config_t keymap_config; 5extern keymap_config_t keymap_config;
11 6
12#define _QWERTY 0 7#define _QWERTY 0
13#define _COLEMAK 1 8#define _COLEMAK 1
14#define _DVORAK 2 9#define _RLAYER 2
15#define _ONEHANDR 3 10#define _LLAYER 3
16#define _ONEHANDL 4 11#define _DUAL 4
17#define _RLAYER 5 12#define _CONFIG 5
18#define _LLAYER 6
19#define _DUAL 7
20#define _CONFIG 8
21 13
22enum custom_keycodes { 14enum custom_keycodes {
23 QWERTY = SAFE_RANGE, 15 QWERTY = SAFE_RANGE, // qwerty base layer
24 COLEMAK, 16 COLEMAK, // colemak base layer
25 DVORAK, 17 RLAYER, // right layer
26 ONEHANDR, 18 LLAYER, // left layer
27 ONEHANDL, 19 RLOCK, // right layer LOCK
28 RLAYER, 20 LLOCK, // left layer LOCK
29 LLAYER, 21 DUAL, // right and left combo layer
30 RLOCK, 22 CONFIG, // config layer
31 LLOCK, 23 LEDUP, // custom LED brightness increase keycode
32 DUAL, 24 LEDDOWN, // custom LED brightness decrease keycode
33 CONFIG,
34}; 25};
35 26
36/* Tap Dance */ 27/* Tap Dance */
37enum { 28enum {
38 TD_LGUIAPP, 29 TD_LGUIAPP, // LGUI x1, app/menu x2
39 TD_SHIFTCAPS, 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
40}; 33};
41 34
42/* NOOP Key and Transparent */ 35/* NOOP Key and Transparent */
43#define KC_ KC_TRNS 36#define KC_ KC_TRNS
44#define KC_XXXX KC_NO 37#define KC_XXXX KC_NO
45 38
46/* LAYERS */ 39/* LAYERS / CUSTOM KEYS */
47#define KC_LLAY LLAYER 40#define KC_LLAY LLAYER
48#define KC_RLAY RLAYER 41#define KC_RLAY RLAYER
49#define KC_RLOK RLOCK 42#define KC_RLOK RLOCK
50#define KC_LLOK LLOCK 43#define KC_LLOK LLOCK
51#define KC_QWER QWERTY 44#define KC_QWER QWERTY
52#define KC_DVOR DVORAK
53#define KC_COLE COLEMAK 45#define KC_COLE COLEMAK
54#define KC_ONER ONEHANDR
55#define KC_ONEL ONEHANDL
56#define KC_DUAL DUAL 46#define KC_DUAL DUAL
57#define KC_CONF CONFIG 47#define KC_CONF CONFIG
48#define KC_BLUP LEDUP
49#define KC_BLDN LEDDOWN
58 50
59/* Custom Shortened Keys */ 51/* Custom Shortened Keys (4 digits so they fit in my grid) */
60#define KC_MCTB LCTL(KC_TAB) 52#define KC_MCTB LCTL(KC_TAB)
61#define KC_MCST LCTL(LSFT(KC_TAB)) 53#define KC_MCST LCTL(LSFT(KC_TAB))
62#define KC_MCAD LALT(LCTL(KC_DEL))
63#define KC_CTEC CTL_T(KC_ESC) 54#define KC_CTEC CTL_T(KC_ESC)
64#define KC_SINS LSFT(KC_INS) 55#define KC_SINS LSFT(KC_INS)
65#define KC_LGU1 LGUI(KC_1) 56#define KC_LGU1 LGUI(KC_1)
@@ -72,27 +63,27 @@ enum {
72#define KC_LGU8 LGUI(KC_8) 63#define KC_LGU8 LGUI(KC_8)
73#define KC_LGU9 LGUI(KC_9) 64#define KC_LGU9 LGUI(KC_9)
74#define KC_LGU0 LGUI(KC_0) 65#define KC_LGU0 LGUI(KC_0)
75#define KC_BLUP BL_INC
76#define KC_BLDN BL_DEC
77#define KC_SYSR KC_SYSREQ 66#define KC_SYSR KC_SYSREQ
78#define KC_REST RESET 67#define KC_REST RESET
79 68
80/* Tap Dance */ 69/* Tap Dance */
81#define KC_LGUA TD(TD_LGUIAPP) 70#define KC_LGUA TD(TD_LGUIAPP)
82#define KC_SHCL TD(TD_SHIFTCAPS) 71#define KC_SHCP TD(TD_SHIFTCAPS)
72#define KC_CADL TD(TD_CTRLALTDL)
73#define KC_SHCA TD(TD_SHIFTCLAT)
83 74
84 75
85const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 76const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
86 77
87 [_QWERTY] = LAYOUT_kc( 78 [_QWERTY] = LAYOUT_kc(
88 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 79 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
89 XXXX, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC, 80 CADL, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
90 //|----+----+----+----+----+----| |----+----+----+----+----+----| 81 //|----+----+----+----+----+----| |----+----+----+----+----+----|
91 TAB , Q , W , E , R , T , Y , U , I , O , P ,DEL , 82 TAB , Q , W , E , R , T , Y , U , I , O , P ,DEL ,
92 //|----+----+----+----+----+----| |----+----+----+----+----+----| 83 //|----+----+----+----+----+----| |----+----+----+----+----+----|
93 CTEC, A , S , D , F , G , H , J , K , L ,SCLN,ENT , 84 CTEC, A , S , D , F , G , H , J , K , L ,SCLN,ENT ,
94 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| 85 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
95 SHCL, Z , X , C , V , B ,LLOK, RLOK, N , M ,COMM,DOT ,SLSH,RSFT, 86 SHCP, Z , X , C , V , B ,LLOK, RLOK, N , M ,COMM,DOT ,SLSH,SHCA,
96 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' 87 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
97 LALT,LLAY,TAB , SPC ,RLAY,LGUA 88 LALT,LLAY,TAB , SPC ,RLAY,LGUA
98 // `----+----+----' `----+----+----' 89 // `----+----+----' `----+----+----'
@@ -100,60 +91,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
100 91
101 [_COLEMAK] = LAYOUT_kc( 92 [_COLEMAK] = LAYOUT_kc(
102 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 93 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
103 XXXX, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC, 94 CADL, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
104 //|----+----+----+----+----+----| |----+----+----+----+----+----| 95 //|----+----+----+----+----+----| |----+----+----+----+----+----|
105 TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,DEL , 96 TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,DEL ,
106 //|----+----+----+----+----+----| |----+----+----+----+----+----| 97 //|----+----+----+----+----+----| |----+----+----+----+----+----|
107 CTEC, A , R , S , T , D , H , N , E , I , O ,ENT , 98 CTEC, A , R , S , T , D , H , N , E , I , O ,ENT ,
108 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| 99 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
109 SHCL, Z , X , C , V , B ,LLOK, RLOK, K , M ,COMM,DOT ,SLSH,RSFT, 100 SHCP, Z , X , C , V , B ,LLOK, RLOK, K , M ,COMM,DOT ,SLSH,SHCA,
110 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
111 LALT,LLAY,TAB , SPC ,RLAY,LGUA
112 // `----+----+----' `----+----+----'
113 ),
114
115 [_DVORAK] = LAYOUT_kc(
116 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
117 XXXX, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
118 //|----+----+----+----+----+----| |----+----+----+----+----+----|
119 TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,SLSH,
120 //|----+----+----+----+----+----| |----+----+----+----+----+----|
121 CTEC, A , O , E , U , I , D , H , T , N , S ,ENT ,
122 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
123 SHCL,SCLN, Q , J , K , X ,LLOK, RLOK, B , M , W , V , Z ,EQL ,
124 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' 101 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
125 LALT,LLAY,TAB , SPC ,RLAY,LGUA 102 LALT,LLAY,TAB , SPC ,RLAY,LGUA
126 // `----+----+----' `----+----+----' 103 // `----+----+----' `----+----+----'
127 ), 104 ),
128 105
129 [_ONEHANDR] = LAYOUT_kc(
130 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
131 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 6 , 7 , 8 , 9 , 0 ,BSPC,
132 //|----+----+----+----+----+----| |----+----+----+----+----+----|
133 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, Y , U , I , O , P ,DEL ,
134 //|----+----+----+----+----+----| |----+----+----+----+----+----|
135 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, H , J , K , L ,SCLN,QUOT,
136 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
137 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,QWER, XXXX, N , M ,COMM,DOT ,SLSH,RSFT,
138 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
139 XXXX,XXXX,XXXX, SPC ,ONEL,ENT
140 // `----+----+----' `----+----+----'
141 ),
142
143 [_ONEHANDL] = LAYOUT_kc(
144 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
145 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 5 , 4 , 3 , 2 , 1 ,XXXX,
146 //|----+----+----+----+----+----| |----+----+----+----+----+----|
147 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, T , R , E , W , Q ,TAB ,
148 //|----+----+----+----+----+----| |----+----+----+----+----+----|
149 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, G , F , D , S , A ,ENT ,
150 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
151 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX, B , V , C , X , Z ,SHCL,
152 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
153 XXXX,XXXX,XXXX, SPC ,ONEL,ENT
154 // `----+----+----' `----+----+----'
155 ),
156
157 [_RLAYER] = LAYOUT_kc( 106 [_RLAYER] = LAYOUT_kc(
158 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 107 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
159 ,SLCK,SYSR,PSCR,INS ,PAUS, MUTE,VOLD,VOLU,BLDN,BLUP, , 108 ,SLCK,SYSR,PSCR,INS ,PAUS, MUTE,VOLD,VOLU,BLDN,BLUP, ,
@@ -163,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
163 ,EXLM,PIPE,DLR ,LPRN,RPRN, AMPR,LEFT,DOWN,RGHT,MINS,QUOT, 112 ,EXLM,PIPE,DLR ,LPRN,RPRN, AMPR,LEFT,DOWN,RGHT,MINS,QUOT,
164 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| 113 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
165 , AT ,HASH,PERC,LCBR,RCBR, , ,CIRC,END ,UNDS,PGDN,BSLS, , 114 , AT ,HASH,PERC,LCBR,RCBR, , ,CIRC,END ,UNDS,PGDN,BSLS, ,
166 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' 115 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
167 , , , , , 116 , , , , ,
168 // `----+----+----' `----+----+----' 117 // `----+----+----' `----+----+----'
169 ), 118 ),
@@ -186,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
186 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 135 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
187 ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 136 ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,
188 //|----+----+----+----+----+----| |----+----+----+----+----+----| 137 //|----+----+----+----+----+----| |----+----+----+----+----+----|
189 ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,MS_U,XXXX,XXXX,MCAD, 138 ,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,MS_U,XXXX,XXXX,XXXX,
190 //|----+----+----+----+----+----| |----+----+----+----+----+----| 139 //|----+----+----+----+----+----| |----+----+----+----+----+----|
191 ,XXXX,XXXX,XXXX,XXXX,XXXX, BTN2,MS_L,MS_D,MS_R,BTN1,XXXX, 140 ,XXXX,XXXX,XXXX,XXXX,XXXX, BTN2,MS_L,MS_D,MS_R,BTN1,XXXX,
192 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| 141 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
@@ -200,9 +149,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
200 //,----+----+----+----+----+----. ,----+----+----+----+----+----. 149 //,----+----+----+----+----+----. ,----+----+----+----+----+----.
201 REST,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 150 REST,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,
202 //|----+----+----+----+----+----| |----+----+----+----+----+----| 151 //|----+----+----+----+----+----| |----+----+----+----+----+----|
203 XXXX,QWER,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,ONER,XXXX,XXXX, 152 XXXX,QWER,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,
204 //|----+----+----+----+----+----| |----+----+----+----+----+----| 153 //|----+----+----+----+----+----| |----+----+----+----+----+----|
205 XXXX,XXXX,XXXX,DVOR,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 154 XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,
206 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| 155 //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
207 XXXX,XXXX,XXXX,COLE,XXXX,XXXX, , ,XXXX,XXXX,XXXX,XXXX,XXXX,XXXX, 156 XXXX,XXXX,XXXX,COLE,XXXX,XXXX, , ,XXXX,XXXX,XXXX,XXXX,XXXX,XXXX,
208 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' 157 //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
@@ -212,6 +161,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
212}; 161};
213 162
214 163
164/* VARIABLES */
165// Configurable Variables for layer toggled light
166int layerBLStep = 20; // change how much the brightness changes when holding layer key
167int breathPulse = 5; // timing of the breathing
168int breathPulseStall = 3; // time to pause at top and bottom of breath cycle
169int 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
172int counter = 0;
173bool breathUp = true;
174bool resetBL = false;
175bool rlocked = false;
176bool llocked = false;
177bool configOn = false;
178int lockedBLLevel;
179int momentaryLBLLevel;
180int momentaryRBLLevel;
181int currentBL;
182/* END VARIABLES */
183
215/* TAP DANCE */ 184/* TAP DANCE */
216void shift_caps_down (qk_tap_dance_state_t *state, void *user_data) { 185void shift_caps_down (qk_tap_dance_state_t *state, void *user_data) {
217 if (state->count >= 3) { 186 if (state->count >= 3) {
@@ -220,7 +189,6 @@ void shift_caps_down (qk_tap_dance_state_t *state, void *user_data) {
220 register_code (KC_LSFT); 189 register_code (KC_LSFT);
221 } 190 }
222} 191}
223
224void shift_caps_up (qk_tap_dance_state_t *state, void *user_data) { 192void shift_caps_up (qk_tap_dance_state_t *state, void *user_data) {
225 if (state->count >= 3) { 193 if (state->count >= 3) {
226 unregister_code (KC_CAPS); 194 unregister_code (KC_CAPS);
@@ -228,54 +196,90 @@ void shift_caps_up (qk_tap_dance_state_t *state, void *user_data) {
228 unregister_code (KC_LSFT); 196 unregister_code (KC_LSFT);
229 } 197 }
230} 198}
199void 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}
211void 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}
223void 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}
231void 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}
231qk_tap_dance_action_t tap_dance_actions[] = { 239qk_tap_dance_action_t tap_dance_actions[] = {
232 [TD_LGUIAPP] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_APP), 240 [TD_LGUIAPP] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_APP),
233 [TD_SHIFTCAPS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, shift_caps_down, shift_caps_up) 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)
234}; 244};
235
236/* END TAP DANCE */ 245/* END TAP DANCE */
237 246
238 247
248
239void persistent_default_layer_set(uint16_t default_layer) { 249void persistent_default_layer_set(uint16_t default_layer) {
240 eeconfig_update_default_layer(default_layer); 250 eeconfig_update_default_layer(default_layer);
241 default_layer_set(default_layer); 251 default_layer_set(default_layer);
242} 252}
243 253
244/* Variables for layer light toggling */
245static uint16_t currentBL = 0;
246static uint16_t rlocked = 0;
247static uint16_t llocked = 0;
248
249bool process_record_user(uint16_t keycode, keyrecord_t *record) { 254bool process_record_user(uint16_t keycode, keyrecord_t *record) {
250 switch (keycode) { 255 switch (keycode) {
251 case QWERTY: 256 case QWERTY:
252 if (record->event.pressed) { 257 if (record->event.pressed) {
253 set_single_persistent_default_layer(_QWERTY); 258 set_single_persistent_default_layer(_QWERTY);
259 configOn = false;
260 if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){
261 backlight_toggle();
262 }
254 } 263 }
255 return false; 264 return false;
256 break; 265 break;
257 case COLEMAK: 266 case COLEMAK:
258 if (record->event.pressed) { 267 if (record->event.pressed) {
259 set_single_persistent_default_layer(_COLEMAK); 268 set_single_persistent_default_layer(_COLEMAK);
260 } 269 configOn = false;
261 return false; 270 if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){
262 break; 271 backlight_toggle();
263 case ONEHANDR: 272 }
264 if (record->event.pressed) {
265 set_single_persistent_default_layer(_ONEHANDR);
266 }
267 return false;
268 break;
269 case DVORAK:
270 if (record->event.pressed) {
271 set_single_persistent_default_layer(_DVORAK);
272 } 273 }
273 return false; 274 return false;
274 break; 275 break;
275 case CONFIG: 276 case CONFIG:
276 if (record->event.pressed) { 277 if (record->event.pressed) {
277 set_single_persistent_default_layer(_CONFIG); 278 set_single_persistent_default_layer(_CONFIG);
278 backlight_toggle(); 279 configOn = true;
280 if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){
281 backlight_toggle();
282 }
279 } 283 }
280 return false; 284 return false;
281 break; 285 break;
@@ -283,22 +287,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
283 if (record->event.pressed) { 287 if (record->event.pressed) {
284 layer_on(_RLAYER); 288 layer_on(_RLAYER);
285 update_tri_layer(_RLAYER, _LLAYER, _DUAL); 289 update_tri_layer(_RLAYER, _LLAYER, _DUAL);
286 /* add logic to toggle backlight change when on a layer */ 290 momentaryRBLLevel = get_backlight_level();
287 currentBL = get_backlight_level(); 291 if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){
288 if ( currentBL == 0 || currentBL == 1 ) { 292 for (int i = 0; i < layerBLStep ; i++){
289 backlight_set(5); 293 backlight_increase();
290 } else { 294 }
291 backlight_set(0);
292 } 295 }
293 } else { 296 } else {
294 unregister_code(KC_LGUI); 297 unregister_code(KC_LGUI);
295 rlocked = 0;
296 layer_off(_RLAYER); 298 layer_off(_RLAYER);
297 update_tri_layer(_RLAYER, _LLAYER, _DUAL); 299 update_tri_layer(_RLAYER, _LLAYER, _DUAL);
298 if ( llocked == 0 ) { 300 if ( llocked == false && configOn == false ) {
299 backlight_set(currentBL); 301 for (int i = 0; i < layerBLStep ; i++){
302 backlight_decrease();
303 }
300 } else { 304 } else {
301 } 305 }
306 rlocked = false;
302 } 307 }
303 return false; 308 return false;
304 break; 309 break;
@@ -306,21 +311,22 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
306 if (record->event.pressed) { 311 if (record->event.pressed) {
307 layer_on(_LLAYER); 312 layer_on(_LLAYER);
308 update_tri_layer(_RLAYER, _LLAYER, _DUAL); 313 update_tri_layer(_RLAYER, _LLAYER, _DUAL);
309 /* add logic to toggle backlight change when on a layer */ 314 momentaryLBLLevel = get_backlight_level();
310 currentBL = get_backlight_level(); 315 if (momentaryRBLLevel != 0 || momentaryLBLLevel != 0){
311 if ( currentBL == 0 || currentBL == 1 ) { 316 for (int i = 0; i < layerBLStep ; i++){
312 backlight_set(5); 317 backlight_increase();
313 } else { 318 }
314 backlight_set(0);
315 } 319 }
316 } else { 320 } else {
317 llocked = 0;
318 layer_off(_LLAYER); 321 layer_off(_LLAYER);
319 update_tri_layer(_RLAYER, _LLAYER, _DUAL); 322 update_tri_layer(_RLAYER, _LLAYER, _DUAL);
320 if ( rlocked == 0 ) { 323 if ( rlocked == false && configOn == false ) {
321 backlight_set(currentBL); 324 for (int i = 0; i < layerBLStep ; i++){
325 backlight_decrease();
326 }
322 } else { 327 } else {
323 } 328 }
329 llocked = false;
324 } 330 }
325 return false; 331 return false;
326 break; 332 break;
@@ -328,13 +334,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
328 if (record->event.pressed) { 334 if (record->event.pressed) {
329 layer_on(_RLAYER); 335 layer_on(_RLAYER);
330 /* add logic to toggle backlight change when on a layer */ 336 /* add logic to toggle backlight change when on a layer */
331 rlocked = 1; 337 if (rlocked == false && llocked == false){
332 currentBL = get_backlight_level(); 338 lockedBLLevel = get_backlight_level();
333 if ( currentBL == 0 || currentBL == 1 ) {
334 backlight_set(5);
335 } else {
336 backlight_set(0);
337 } 339 }
340 rlocked = true;
338 } else { 341 } else {
339 } 342 }
340 return false; 343 return false;
@@ -343,25 +346,76 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
343 if (record->event.pressed) { 346 if (record->event.pressed) {
344 layer_on(_LLAYER); 347 layer_on(_LLAYER);
345 /* add logic to toggle backlight change when on a layer */ 348 /* add logic to toggle backlight change when on a layer */
346 llocked = 1; 349 if (rlocked == false && llocked == false){
347 currentBL = get_backlight_level(); 350 lockedBLLevel = get_backlight_level();
348 if ( currentBL == 0 || currentBL == 1 ) { 351 }
349 backlight_set(5); 352 llocked = true;
350 } else { 353 } else {
351 backlight_set(0); 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();
352 } 361 }
353 } else { 362 } else {
354 } 363 }
355 return false; 364 return false;
356 break; 365 break;
357 case ONEHANDL: 366 case LEDDOWN:
358 if (record->event.pressed) { 367 if (record->event.pressed) {
359 layer_on(_ONEHANDL); 368 for (int i = 0; i < (BACKLIGHT_LEVELS / blSteps ) ; i++ ){
369 backlight_decrease();
370 }
360 } else { 371 } else {
361 layer_off(_ONEHANDL);
362 } 372 }
363 return false; 373 return false;
364 break; 374 break;
365 } 375 }
366 return true; 376 return true;
367} 377}
378
379
380// LED breathing when a layer is locked
381void 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}