summaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authoruser <user@node5.net>2024-01-02 06:31:20 +0100
committeruser <user@node5.net>2024-01-02 06:31:20 +0100
commitbbc45101722fce098f576c381cd00815fba0f9e7 (patch)
treeb83412a81ccfc1420fd935862dd76e915e790ce0 /keyboards
parenta5a573c9f5d128dd36ac73845e7c11f87c71a8ee (diff)
turn off leds on suspend
middle mouse button don't send if scrolled
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/handwired/node5_1/keymaps/default/keymap.c99
-rw-r--r--keyboards/handwired/node5_1/rules.mk4
2 files changed, 86 insertions, 17 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));
- }
+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;
- }
- */
+ 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
+