logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

ortho75.c (1416B)


  1. #include "quantum.h"
  2. #define MEDIA_KEY_DELAY 10
  3. uint8_t layer = 0;
  4. layer_state_t layer_state_set_kb(layer_state_t state) {
  5. state = layer_state_set_user(state);
  6. layer = get_highest_layer(state);
  7. return state;
  8. }
  9. bool encoder_update_kb(uint8_t index, bool clockwise) {
  10. if (!encoder_update_user(index, clockwise)) return false;
  11. uint16_t mapped_code = 0;
  12. if (index == 0) {
  13. if (clockwise) {
  14. switch (layer) {
  15. case 0:
  16. default:
  17. mapped_code = KC_VOLU;
  18. break;
  19. case 1:
  20. mapped_code = KC_MEDIA_NEXT_TRACK;
  21. break;
  22. case 2:
  23. mapped_code = KC_PGDN;
  24. break;
  25. }
  26. } else {
  27. switch (layer) {
  28. case 0:
  29. default:
  30. mapped_code = KC_VOLD;
  31. break;
  32. case 1:
  33. mapped_code = KC_MEDIA_PREV_TRACK;
  34. break;
  35. case 2:
  36. mapped_code = KC_PGUP;
  37. break;
  38. }
  39. }
  40. uint16_t held_keycode_timer = timer_read();
  41. register_code(mapped_code);
  42. while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY) { /* no-op */
  43. }
  44. unregister_code(mapped_code);
  45. }
  46. return true;
  47. }