summaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_underglow.c
diff options
context:
space:
mode:
authorIlya Zhuravlev <whatever@xyz.is>2024-09-07 19:49:19 -0600
committerIlya Zhuravlev <whatever@xyz.is>2024-09-07 19:49:19 -0600
commita780dd1cb1736b67b2139bf15cb93c932108e8fd (patch)
tree6e9bccf1700bfd804643aba6aed8ce219f03b40d /quantum/process_keycode/process_underglow.c
parentbb7961c3c27666c154393bca22aef31f8e60f5b9 (diff)
parentf0435451446621a0e768c8a9123789b239a325b4 (diff)
Merge remote-tracking branch 'qmk/master' into merge-2024-09-07
Diffstat (limited to 'quantum/process_keycode/process_underglow.c')
-rw-r--r--quantum/process_keycode/process_underglow.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/quantum/process_keycode/process_underglow.c b/quantum/process_keycode/process_underglow.c
new file mode 100644
index 0000000000..779672ac07
--- /dev/null
+++ b/quantum/process_keycode/process_underglow.c
@@ -0,0 +1,91 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "process_underglow.h"
+#include "rgblight.h"
+#include "action_util.h"
+#include "keycodes.h"
+#include "modifiers.h"
+
+bool process_underglow(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
+ switch (keycode) {
+ case QK_UNDERGLOW_TOGGLE:
+ rgblight_toggle();
+ return false;
+ case QK_UNDERGLOW_MODE_NEXT:
+ if (shifted) {
+ rgblight_step_reverse();
+ } else {
+ rgblight_step();
+ }
+ return false;
+ case QK_UNDERGLOW_MODE_PREVIOUS:
+ if (shifted) {
+ rgblight_step();
+ } else {
+ rgblight_step_reverse();
+ }
+ return false;
+ case QK_UNDERGLOW_HUE_UP:
+ if (shifted) {
+ rgblight_decrease_hue();
+ } else {
+ rgblight_increase_hue();
+ }
+ return false;
+ case QK_UNDERGLOW_HUE_DOWN:
+ if (shifted) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ return false;
+ case QK_UNDERGLOW_SATURATION_UP:
+ if (shifted) {
+ rgblight_decrease_sat();
+ } else {
+ rgblight_increase_sat();
+ }
+ return false;
+ case QK_UNDERGLOW_SATURATION_DOWN:
+ if (shifted) {
+ rgblight_increase_sat();
+ } else {
+ rgblight_decrease_sat();
+ }
+ return false;
+ case QK_UNDERGLOW_VALUE_UP:
+ if (shifted) {
+ rgblight_decrease_val();
+ } else {
+ rgblight_increase_val();
+ }
+ return false;
+ case QK_UNDERGLOW_VALUE_DOWN:
+ if (shifted) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ return false;
+ case QK_UNDERGLOW_SPEED_UP:
+ if (shifted) {
+ rgblight_decrease_speed();
+ } else {
+ rgblight_increase_speed();
+ }
+ return false;
+ case QK_UNDERGLOW_SPEED_DOWN:
+ if (shifted) {
+ rgblight_increase_speed();
+ } else {
+ rgblight_decrease_speed();
+ }
+ return false;
+ }
+ }
+
+ return true;
+}