From bffb5eb976f577ca4afaf85c5053fc6c95b77e9d Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Thu, 26 May 2022 12:48:12 +1200 Subject: [PATCH 1/4] Fix maddie layout for ploopy/trackball_nano This keymap was using a user function that had been removed from QMK, so it was never being called. The function that replaces it provides a slightly different interface, so the implementation in this keymap had to be updated as well as the function signature. --- .../trackball_nano/keymaps/maddie/keymap.c | 36 +++++-------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c index 2e3e1136bfca..c4a96476d762 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c @@ -19,38 +19,20 @@ #include QMK_KEYBOARD_H // safe range starts at `PLOOPY_SAFE_RANGE` instead. -uint8_t scroll_enabled = 0; -uint8_t lock_state = 0; -int8_t delta_x = 0; -int8_t delta_y = 0; +bool scroll_enabled = 0; +bool lock_state = 0; // Dummy const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; -void process_mouse_user(report_mouse_t *mouse_report, int8_t x, int8_t y) { +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { if (scroll_enabled) { - delta_x += x; - delta_y += y; - - if (delta_x > 60) { - mouse_report->h = 1; - delta_x = 0; - } else if (delta_x < -60) { - mouse_report->h = -1; - delta_x = 0; - } - - if (delta_y > 15) { - mouse_report->v = -1; - delta_y = 0; - } else if (delta_y < -15) { - mouse_report->v = 1; - delta_y = 0; - } - } else { - mouse_report->x = x; - mouse_report->y = y; + mouse_report.h = mouse_report.x; + mouse_report.v = mouse_report.y; + mouse_report.x = 0; + mouse_report.y = 0; } + return mouse_report; } void keyboard_post_init_user(void) { @@ -72,8 +54,6 @@ bool led_update_user(led_t led_state) { if (lock_count == 2) { scroll_enabled = !scroll_enabled; lock_count = 0; - delta_x = 0; - delta_y = 0; } } From ede330e55bf4dd5ec313e02d00ffd56328af1dbf Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Thu, 26 May 2022 17:48:01 +1200 Subject: [PATCH 2/4] Define scroll_timer as a macro --- keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c index c4a96476d762..cebe18bd7879 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c @@ -18,6 +18,9 @@ */ #include QMK_KEYBOARD_H +// Configuration options +#define SCROLL_TIMEOUT 25 + // safe range starts at `PLOOPY_SAFE_RANGE` instead. bool scroll_enabled = 0; bool lock_state = 0; @@ -43,7 +46,7 @@ bool led_update_user(led_t led_state) { static uint8_t lock_count = 0; static uint16_t scroll_timer = 0; - if (timer_elapsed(scroll_timer) > 25) { + if (timer_elapsed(scroll_timer) > SCROLL_TIMEOUT) { scroll_timer = timer_read(); lock_count = 0; } From 0b429a556f171b9f14e7dc4470051fabfdc7ecfa Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Fri, 27 May 2022 09:58:12 +1200 Subject: [PATCH 3/4] Initialise boolean variables with false instead of 0 --- keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c index cebe18bd7879..17f0eb420e53 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c @@ -22,8 +22,8 @@ #define SCROLL_TIMEOUT 25 // safe range starts at `PLOOPY_SAFE_RANGE` instead. -bool scroll_enabled = 0; -bool lock_state = 0; +bool scroll_enabled = false; +bool lock_state = false; // Dummy const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; From 15942d75a1a720f0c2f1ec4636c4d573df6e7298 Mon Sep 17 00:00:00 2001 From: Aidan Gauland Date: Sat, 28 May 2022 10:52:40 +1200 Subject: [PATCH 4/4] Restore delta_ thresholds for scroll events We still need these, even with the updated interface, because directly translating the mouse movement to scroll events makes scrolling way too sensitive. But we need to explicitly zero the x and y values of the resultant mouse_report struct, otherwise we get small but visible mouse movement along with the scroll events. --- .../trackball_nano/keymaps/maddie/keymap.c | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c index 17f0eb420e53..14a7804cc2c8 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c @@ -20,6 +20,8 @@ // Configuration options #define SCROLL_TIMEOUT 25 +#define DELTA_X_THRESHOLD 60 +#define DELTA_Y_THRESHOLD 15 // safe range starts at `PLOOPY_SAFE_RANGE` instead. bool scroll_enabled = false; @@ -30,8 +32,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { if (scroll_enabled) { - mouse_report.h = mouse_report.x; - mouse_report.v = mouse_report.y; + delta_x += mouse_report.x; + delta_y += mouse_report.y; + + if (delta_x > DELTA_X_THRESHOLD) { + mouse_report.h = 1; + delta_x = 0; + } else if (delta_x < -DELTA_X_THRESHOLD) { + mouse_report.h = -1; + delta_x = 0; + } + + if (delta_y > DELTA_Y_THRESHOLD) { + mouse_report.v = -1; + delta_y = 0; + } else if (delta_y < -DELTA_Y_THRESHOLD) { + mouse_report.v = 1; + delta_y = 0; + } mouse_report.x = 0; mouse_report.y = 0; }