diff options
Diffstat (limited to 'keyboards/handwired/tractyl_manuform/tractyl_manuform.c')
-rw-r--r-- | keyboards/handwired/tractyl_manuform/tractyl_manuform.c | 80 |
1 files changed, 45 insertions, 35 deletions
diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c index aafa343051..d851528ffb 100644 --- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c @@ -34,23 +34,21 @@ keyboard_config_t keyboard_config; uint16_t dpi_array[] = TRACKBALL_DPI_OPTIONS; #define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) -bool BurstState = false; // init burst state for Trackball module -uint16_t MotionStart = 0; // Timer for accel, 0 is resting state +bool BurstState = false; // init burst state for Trackball module +uint16_t MotionStart = 0; // Timer for accel, 0 is resting state __attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) { mouse_report->x = x; mouse_report->y = y; } -__attribute__((weak)) kb_pointer_data_t process_mouse(void) { - kb_pointer_data_t temp_data = {.mouse_x = 0, .mouse_y = 0}; - +__attribute__((weak)) void process_mouse(void) { report_pmw_t data = pmw_read_burst(); - // Reset timer if stopped moving - if (!data.isMotion) { - if (MotionStart != 0) MotionStart = 0; - return temp_data; - } + // Reset timer if stopped moving + if (!data.isMotion) { + if (MotionStart != 0) MotionStart = 0; + return; + } if (data.isOnSurface) { // Set timer if new motion @@ -59,8 +57,12 @@ __attribute__((weak)) kb_pointer_data_t process_mouse(void) { MotionStart = timer_read(); } - if (debug_mouse) { dprintf("Delt] d: %d t: %u\n", abs(data.dx) + abs(data.dy), MotionStart); } - if (debug_mouse) { dprintf("Pre ] X: %d, Y: %d\n", data.dx, data.dy); } + if (debug_mouse) { + dprintf("Delt] d: %d t: %u\n", abs(data.dx) + abs(data.dy), MotionStart); + } + if (debug_mouse) { + dprintf("Pre ] X: %d, Y: %d\n", data.dx, data.dy); + } #if defined(PROFILE_LINEAR) float scale = float(timer_elaspsed(MotionStart)) / 1000.0; data.dx *= scale; @@ -77,14 +79,15 @@ __attribute__((weak)) kb_pointer_data_t process_mouse(void) { if (debug_mouse) dprintf("Cons] X: %d, Y: %d\n", data.dx, data.dy); // dprintf("Elapsed:%u, X: %f Y: %\n", i, pgm_read_byte(firmware_data+i)); - temp_data.mouse_x = -data.dx; - temp_data.mouse_y = data.dy; + sync_mouse_report.x = -data.dx; + sync_mouse_report.y = data.dy; } - return temp_data; } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { - if (!process_record_user(keycode, record)) { return false; } + if (!process_record_user(keycode, record)) { + return false; + } #ifdef POINTING_DEVICE_ENABLE if (keycode == DPI_CONFIG && record->event.pressed) { @@ -119,29 +122,28 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { return true; } __attribute__((weak)) void keyboard_pre_init_sync(void) {} - -// Hardware Setup -void keyboard_pre_init_kb(void) { +void keyboard_pre_init_kb(void) { // debug_enable = true; // debug_matrix = true; // debug_mouse = true; // debug_encoder = true; - /* Ground all output pins connected to ground. This provides additional - * pathways to ground. If you're messing with this, know this: driving ANY - * of these pins high will cause a short. On the MCU. Ka-blooey. - */ - // This is the debug LED. #if defined(DEBUG_LED_PIN) setPinOutput(DEBUG_LED_PIN); - writePin(DEBUG_LED_PIN, debug_enable); + writePin(DEBUG_LED_PIN, !debug_enable); #endif keyboard_pre_init_sync(); keyboard_pre_init_user(); } +__attribute__((weak)) void keyboard_post_init_sync(void) {} +void keyboard_post_init_kb(void) { + keyboard_post_init_sync(); + keyboard_post_init_user(); +} + #ifdef POINTING_DEVICE_ENABLE void pointing_device_init(void) { if (!is_keyboard_left()) { @@ -153,18 +155,18 @@ void pointing_device_init(void) { void pointing_device_task(void) { report_mouse_t mouse_report = pointing_device_get_report(); - kb_pointer_data_t data = {.mouse_x = mouse_report.x, .mouse_y = mouse_report.y}; + if (is_keyboard_left()) { if (is_keyboard_master()) { - data = kb_pointer_sync_get(); - process_mouse_user(&mouse_report, data.mouse_x, data.mouse_y); + transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(sync_mouse_report), &sync_mouse_report); + process_mouse_user(&mouse_report, sync_mouse_report.x, sync_mouse_report.y); } } else { - data = process_mouse(); - if (!is_keyboard_master()) { - kb_pointer_sync_send(data.mouse_x, data.mouse_y); - } else { - process_mouse_user(&mouse_report, data.mouse_x, data.mouse_y); + process_mouse(); + if (is_keyboard_master()) { + process_mouse_user(&mouse_report, sync_mouse_report.x, sync_mouse_report.y); + sync_mouse_report.x = 0; + sync_mouse_report.y = 0; } } @@ -183,11 +185,13 @@ void eeconfig_init_kb(void) { } __attribute__((weak)) void matrix_init_sub_kb(void) {} -void matrix_init_kb(void) { +void matrix_init_kb(void) { // is safe to just read DPI setting since matrix init // comes before pointing device init. keyboard_config.raw = eeconfig_read_kb(); - if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { eeconfig_init_kb(); } + if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { + eeconfig_init_kb(); + } matrix_init_sub_kb(); matrix_init_user(); } @@ -198,6 +202,12 @@ void matrix_scan_kb(void) { matrix_scan_user(); } +__attribute__((weak)) void housekeeping_task_sync(void) {} +void housekeeping_task_kb(void) { + housekeeping_task_sync(); + // no need for user function, is called already +} + #ifdef POINTING_DEVICE_ENABLE void matrix_power_up(void) { pointing_device_task(); } #endif |