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.

78 lines
2.1 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 (host_keyboard_led_state().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 _GAME:
  31. rgblight_sethsv_noeeprom(HSV_GAME);
  32. break;
  33. case _FUNCT:
  34. case _FUNCT_WIN:
  35. rgblight_sethsv_noeeprom(HSV_FUNCT);
  36. break;
  37. default:
  38. set_lights_default();
  39. }
  40. #endif
  41. }
  42. layer_state_t layer_state_set_user (layer_state_t state) {
  43. state = update_tri_layer_state(state, _SYMBOL, _NAVNUM, _FUNCT);
  44. state = update_tri_layer_state(state, _OVER_WIN, _NAVNUM, _NAVNUM_WIN);
  45. state = update_tri_layer_state(state, _OVER_WIN, _FUNCT, _FUNCT_WIN);
  46. current_state = get_highest_layer(state);
  47. layer_state_set_rgb(state);
  48. return layer_state_set_keymap (state);
  49. }
  50. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  51. switch (keycode) {
  52. case KC_CAPS:
  53. #ifdef RGBLIGHT_ENABLE
  54. set_lights_default();
  55. #endif
  56. return true;
  57. case QK_BOOT:
  58. #ifdef RGBLIGHT_ENABLE
  59. rgblight_sethsv_noeeprom(HSV_RESET);
  60. #endif
  61. return true;
  62. default:
  63. return true;
  64. }
  65. }
  66. void keyboard_post_init_user(void) {
  67. #ifdef RGBLIGHT_ENABLE
  68. rgblight_enable_noeeprom();
  69. set_lights_default();
  70. #endif
  71. }