process_underglow.c
6100 bytes
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 uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
20 switch (keycode) {
21 case QK_UNDERGLOW_TOGGLE:
22#if defined(RGBLIGHT_ENABLE)
23 rgblight_toggle();
24#endif
25
26#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
27 rgb_matrix_toggle();
28#endif
29 return false;
30 case QK_UNDERGLOW_MODE_NEXT:
31#if defined(RGBLIGHT_ENABLE)
32 if (shifted) {
33 rgblight_step_reverse();
34 } else {
35 rgblight_step();
36 }
37#endif
38
39#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
40 if (shifted) {
41 rgb_matrix_step_reverse();
42 } else {
43 rgb_matrix_step();
44 }
45#endif
46 return false;
47 case QK_UNDERGLOW_MODE_PREVIOUS:
48#if defined(RGBLIGHT_ENABLE)
49 if (shifted) {
50 rgblight_step();
51 } else {
52 rgblight_step_reverse();
53 }
54#endif
55
56#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
57 if (shifted) {
58 rgb_matrix_step();
59 } else {
60 rgb_matrix_step_reverse();
61 }
62#endif
63 return false;
64 case QK_UNDERGLOW_HUE_UP:
65#if defined(RGBLIGHT_ENABLE)
66 if (shifted) {
67 rgblight_decrease_hue();
68 } else {
69 rgblight_increase_hue();
70 }
71#endif
72
73#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
74 if (shifted) {
75 rgb_matrix_decrease_hue();
76 } else {
77 rgb_matrix_increase_hue();
78 }
79#endif
80 return false;
81 case QK_UNDERGLOW_HUE_DOWN:
82#if defined(RGBLIGHT_ENABLE)
83 if (shifted) {
84 rgblight_increase_hue();
85 } else {
86 rgblight_decrease_hue();
87 }
88#endif
89
90#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
91 if (shifted) {
92 rgb_matrix_increase_hue();
93 } else {
94 rgb_matrix_decrease_hue();
95 }
96#endif
97 return false;
98 case QK_UNDERGLOW_SATURATION_UP:
99#if defined(RGBLIGHT_ENABLE)
100 if (shifted) {
101 rgblight_decrease_sat();
102 } else {
103 rgblight_increase_sat();
104 }
105#endif
106
107#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
108 if (shifted) {
109 rgb_matrix_decrease_sat();
110 } else {
111 rgb_matrix_increase_sat();
112 }
113#endif
114 return false;
115 case QK_UNDERGLOW_SATURATION_DOWN:
116#if defined(RGBLIGHT_ENABLE)
117 if (shifted) {
118 rgblight_increase_sat();
119 } else {
120 rgblight_decrease_sat();
121 }
122#endif
123
124#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
125 if (shifted) {
126 rgb_matrix_increase_sat();
127 } else {
128 rgb_matrix_decrease_sat();
129 }
130#endif
131 return false;
132 case QK_UNDERGLOW_VALUE_UP:
133#if defined(RGBLIGHT_ENABLE)
134 if (shifted) {
135 rgblight_decrease_val();
136 } else {
137 rgblight_increase_val();
138 }
139#endif
140
141#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
142 if (shifted) {
143 rgb_matrix_decrease_val();
144 } else {
145 rgb_matrix_increase_val();
146 }
147#endif
148 return false;
149 case QK_UNDERGLOW_VALUE_DOWN:
150#if defined(RGBLIGHT_ENABLE)
151 if (shifted) {
152 rgblight_increase_val();
153 } else {
154 rgblight_decrease_val();
155 }
156#endif
157
158#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
159 if (shifted) {
160 rgb_matrix_increase_val();
161 } else {
162 rgb_matrix_decrease_val();
163 }
164#endif
165 return false;
166 case QK_UNDERGLOW_SPEED_UP:
167#if defined(RGBLIGHT_ENABLE)
168 if (shifted) {
169 rgblight_decrease_speed();
170 } else {
171 rgblight_increase_speed();
172 }
173#endif
174
175#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
176 if (shifted) {
177 rgb_matrix_decrease_speed();
178 } else {
179 rgb_matrix_increase_speed();
180 }
181#endif
182 return false;
183 case QK_UNDERGLOW_SPEED_DOWN:
184#if defined(RGBLIGHT_ENABLE)
185 if (shifted) {
186 rgblight_increase_speed();
187 } else {
188 rgblight_decrease_speed();
189 }
190#endif
191
192#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
193 if (shifted) {
194 rgb_matrix_increase_speed();
195 } else {
196 rgb_matrix_decrease_speed();
197 }
198#endif
199 return false;
200 }
201 }
202
203 return true;
204}