common.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2023 Massdrop, Inc.
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #ifdef RGB_MATRIX_ENABLE
  4. # include "host.h"
  5. # include "quantum.h"
  6. # include "rgb_matrix.h"
  7. # define LED_FLAG_ANY_SWITCH (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR)
  8. # ifdef RGB_MATRIX_CAPS_LOCK_INDEX
  9. bool rgb_matrix_indicators_kb(void) {
  10. if (!rgb_matrix_indicators_user()) {
  11. return false;
  12. }
  13. if (host_keyboard_led_state().caps_lock) {
  14. rgb_matrix_set_color(RGB_MATRIX_CAPS_LOCK_INDEX, RGB_WHITE);
  15. } else if ((rgb_matrix_get_flags() & LED_FLAG_ANY_SWITCH) == 0) {
  16. rgb_matrix_set_color(RGB_MATRIX_CAPS_LOCK_INDEX, RGB_OFF);
  17. }
  18. return true;
  19. }
  20. # endif
  21. # ifdef RGB_MATRIX_CYCLE_ZONES_ENABLE
  22. bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
  23. if (!process_record_user(keycode, record)) {
  24. return false;
  25. }
  26. if (!record->event.pressed) {
  27. switch (keycode) {
  28. case RGB_TOG:
  29. switch (rgb_matrix_get_flags()) {
  30. case LED_FLAG_ALL:
  31. rgb_matrix_set_flags(LED_FLAG_ANY_SWITCH);
  32. break;
  33. case LED_FLAG_ANY_SWITCH:
  34. rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
  35. break;
  36. case LED_FLAG_UNDERGLOW:
  37. rgb_matrix_set_flags(LED_FLAG_NONE);
  38. break;
  39. default:
  40. rgb_matrix_set_flags(LED_FLAG_ALL);
  41. break;
  42. }
  43. return false;
  44. }
  45. }
  46. return true;
  47. };
  48. # endif
  49. #endif