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.c94
1 files changed, 66 insertions, 28 deletions
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index 1665638cf..8a0866539 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,15 +38,21 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgb
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) { sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]); } 41 if (get_highest_layer(layer_state) == 0) {
42 sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
43 }
42 light->timer = sync_timer_read(); 44 light->timer = sync_timer_read();
43 } else { 45 } else {
44 if (light->enabled && get_highest_layer(layer_state) == 0) { rgblight_sethsv_default_helper(light_index); } 46 if (light->enabled && get_highest_layer(layer_state) == 0) {
47 rgblight_sethsv_default_helper(light_index);
48 }
45 litup = light->enabled = false; 49 litup = light->enabled = false;
46 } 50 }
47 } 51 }
48 } 52 }
49 if (litup && get_highest_layer(layer_state) == 0) { rgblight_set(); } 53 if (litup && get_highest_layer(layer_state) == 0) {
54 rgblight_set();
55 }
50} 56}
51 57
52/* Triggers a LED to fade/twinkle. 58/* Triggers a LED to fade/twinkle.
@@ -92,7 +98,9 @@ void start_rgb_light(void) {
92bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { 98bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
93 uint16_t temp_keycode = keycode; 99 uint16_t temp_keycode = keycode;
94 // Filter out the actual keycode from MT and LT keys. 100 // Filter out the actual keycode from MT and LT keys.
95 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { temp_keycode &= 0xFF; } 101 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
102 temp_keycode &= 0xFF;
103 }
96 104
97 switch (temp_keycode) { 105 switch (temp_keycode) {
98# ifdef RGBLIGHT_TWINKLE 106# ifdef RGBLIGHT_TWINKLE
@@ -102,9 +110,11 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
102 case KC_KP_SLASH ... KC_KP_DOT: 110 case KC_KP_SLASH ... KC_KP_DOT:
103 case KC_F13 ... KC_F24: 111 case KC_F13 ... KC_F24:
104 case KC_AUDIO_MUTE ... KC_MEDIA_REWIND: 112 case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
105 if (record->event.pressed) { start_rgb_light(); } 113 if (record->event.pressed) {
114 start_rgb_light();
115 }
106 break; 116 break;
107# endif // RGBLIGHT_TWINKLE 117# endif // RGBLIGHT_TWINKLE
108 } 118 }
109 return true; 119 return true;
110} 120}
@@ -119,7 +129,9 @@ static uint16_t rgblight_startup_loop_timer;
119void keyboard_post_init_rgb_light(void) { 129void keyboard_post_init_rgb_light(void) {
120# if defined(RGBLIGHT_STARTUP_ANIMATION) 130# if defined(RGBLIGHT_STARTUP_ANIMATION)
121 is_enabled = rgblight_is_enabled(); 131 is_enabled = rgblight_is_enabled();
122 if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); } 132 if (userspace_config.rgb_layer_change) {
133 rgblight_enable_noeeprom();
134 }
123 if (rgblight_is_enabled()) { 135 if (rgblight_is_enabled()) {
124 layer_state_set_rgb_light(layer_state); 136 layer_state_set_rgb_light(layer_state);
125 old_hue = rgblight_get_hue(); 137 old_hue = rgblight_get_hue();
@@ -133,7 +145,7 @@ void keyboard_post_init_rgb_light(void) {
133void matrix_scan_rgb_light(void) { 145void matrix_scan_rgb_light(void) {
134# ifdef RGBLIGHT_TWINKLE 146# ifdef RGBLIGHT_TWINKLE
135 scan_rgblight_fadeout(); 147 scan_rgblight_fadeout();
136# endif // RGBLIGHT_ENABLE 148# endif // RGBLIGHT_ENABLE
137 149
138# if defined(RGBLIGHT_STARTUP_ANIMATION) 150# if defined(RGBLIGHT_STARTUP_ANIMATION)
139 if (is_rgblight_startup && is_keyboard_master()) { 151 if (is_rgblight_startup && is_keyboard_master()) {
@@ -144,8 +156,12 @@ void matrix_scan_rgb_light(void) {
144 rgblight_startup_loop_timer = sync_timer_read(); 156 rgblight_startup_loop_timer = sync_timer_read();
145 if (counter == 255) { 157 if (counter == 255) {
146 is_rgblight_startup = false; 158 is_rgblight_startup = false;
147 if (!is_enabled) { rgblight_disable_noeeprom(); } 159 if (!is_enabled) {
148 if (userspace_config.rgb_layer_change) { layer_state_set_rgb_light(layer_state); } 160 rgblight_disable_noeeprom();
161 }
162 if (userspace_config.rgb_layer_change) {
163 layer_state_set_rgb_light(layer_state);
164 }
149 } 165 }
150 } 166 }
151 } 167 }
@@ -162,26 +178,48 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
162# ifdef RGBLIGHT_ENABLE 178# ifdef RGBLIGHT_ENABLE
163 if (userspace_config.rgb_layer_change) { 179 if (userspace_config.rgb_layer_change) {
164 switch (get_highest_layer(state | default_layer_state)) { 180 switch (get_highest_layer(state | default_layer_state)) {
165 case _MACROS: // mouse 181 case _MOUSE: // mouse
166 if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); } 182 if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) {
183# if defined(RGBLIGHT_EFFECT_TWINKLE)
184 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
185# else
186 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
187# endif
188 }
189 break;
190 case _MEDIA:
191 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
192 break;
193 case _GAMEPAD:
194 rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
195 break;
196 case _DIABLO:
197 rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
198 break;
199 case _RAISE:
200 rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3);
201 break;
202 case _LOWER:
203 rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
204 break;
205 case _ADJUST:
206 rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
207 break;
208 case _DEFAULT_LAYER_1:
209 rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
210 break;
211 case _DEFAULT_LAYER_2:
212 rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
213 break;
214 case _DEFAULT_LAYER_3:
215 rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
216 break;
217 case _DEFAULT_LAYER_4:
218 rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
167 break; 219 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;
182 } 220 }
183 } 221 }
184# endif // RGBLIGHT_ENABLE 222# endif // RGBLIGHT_ENABLE
185 223
186 return state; 224 return state;
187} 225}