keyboard stuff
1// Copyright 2024 QMK
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include "process_underglow.h"
5#if defined(RGBLIGHT_ENABLE)
6# include "rgblight.h"
7#endif
8#include "action_util.h"
9#include "keycodes.h"
10#include "modifiers.h"
11
12// TODO: Remove this
13#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
14# include "rgb_matrix.h"
15#endif
16
17bool process_underglow(uint16_t keycode, keyrecord_t *record) {
18 if (record->event.pressed) {
19#if defined(RGBLIGHT_ENABLE) || (defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES))
20 const uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
21#endif
22
23 switch (keycode) {
24 case QK_UNDERGLOW_TOGGLE:
25#if defined(RGBLIGHT_ENABLE)
26 rgblight_toggle();
27#endif
28
29#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
30 rgb_matrix_toggle();
31#endif
32 return false;
33 case QK_UNDERGLOW_MODE_NEXT:
34#if defined(RGBLIGHT_ENABLE)
35 if (shifted) {
36 rgblight_step_reverse();
37 } else {
38 rgblight_step();
39 }
40#endif
41
42#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
43 if (shifted) {
44 rgb_matrix_step_reverse();
45 } else {
46 rgb_matrix_step();
47 }
48#endif
49 return false;
50 case QK_UNDERGLOW_MODE_PREVIOUS:
51#if defined(RGBLIGHT_ENABLE)
52 if (shifted) {
53 rgblight_step();
54 } else {
55 rgblight_step_reverse();
56 }
57#endif
58
59#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
60 if (shifted) {
61 rgb_matrix_step();
62 } else {
63 rgb_matrix_step_reverse();
64 }
65#endif
66 return false;
67 case QK_UNDERGLOW_HUE_UP:
68#if defined(RGBLIGHT_ENABLE)
69 if (shifted) {
70 rgblight_decrease_hue();
71 } else {
72 rgblight_increase_hue();
73 }
74#endif
75
76#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
77 if (shifted) {
78 rgb_matrix_decrease_hue();
79 } else {
80 rgb_matrix_increase_hue();
81 }
82#endif
83 return false;
84 case QK_UNDERGLOW_HUE_DOWN:
85#if defined(RGBLIGHT_ENABLE)
86 if (shifted) {
87 rgblight_increase_hue();
88 } else {
89 rgblight_decrease_hue();
90 }
91#endif
92
93#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
94 if (shifted) {
95 rgb_matrix_increase_hue();
96 } else {
97 rgb_matrix_decrease_hue();
98 }
99#endif
100 return false;
101 case QK_UNDERGLOW_SATURATION_UP:
102#if defined(RGBLIGHT_ENABLE)
103 if (shifted) {
104 rgblight_decrease_sat();
105 } else {
106 rgblight_increase_sat();
107 }
108#endif
109
110#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
111 if (shifted) {
112 rgb_matrix_decrease_sat();
113 } else {
114 rgb_matrix_increase_sat();
115 }
116#endif
117 return false;
118 case QK_UNDERGLOW_SATURATION_DOWN:
119#if defined(RGBLIGHT_ENABLE)
120 if (shifted) {
121 rgblight_increase_sat();
122 } else {
123 rgblight_decrease_sat();
124 }
125#endif
126
127#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
128 if (shifted) {
129 rgb_matrix_increase_sat();
130 } else {
131 rgb_matrix_decrease_sat();
132 }
133#endif
134 return false;
135 case QK_UNDERGLOW_VALUE_UP:
136#if defined(RGBLIGHT_ENABLE)
137 if (shifted) {
138 rgblight_decrease_val();
139 } else {
140 rgblight_increase_val();
141 }
142#endif
143
144#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
145 if (shifted) {
146 rgb_matrix_decrease_val();
147 } else {
148 rgb_matrix_increase_val();
149 }
150#endif
151 return false;
152 case QK_UNDERGLOW_VALUE_DOWN:
153#if defined(RGBLIGHT_ENABLE)
154 if (shifted) {
155 rgblight_increase_val();
156 } else {
157 rgblight_decrease_val();
158 }
159#endif
160
161#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
162 if (shifted) {
163 rgb_matrix_increase_val();
164 } else {
165 rgb_matrix_decrease_val();
166 }
167#endif
168 return false;
169 case QK_UNDERGLOW_SPEED_UP:
170#if defined(RGBLIGHT_ENABLE)
171 if (shifted) {
172 rgblight_decrease_speed();
173 } else {
174 rgblight_increase_speed();
175 }
176#endif
177
178#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
179 if (shifted) {
180 rgb_matrix_decrease_speed();
181 } else {
182 rgb_matrix_increase_speed();
183 }
184#endif
185 return false;
186 case QK_UNDERGLOW_SPEED_DOWN:
187#if defined(RGBLIGHT_ENABLE)
188 if (shifted) {
189 rgblight_increase_speed();
190 } else {
191 rgblight_decrease_speed();
192 }
193#endif
194
195#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
196 if (shifted) {
197 rgb_matrix_increase_speed();
198 } else {
199 rgb_matrix_decrease_speed();
200 }
201#endif
202 return false;
203#ifdef VELOCIKEY_ENABLE
204 case QK_VELOCIKEY_TOGGLE:
205 velocikey_toggle();
206 return false;
207#endif
208 }
209 }
210
211 return true;
212}