encoder_update_user.c 1014 B

123456789101112131415161718192021222324252627282930313233
  1. // Copyright (c) 2022 Takeshi Ishii (mtei@github)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. /* weak reference */ __attribute__((weak))
  5. int get_encoder_over_count(void);
  6. bool encoder_update_user(uint8_t index, bool clockwise) {
  7. #ifndef ENCODER_DETECT_OVER_SPEED
  8. switch (index) {
  9. /* Left side encoder */
  10. case 0: tap_code(clockwise ? KC_LEFT : KC_RGHT); break;
  11. /* Right side encoder */
  12. case 1: tap_code(clockwise ? KC_DOWN : KC_UP); break;
  13. }
  14. #else
  15. // Is there a get_encoder_over_count() in quantum/encoder.c
  16. if (get_encoder_over_count != NULL) {
  17. int enc_over = get_encoder_over_count();
  18. for (; enc_over > 0; enc_over--) {
  19. tap_code(KC_MINUS);
  20. }
  21. }
  22. switch (index) {
  23. case 0: tap_code(clockwise ? KC_A : KC_B); break;
  24. case 1: tap_code(clockwise ? KC_C : KC_D); break;
  25. case 2: tap_code(clockwise ? KC_E : KC_F); break;
  26. case 3: tap_code(clockwise ? KC_G : KC_H); break;
  27. }
  28. #endif
  29. return true;
  30. }