summaryrefslogtreecommitdiff
path: root/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-09-08 16:52:43 -0700
committerGitHub <noreply@github.com>2021-09-08 16:52:43 -0700
commit4294aa0f1ee546c74a72bad3e556d7ee4e020a88 (patch)
tree1e7bf4d90c9f154f333985cc22103a361d4dc545 /keyboards/handwired/tractyl_manuform/tractyl_manuform.c
parent8f8411a98a60ffe9e8410e892bff946d9122d3a9 (diff)
[Keyboard] Tractyl Manuform - configuration updates (#14314)
* [Keyboard] Tractyl Manuform - configuration updates * Update readmes * Add more details * Fix issues with encoder pins * Additional fixes for pin config * Fix up some comments
Diffstat (limited to 'keyboards/handwired/tractyl_manuform/tractyl_manuform.c')
-rw-r--r--keyboards/handwired/tractyl_manuform/tractyl_manuform.c80
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