qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

kb03.c (1790B)


      1 // Copyright (C) 2025 DOIO
      2 // Copyright (C) 2025 ClownFish (@clownfish-og)
      3 // SPDX-License-Identifier: GPL-2.0-or-later
      4 
      5 #include "quantum.h"
      6 
      7 #ifdef RGB_MATRIX_ENABLE
      8 
      9 bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
     10     if (!process_record_user(keycode, record)) {
     11         return false;
     12     }
     13     switch (keycode) {
     14         case RM_TOGG:
     15             if (record->event.pressed) {
     16                 switch (rgb_matrix_get_flags()) {
     17                     case LED_FLAG_ALL: {
     18                         rgb_matrix_set_flags(LED_FLAG_NONE);
     19                         rgb_matrix_set_color_all(0, 0, 0);
     20                     } break;
     21                     default: {
     22                         rgb_matrix_set_flags(LED_FLAG_ALL);
     23                     } break;
     24                 }
     25             }
     26             if (!rgb_matrix_is_enabled()) {
     27                 rgb_matrix_set_flags(LED_FLAG_ALL);
     28                 rgb_matrix_enable();
     29             }
     30             return false;
     31     }
     32     return true;
     33 }
     34 
     35 bool rgb_matrix_indicators_kb(void) {
     36     if (!rgb_matrix_indicators_user()) {
     37         return false;
     38     }
     39 
     40     hsv_t hsv = {0, 255, 100};
     41     switch (get_highest_layer(layer_state)) {
     42         case 0:
     43             hsv = (hsv_t){HSV_RED};
     44             break;
     45         case 1:
     46             hsv = (hsv_t){HSV_GREEN};
     47             break;
     48         case 2:
     49             hsv = (hsv_t){HSV_BLUE};
     50             break;
     51         case 3:
     52             hsv = (hsv_t){HSV_WHITE};
     53             break;
     54         default:
     55             hsv = (hsv_t){HSV_YELLOW};
     56             break;
     57         }
     58     hsv.v     = (rgb_matrix_get_val() * 70 / 200) + 30; //set indicator brightness range 30-100, vary based on RGB Matrix brightness
     59     rgb_t rgb = hsv_to_rgb(hsv);
     60     rgb_matrix_set_color(9, rgb.r, rgb.g, rgb.b);
     61     return false;
     62 }
     63 
     64 #endif