qmk_firmware

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

process_underglow.c (6358B)


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