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 | bbc45101722fce098f576c381cd00815fba0f9e7 (patch) | |
| tree | b83412a81ccfc1420fd935862dd76e915e790ce0 /keyboards/handwired/node5_1 | |
| parent | a5a573c9f5d128dd36ac73845e7c11f87c71a8ee (diff) | |
turn off leds on suspend
middle mouse button don't send if scrolled
Diffstat (limited to 'keyboards/handwired/node5_1')
| -rw-r--r-- | keyboards/handwired/node5_1/keymaps/default/keymap.c | 101 | ||||
| -rw-r--r-- | keyboards/handwired/node5_1/rules.mk | 4 |
2 files changed, 87 insertions, 18 deletions
diff --git a/keyboards/handwired/node5_1/keymaps/default/keymap.c b/keyboards/handwired/node5_1/keymaps/default/keymap.c index f36ae65bce..52cfe658b7 100644 --- a/keyboards/handwired/node5_1/keymaps/default/keymap.c +++ b/keyboards/handwired/node5_1/keymaps/default/keymap.c @@ -78,9 +78,33 @@ KC_LCTL, KC_LGUI, KC_LALT, KC_RALT, KC_SPACE, KC_BTN1, KC_BTN3, KC_B }; */ +// Custom composite data type for holding colors +struct color { + int red; + int green; + int blue; +}; + +const struct color trackball_normal_color = { + .red = 255, + .green = 74, + .blue = 0 +}; + +bool scrolled = false; + +void set_trackball_normal_color(void) { + pimoroni_trackball_set_rgbw( + trackball_normal_color.red, + trackball_normal_color.green, + trackball_normal_color.blue, + 0 + ); +} + void keyboard_post_init_user(void) { // Call the post init code. - pimoroni_trackball_set_rgbw(255, 127, 0, 0); + set_trackball_normal_color(); pointing_device_set_cpi(30000); debug_enable=true; @@ -89,7 +113,14 @@ void keyboard_post_init_user(void) { bool set_scrolling = false; report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { - if (set_scrolling) { + if (set_scrolling) + { + if (mouse_report.x || mouse_report.y) + { + // Used for middle mouse button scroll logic + scrolled = true; + // dprintf("X: %d\nY: %d\n", mouse_report.x, mouse_report.y); + } mouse_report.h = mouse_report.x; mouse_report.v = mouse_report.y; mouse_report.x = 0; @@ -100,37 +131,71 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { + //dprintf("keycode: %d\n", keycode); if (keycode == KC_BTN3) { if (record->event.pressed) { + // Middle mouse button pressed + // Start scrolling mode set_scrolling = true; pointing_device_set_cpi(8000); pimoroni_trackball_set_rgbw(0, 0, 255, 0); + + // Don't send pressed to computer, as there's some logic + // to check if scrolled. This logic is handled later + return false; } else { + // Stop scrolling mode set_scrolling = false; pointing_device_set_cpi(30000); - pimoroni_trackball_set_rgbw(255, 127, 0, 0); + set_trackball_normal_color(); + + // Middle mouse button wasn't sent earlier, + // send if not scrolled on mouse button up. + // Similar to how ThinkPads handles it + if (!scrolled) + { + SEND_STRING(SS_TAP(X_MS_BTN3)); + } + else + { + scrolled = false; + } } } return true; } +void suspend_power_down_user(void) { + // code will run multiple times while keyboard is suspended + + // Turn off light when computer is suspended + pimoroni_trackball_set_rgbw(0, 0, 0, 0); +} + +void suspend_wakeup_init_user(void) { + // code will run on keyboard wakeup + + // Turn on light when computer is woken from sleep + set_trackball_normal_color(); +} + /* - uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button) - { - if (pressed) { - buttons |= 1 << (button); - if (buttons) - { - dprintf("buttons: %d\npressed: %d\nbutton: %d\n", buttons, pressed, button); - } - } else { - buttons &= ~(1 << (button)); - } - - return buttons; - } - */ +uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button) +{ + if (pressed) { + buttons |= 1 << (button); + if (buttons) + { + dprintf("buttons: %d\npressed: %d\nbutton: %d\n", buttons, pressed, button); + } + } else { + buttons &= ~(1 << (button)); + } + + return buttons; +} +*/ diff --git a/keyboards/handwired/node5_1/rules.mk b/keyboards/handwired/node5_1/rules.mk index f5b734bc85..94eda5fd52 100644 --- a/keyboards/handwired/node5_1/rules.mk +++ b/keyboards/handwired/node5_1/rules.mk @@ -11,3 +11,7 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball # https://www.waveshare.com/img/devkit/RP2040-Zero/RP2040-Zero-details-7.jpg # RGBLIGHT_ENABLE = yes CONSOLE_ENABLE = yes + +# Enable user code to send keys +SEND_STRING_ENABLE = yes + |
