You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB

  1. #include "mattly.h"
  2. __attribute__ ((weak))
  3. layer_state_t layer_state_set_keymap (layer_state_t state) {
  4. return state;
  5. }
  6. static uint16_t current_state = 0;
  7. void set_lights_default(void) {
  8. #ifdef RGBLIGHT_ENABLE
  9. if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
  10. rgblight_sethsv_noeeprom(HSV_CAPS);
  11. } else {
  12. if (current_state == _BASE_MAC) {
  13. rgblight_sethsv_noeeprom(HSV_MAC);
  14. } else if (current_state == _OVER_WIN) {
  15. rgblight_sethsv_noeeprom(HSV_WIN);
  16. }
  17. }
  18. #endif
  19. }
  20. void layer_state_set_rgb(layer_state_t state) {
  21. #ifdef RGBLIGHT_ENABLE
  22. switch (get_highest_layer(state)) {
  23. case _SYMBOL:
  24. rgblight_sethsv_noeeprom(HSV_SYMBOL);
  25. break;
  26. case _NAVNUM:
  27. case _NAVNUM_WIN:
  28. rgblight_sethsv_noeeprom(HSV_NAVNUM);
  29. break;
  30. case _FUNCT:
  31. case _FUNCT_WIN:
  32. rgblight_sethsv_noeeprom(HSV_FUNCT);
  33. break;
  34. default:
  35. set_lights_default();
  36. }
  37. #endif
  38. }
  39. layer_state_t layer_state_set_user (layer_state_t state) {
  40. state = update_tri_layer_state(state, _SYMBOL, _NAVNUM, _FUNCT);
  41. state = update_tri_layer_state(state, _OVER_WIN, _NAVNUM, _NAVNUM_WIN);
  42. state = update_tri_layer_state(state, _OVER_WIN, _FUNCT, _FUNCT_WIN);
  43. current_state = get_highest_layer(state);
  44. layer_state_set_rgb(state);
  45. return layer_state_set_keymap (state);
  46. }
  47. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  48. switch (keycode) {
  49. case KC_CAPS:
  50. #ifdef RGBLIGHT_ENABLE
  51. set_lights_default();
  52. #endif
  53. return true;
  54. case RESET:
  55. #ifdef RGBLIGHT_ENABLE
  56. rgblight_sethsv_noeeprom(HSV_RESET);
  57. #endif
  58. return true;
  59. default:
  60. return true;
  61. }
  62. }
  63. void keyboard_post_init_user(void) {
  64. #ifdef RGBLIGHT_ENABLE
  65. rgblight_enable_noeeprom();
  66. set_lights_default();
  67. #endif
  68. }