diff options
| author | user <user@node5.net> | 2024-01-02 06:31:20 +0100 |
|---|---|---|
| committer | user <user@node5.net> | 2024-01-02 06:31:20 +0100 |
| commit | 164a497463fc65be48454f1a3182a00219286b90 (patch) | |
| tree | 26b09b1e491c0830a9aa043d640a2f706351f5c7 /keyboards/handwired/node5_1 | |
| parent | 880b2092c20e5491d7c506435300cf45bdc976a6 (diff) | |
click trackball to change cpi
Diffstat (limited to 'keyboards/handwired/node5_1')
| -rw-r--r-- | keyboards/handwired/node5_1/keymaps/default/keymap.c | 34 | ||||
| -rw-r--r-- | keyboards/handwired/node5_1/rules.mk | 1 |
2 files changed, 33 insertions, 2 deletions
diff --git a/keyboards/handwired/node5_1/keymaps/default/keymap.c b/keyboards/handwired/node5_1/keymaps/default/keymap.c index 84a11d7b48..fd600d5e90 100644 --- a/keyboards/handwired/node5_1/keymaps/default/keymap.c +++ b/keyboards/handwired/node5_1/keymaps/default/keymap.c @@ -93,6 +93,11 @@ const struct color trackball_normal_color = { bool scrolled = false; +// First one is the default +int cpis[] = {20000, 40000}; +int cpi_index = 0; +bool cpi_changed = false; + void set_trackball_normal_color(void) { pimoroni_trackball_set_rgbw( trackball_normal_color.red, @@ -105,7 +110,7 @@ void set_trackball_normal_color(void) { void keyboard_post_init_user(void) { // Call the post init code. set_trackball_normal_color(); - pointing_device_set_cpi(30000); + pointing_device_set_cpi(cpis[cpi_index]); debug_enable=true; } @@ -113,6 +118,29 @@ void keyboard_post_init_user(void) { bool set_scrolling = false; report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + // Only fires on pointing device click, not keyboard mouse buttons + if (!mouse_report.buttons) { + cpi_changed = false; + } else { + // Don't send a mouse button event + mouse_report.buttons = 0; + + if(!cpi_changed){ + cpi_changed = true; + + // Cycle CPI + cpi_index++; + if (cpi_index == sizeof(cpis) / sizeof(cpis[0])) { + cpi_index = 0; + } + + // Set CPI + pointing_device_set_cpi(cpis[cpi_index]); + + dprintf("CPI: %d\n", cpis[cpi_index]); + } + } + if (set_scrolling) { if (mouse_report.x || mouse_report.y) { // Used for middle mouse button scroll logic @@ -144,7 +172,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } else { // Stop scrolling mode set_scrolling = false; - pointing_device_set_cpi(30000); + + // Reset CPI + pointing_device_set_cpi(cpis[cpi_index]); set_trackball_normal_color(); // Middle mouse button wasn't sent earlier, diff --git a/keyboards/handwired/node5_1/rules.mk b/keyboards/handwired/node5_1/rules.mk index 94eda5fd52..e51f88dea9 100644 --- a/keyboards/handwired/node5_1/rules.mk +++ b/keyboards/handwired/node5_1/rules.mk @@ -6,6 +6,7 @@ VIA_ENABLE = yes # https://shop.pimoroni.com/products/trackball-breakout POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = pimoroni_trackball +PIMORONI_TRACKBALL_SCALE = 10 # Enable RP2040-Zero WS2812 On board led # https://www.waveshare.com/img/devkit/RP2040-Zero/RP2040-Zero-details-7.jpg |
