aboutsummaryrefslogtreecommitdiff
path: root/users/drashna/rgb_stuff.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/drashna/rgb_stuff.c')
-rw-r--r--users/drashna/rgb_stuff.c100
1 files changed, 27 insertions, 73 deletions
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index 6723ad4bf..1665638cf 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -28,7 +28,7 @@ void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight
28static rgblight_fadeout lights[RGBLED_NUM]; 28static rgblight_fadeout lights[RGBLED_NUM];
29 29
30/* Handler for fading/twinkling effect */ 30/* Handler for fading/twinkling effect */
31void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive 31void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
32 bool litup = false; 32 bool litup = false;
33 33
34 for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) { 34 for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) {
@@ -38,21 +38,15 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rg
38 38
39 if (light->life) { 39 if (light->life) {
40 light->life -= 1; 40 light->life -= 1;
41 if (get_highest_layer(layer_state) == 0) { 41 if (get_highest_layer(layer_state) == 0) { sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]); }
42 sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
43 }
44 light->timer = sync_timer_read(); 42 light->timer = sync_timer_read();
45 } else { 43 } else {
46 if (light->enabled && get_highest_layer(layer_state) == 0) { 44 if (light->enabled && get_highest_layer(layer_state) == 0) { rgblight_sethsv_default_helper(light_index); }
47 rgblight_sethsv_default_helper(light_index);
48 }
49 litup = light->enabled = false; 45 litup = light->enabled = false;
50 } 46 }
51 } 47 }
52 } 48 }
53 if (litup && get_highest_layer(layer_state) == 0) { 49 if (litup && get_highest_layer(layer_state) == 0) { rgblight_set(); }
54 rgblight_set();
55 }
56} 50}
57 51
58/* Triggers a LED to fade/twinkle. 52/* Triggers a LED to fade/twinkle.
@@ -98,9 +92,7 @@ void start_rgb_light(void) {
98bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { 92bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
99 uint16_t temp_keycode = keycode; 93 uint16_t temp_keycode = keycode;
100 // Filter out the actual keycode from MT and LT keys. 94 // Filter out the actual keycode from MT and LT keys.
101 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { 95 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { temp_keycode &= 0xFF; }
102 temp_keycode &= 0xFF;
103 }
104 96
105 switch (temp_keycode) { 97 switch (temp_keycode) {
106# ifdef RGBLIGHT_TWINKLE 98# ifdef RGBLIGHT_TWINKLE
@@ -110,11 +102,9 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
110 case KC_KP_SLASH ... KC_KP_DOT: 102 case KC_KP_SLASH ... KC_KP_DOT:
111 case KC_F13 ... KC_F24: 103 case KC_F13 ... KC_F24:
112 case KC_AUDIO_MUTE ... KC_MEDIA_REWIND: 104 case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
113 if (record->event.pressed) { 105 if (record->event.pressed) { start_rgb_light(); }
114 start_rgb_light();
115 }
116 break; 106 break;
117# endif // RGBLIGHT_TWINKLE 107# endif // RGBLIGHT_TWINKLE
118 } 108 }
119 return true; 109 return true;
120} 110}
@@ -129,9 +119,7 @@ static uint16_t rgblight_startup_loop_timer;
129void keyboard_post_init_rgb_light(void) { 119void keyboard_post_init_rgb_light(void) {
130# if defined(RGBLIGHT_STARTUP_ANIMATION) 120# if defined(RGBLIGHT_STARTUP_ANIMATION)
131 is_enabled = rgblight_is_enabled(); 121 is_enabled = rgblight_is_enabled();
132 if (userspace_config.rgb_layer_change) { 122 if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
133 rgblight_enable_noeeprom();
134 }
135 if (rgblight_is_enabled()) { 123 if (rgblight_is_enabled()) {
136 layer_state_set_rgb_light(layer_state); 124 layer_state_set_rgb_light(layer_state);
137 old_hue = rgblight_get_hue(); 125 old_hue = rgblight_get_hue();
@@ -145,7 +133,7 @@ void keyboard_post_init_rgb_light(void) {
145void matrix_scan_rgb_light(void) { 133void matrix_scan_rgb_light(void) {
146# ifdef RGBLIGHT_TWINKLE 134# ifdef RGBLIGHT_TWINKLE
147 scan_rgblight_fadeout(); 135 scan_rgblight_fadeout();
148# endif // RGBLIGHT_ENABLE 136# endif // RGBLIGHT_ENABLE
149 137
150# if defined(RGBLIGHT_STARTUP_ANIMATION) 138# if defined(RGBLIGHT_STARTUP_ANIMATION)
151 if (is_rgblight_startup && is_keyboard_master()) { 139 if (is_rgblight_startup && is_keyboard_master()) {
@@ -156,12 +144,8 @@ void matrix_scan_rgb_light(void) {
156 rgblight_startup_loop_timer = sync_timer_read(); 144 rgblight_startup_loop_timer = sync_timer_read();
157 if (counter == 255) { 145 if (counter == 255) {
158 is_rgblight_startup = false; 146 is_rgblight_startup = false;
159 if (!is_enabled) { 147 if (!is_enabled) { rgblight_disable_noeeprom(); }
160 rgblight_disable_noeeprom(); 148 if (userspace_config.rgb_layer_change) { layer_state_set_rgb_light(layer_state); }
161 }
162 if (userspace_config.rgb_layer_change) {
163 layer_state_set_rgb_light(layer_state);
164 }
165 } 149 }
166 } 150 }
167 } 151 }
@@ -179,55 +163,25 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
179 if (userspace_config.rgb_layer_change) { 163 if (userspace_config.rgb_layer_change) {
180 switch (get_highest_layer(state | default_layer_state)) { 164 switch (get_highest_layer(state | default_layer_state)) {
181 case _MACROS: // mouse 165 case _MACROS: // mouse
182 if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { 166 if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); }
183 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
184 }
185 break;
186 case _MEDIA:
187 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
188 break;
189 case _GAMEPAD:
190 rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
191 break;
192 case _DIABLO:
193 rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
194 break;
195 case _RAISE:
196 rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3);
197 break;
198 case _LOWER:
199 rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
200 break;
201 case _ADJUST:
202 rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
203 break;
204 case _COLEMAK:
205 rgblight_set_hsv_and_mode(HSV_MAGENTA, RGBLIGHT_MODE_STATIC_LIGHT);
206 break;
207 case _DVORAK:
208 rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, RGBLIGHT_MODE_STATIC_LIGHT);
209 break;
210 case _WORKMAN:
211 rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_STATIC_LIGHT);
212 break;
213 case _NORMAN:
214 rgblight_set_hsv_and_mode(HSV_CORAL, RGBLIGHT_MODE_STATIC_LIGHT);
215 break;
216 case _MALTRON:
217 rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_STATIC_LIGHT);
218 break;
219 case _EUCALYN:
220 rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_STATIC_LIGHT);
221 break;
222 case _CARPLAX:
223 rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_STATIC_LIGHT);
224 break;
225 default:
226 rgblight_set_hsv_and_mode(HSV_CYAN, RGBLIGHT_MODE_STATIC_LIGHT);
227 break; 167 break;
168 case _MEDIA: rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); break;
169 case _GAMEPAD: rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2); break;
170 case _DIABLO: rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3); break;
171 case _RAISE: rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3); break;
172 case _LOWER: rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3); break;
173 case _ADJUST: rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); break;
174 case _COLEMAK: rgblight_set_hsv_and_mode(HSV_MAGENTA, RGBLIGHT_MODE_STATIC_LIGHT); break;
175 case _DVORAK: rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, RGBLIGHT_MODE_STATIC_LIGHT); break;
176 case _WORKMAN: rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_STATIC_LIGHT); break;
177 case _NORMAN: rgblight_set_hsv_and_mode(HSV_CORAL, RGBLIGHT_MODE_STATIC_LIGHT); break;
178 case _MALTRON: rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_STATIC_LIGHT); break;
179 case _EUCALYN: rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_STATIC_LIGHT); break;
180 case _CARPLAX: rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_STATIC_LIGHT); break;
181 default: rgblight_set_hsv_and_mode(HSV_CYAN, RGBLIGHT_MODE_STATIC_LIGHT); break;
228 } 182 }
229 } 183 }
230# endif // RGBLIGHT_ENABLE 184# endif // RGBLIGHT_ENABLE
231 185
232 return state; 186 return state;
233} 187}