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