qmk_firmware

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

process_rgb_matrix.c (3691B)


      1 // Copyright 2024 QMK
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 
      4 #include "process_rgb_matrix.h"
      5 #include "rgb_matrix.h"
      6 #include "action_util.h"
      7 #include "keycodes.h"
      8 #include "modifiers.h"
      9 
     10 bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
     11 #ifdef RGB_TRIGGER_ON_KEYDOWN
     12     if (record->event.pressed) {
     13 #else
     14     if (!record->event.pressed) {
     15 #endif
     16         bool shifted = get_mods() & MOD_MASK_SHIFT;
     17         switch (keycode) {
     18             case QK_RGB_MATRIX_ON:
     19                 rgb_matrix_enable();
     20                 return false;
     21             case QK_RGB_MATRIX_OFF:
     22                 rgb_matrix_disable();
     23                 return false;
     24             case QK_RGB_MATRIX_TOGGLE:
     25                 rgb_matrix_toggle();
     26                 return false;
     27             case QK_RGB_MATRIX_MODE_NEXT:
     28                 if (shifted) {
     29                     rgb_matrix_step_reverse();
     30                 } else {
     31                     rgb_matrix_step();
     32                 }
     33                 return false;
     34             case QK_RGB_MATRIX_MODE_PREVIOUS:
     35                 if (shifted) {
     36                     rgb_matrix_step();
     37                 } else {
     38                     rgb_matrix_step_reverse();
     39                 }
     40                 return false;
     41             case QK_RGB_MATRIX_HUE_UP:
     42                 if (shifted) {
     43                     rgb_matrix_decrease_hue();
     44                 } else {
     45                     rgb_matrix_increase_hue();
     46                 }
     47                 return false;
     48             case QK_RGB_MATRIX_HUE_DOWN:
     49                 if (shifted) {
     50                     rgb_matrix_increase_hue();
     51                 } else {
     52                     rgb_matrix_decrease_hue();
     53                 }
     54                 return false;
     55             case QK_RGB_MATRIX_SATURATION_UP:
     56                 if (shifted) {
     57                     rgb_matrix_decrease_sat();
     58                 } else {
     59                     rgb_matrix_increase_sat();
     60                 }
     61                 return false;
     62             case QK_RGB_MATRIX_SATURATION_DOWN:
     63                 if (shifted) {
     64                     rgb_matrix_increase_sat();
     65                 } else {
     66                     rgb_matrix_decrease_sat();
     67                 }
     68                 return false;
     69             case QK_RGB_MATRIX_VALUE_UP:
     70                 if (shifted) {
     71                     rgb_matrix_decrease_val();
     72                 } else {
     73                     rgb_matrix_increase_val();
     74                 }
     75                 return false;
     76             case QK_RGB_MATRIX_VALUE_DOWN:
     77                 if (shifted) {
     78                     rgb_matrix_increase_val();
     79                 } else {
     80                     rgb_matrix_decrease_val();
     81                 }
     82                 return false;
     83             case QK_RGB_MATRIX_SPEED_UP:
     84                 if (shifted) {
     85                     rgb_matrix_decrease_speed();
     86                 } else {
     87                     rgb_matrix_increase_speed();
     88                 }
     89                 return false;
     90             case QK_RGB_MATRIX_SPEED_DOWN:
     91                 if (shifted) {
     92                     rgb_matrix_increase_speed();
     93                 } else {
     94                     rgb_matrix_decrease_speed();
     95                 }
     96                 return false;
     97             case QK_RGB_MATRIX_FLAG_NEXT:
     98                 if (shifted) {
     99                     rgb_matrix_flags_step_reverse();
    100                 } else {
    101                     rgb_matrix_flags_step();
    102                 }
    103                 return false;
    104             case QK_RGB_MATRIX_FLAG_PREVIOUS:
    105                 if (shifted) {
    106                     rgb_matrix_flags_step();
    107                 } else {
    108                     rgb_matrix_flags_step_reverse();
    109                 }
    110                 return false;
    111         }
    112     }
    113 
    114     return true;
    115 }