aboutsummaryrefslogtreecommitdiff
path: root/keyboards/doio/kb03/kb03.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/doio/kb03/kb03.c')
-rw-r--r--keyboards/doio/kb03/kb03.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/keyboards/doio/kb03/kb03.c b/keyboards/doio/kb03/kb03.c
new file mode 100644
index 0000000000..9368bc5d41
--- /dev/null
+++ b/keyboards/doio/kb03/kb03.c
@@ -0,0 +1,64 @@
+// Copyright (C) 2025 DOIO
+// Copyright (C) 2025 ClownFish (@clownfish-og)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case RM_TOGG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable();
+ }
+ return false;
+ }
+ return true;
+}
+
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user()) {
+ return false;
+ }
+
+ hsv_t hsv = {0, 255, 100};
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ hsv = (hsv_t){HSV_RED};
+ break;
+ case 1:
+ hsv = (hsv_t){HSV_GREEN};
+ break;
+ case 2:
+ hsv = (hsv_t){HSV_BLUE};
+ break;
+ case 3:
+ hsv = (hsv_t){HSV_WHITE};
+ break;
+ default:
+ hsv = (hsv_t){HSV_YELLOW};
+ break;
+ }
+ hsv.v = (rgb_matrix_get_val() * 70 / 200) + 30; //set indicator brightness range 30-100, vary based on RGB Matrix brightness
+ rgb_t rgb = hsv_to_rgb(hsv);
+ rgb_matrix_set_color(9, rgb.r, rgb.g, rgb.b);
+ return false;
+}
+
+#endif