|
|
|
@ -67,14 +67,29 @@ uint8_t OptLowPin = OPT_ENC1; |
|
|
|
|
bool debug_encoder = false; |
|
|
|
|
bool is_drag_scroll = false; |
|
|
|
|
|
|
|
|
|
void process_wheel(report_mouse_t* mouse_report) { |
|
|
|
|
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } |
|
|
|
|
|
|
|
|
|
bool encoder_update_kb(uint8_t index, bool clockwise) { |
|
|
|
|
if (!encoder_update_user(index, clockwise)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
#ifdef MOUSEKEY_ENABLE |
|
|
|
|
tap_code(clockwise ? KC_WH_U : KC_WH_D); |
|
|
|
|
#else |
|
|
|
|
mouse_report_t mouse_report = pointing_device_get_report(); |
|
|
|
|
mouse_report.v = clockwise ? 1 : -1; |
|
|
|
|
pointing_device_set_report(mouse_report); |
|
|
|
|
pointing_device_send(); |
|
|
|
|
#endif |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void process_wheel(void) { |
|
|
|
|
// If the mouse wheel was just released, do not scroll.
|
|
|
|
|
if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) |
|
|
|
|
return; |
|
|
|
|
if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) return; |
|
|
|
|
|
|
|
|
|
// Limit the number of scrolls per unit time.
|
|
|
|
|
if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) |
|
|
|
|
return; |
|
|
|
|
if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) return; |
|
|
|
|
|
|
|
|
|
// Don't scroll if the middle button is depressed.
|
|
|
|
|
if (is_scroll_clicked) { |
|
|
|
@ -87,15 +102,12 @@ void process_wheel(report_mouse_t* mouse_report) { |
|
|
|
|
uint16_t p1 = adc_read(OPT_ENC1_MUX); |
|
|
|
|
uint16_t p2 = adc_read(OPT_ENC2_MUX); |
|
|
|
|
|
|
|
|
|
if (debug_encoder) |
|
|
|
|
dprintf("OPT1: %d, OPT2: %d\n", p1, p2); |
|
|
|
|
if (debug_encoder) dprintf("OPT1: %d, OPT2: %d\n", p1, p2); |
|
|
|
|
|
|
|
|
|
uint8_t dir = opt_encoder_handler(p1, p2); |
|
|
|
|
|
|
|
|
|
if (dir == 0) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
mouse_report->v = (int8_t)(dir * OPT_SCALE); |
|
|
|
|
if (dir == 0) return; |
|
|
|
|
encoder_update_kb(0, dir == 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void pointing_device_init_kb(void) { |
|
|
|
@ -106,6 +118,7 @@ void pointing_device_init_kb(void) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { |
|
|
|
|
process_wheel(); |
|
|
|
|
|
|
|
|
|
if (is_drag_scroll) { |
|
|
|
|
mouse_report.h = mouse_report.x; |
|
|
|
@ -131,8 +144,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { |
|
|
|
|
is_scroll_clicked = record->event.pressed; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!process_record_user(keycode, record)) |
|
|
|
|
return false; |
|
|
|
|
if (!process_record_user(keycode, record)) return false; |
|
|
|
|
|
|
|
|
|
if (keycode == DPI_CONFIG && record->event.pressed) { |
|
|
|
|
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; |
|
|
|
|