process_underglow.c 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. // Copyright 2024 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "process_underglow.h"
  4. #if defined(RGBLIGHT_ENABLE)
  5. # include "rgblight.h"
  6. #endif
  7. #include "action_util.h"
  8. #include "keycodes.h"
  9. #include "modifiers.h"
  10. // TODO: Remove this
  11. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  12. # include "rgb_matrix.h"
  13. #endif
  14. bool process_underglow(uint16_t keycode, keyrecord_t *record) {
  15. if (record->event.pressed) {
  16. uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
  17. switch (keycode) {
  18. case QK_UNDERGLOW_TOGGLE:
  19. #if defined(RGBLIGHT_ENABLE)
  20. rgblight_toggle();
  21. #endif
  22. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  23. rgb_matrix_toggle();
  24. #endif
  25. return false;
  26. case QK_UNDERGLOW_MODE_NEXT:
  27. #if defined(RGBLIGHT_ENABLE)
  28. if (shifted) {
  29. rgblight_step_reverse();
  30. } else {
  31. rgblight_step();
  32. }
  33. #endif
  34. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  35. if (shifted) {
  36. rgb_matrix_step_reverse();
  37. } else {
  38. rgb_matrix_step();
  39. }
  40. #endif
  41. return false;
  42. case QK_UNDERGLOW_MODE_PREVIOUS:
  43. #if defined(RGBLIGHT_ENABLE)
  44. if (shifted) {
  45. rgblight_step();
  46. } else {
  47. rgblight_step_reverse();
  48. }
  49. #endif
  50. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  51. if (shifted) {
  52. rgb_matrix_step();
  53. } else {
  54. rgb_matrix_step_reverse();
  55. }
  56. #endif
  57. return false;
  58. case QK_UNDERGLOW_HUE_UP:
  59. #if defined(RGBLIGHT_ENABLE)
  60. if (shifted) {
  61. rgblight_decrease_hue();
  62. } else {
  63. rgblight_increase_hue();
  64. }
  65. #endif
  66. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  67. if (shifted) {
  68. rgb_matrix_decrease_hue();
  69. } else {
  70. rgb_matrix_increase_hue();
  71. }
  72. #endif
  73. return false;
  74. case QK_UNDERGLOW_HUE_DOWN:
  75. #if defined(RGBLIGHT_ENABLE)
  76. if (shifted) {
  77. rgblight_increase_hue();
  78. } else {
  79. rgblight_decrease_hue();
  80. }
  81. #endif
  82. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  83. if (shifted) {
  84. rgb_matrix_increase_hue();
  85. } else {
  86. rgb_matrix_decrease_hue();
  87. }
  88. #endif
  89. return false;
  90. case QK_UNDERGLOW_SATURATION_UP:
  91. #if defined(RGBLIGHT_ENABLE)
  92. if (shifted) {
  93. rgblight_decrease_sat();
  94. } else {
  95. rgblight_increase_sat();
  96. }
  97. #endif
  98. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  99. if (shifted) {
  100. rgb_matrix_decrease_sat();
  101. } else {
  102. rgb_matrix_increase_sat();
  103. }
  104. #endif
  105. return false;
  106. case QK_UNDERGLOW_SATURATION_DOWN:
  107. #if defined(RGBLIGHT_ENABLE)
  108. if (shifted) {
  109. rgblight_increase_sat();
  110. } else {
  111. rgblight_decrease_sat();
  112. }
  113. #endif
  114. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  115. if (shifted) {
  116. rgb_matrix_increase_sat();
  117. } else {
  118. rgb_matrix_decrease_sat();
  119. }
  120. #endif
  121. return false;
  122. case QK_UNDERGLOW_VALUE_UP:
  123. #if defined(RGBLIGHT_ENABLE)
  124. if (shifted) {
  125. rgblight_decrease_val();
  126. } else {
  127. rgblight_increase_val();
  128. }
  129. #endif
  130. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  131. if (shifted) {
  132. rgb_matrix_decrease_val();
  133. } else {
  134. rgb_matrix_increase_val();
  135. }
  136. #endif
  137. return false;
  138. case QK_UNDERGLOW_VALUE_DOWN:
  139. #if defined(RGBLIGHT_ENABLE)
  140. if (shifted) {
  141. rgblight_increase_val();
  142. } else {
  143. rgblight_decrease_val();
  144. }
  145. #endif
  146. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  147. if (shifted) {
  148. rgb_matrix_increase_val();
  149. } else {
  150. rgb_matrix_decrease_val();
  151. }
  152. #endif
  153. return false;
  154. case QK_UNDERGLOW_SPEED_UP:
  155. #if defined(RGBLIGHT_ENABLE)
  156. if (shifted) {
  157. rgblight_decrease_speed();
  158. } else {
  159. rgblight_increase_speed();
  160. }
  161. #endif
  162. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  163. if (shifted) {
  164. rgb_matrix_decrease_speed();
  165. } else {
  166. rgb_matrix_increase_speed();
  167. }
  168. #endif
  169. return false;
  170. case QK_UNDERGLOW_SPEED_DOWN:
  171. #if defined(RGBLIGHT_ENABLE)
  172. if (shifted) {
  173. rgblight_increase_speed();
  174. } else {
  175. rgblight_decrease_speed();
  176. }
  177. #endif
  178. #if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_SHARED_KEYCODES)
  179. if (shifted) {
  180. rgb_matrix_increase_speed();
  181. } else {
  182. rgb_matrix_decrease_speed();
  183. }
  184. #endif
  185. return false;
  186. }
  187. }
  188. return true;
  189. }