ps17.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2023 mjbogusz (@mjbogusz)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "quantum.h"
  4. layer_state_t layer_state_set_kb(layer_state_t state) {
  5. /* Display current layer using indicator LEDs */
  6. writePin(LED_INDICATOR_0_PIN, !IS_LAYER_ON_STATE(state, 1));
  7. writePin(LED_INDICATOR_1_PIN, !IS_LAYER_ON_STATE(state, 2));
  8. writePin(LED_INDICATOR_2_PIN, !IS_LAYER_ON_STATE(state, 3));
  9. return layer_state_set_user(state);
  10. }
  11. void keyboard_pre_init_kb(void) {
  12. /* Set indicator LEDs as outputs */
  13. setPinOutput(LED_INDICATOR_0_PIN);
  14. setPinOutput(LED_INDICATOR_1_PIN);
  15. setPinOutput(LED_INDICATOR_2_PIN);
  16. keyboard_pre_init_user();
  17. }
  18. #if defined(ENCODER_ENABLE)
  19. bool encoder_update_kb(uint8_t index, bool clockwise) {
  20. if (!encoder_update_user(index, clockwise)) {
  21. /* Don't process further events if user function exists and returns false */
  22. return false;
  23. }
  24. /* Ignore index - only one encoder on this board */
  25. if (clockwise) {
  26. tap_code_delay(KC_VOLU, 10);
  27. } else {
  28. tap_code_delay(KC_VOLD, 10);
  29. }
  30. return false;
  31. }
  32. #endif
  33. #ifdef RGB_MATRIX_ENABLE
  34. void suspend_power_down_kb(void) {
  35. /* Disable indicator LEDs when going to sleep */
  36. writePin(LED_INDICATOR_0_PIN, 1);
  37. writePin(LED_INDICATOR_1_PIN, 1);
  38. writePin(LED_INDICATOR_2_PIN, 1);
  39. suspend_power_down_user();
  40. }
  41. void suspend_wakeup_init_kb(void) {
  42. /* Restore indicator LEDs state */
  43. layer_state_set_kb(layer_state);
  44. suspend_wakeup_init_user();
  45. }
  46. #endif