qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

commit fa26e242351851272c8cff2d567dd9f5a4ec65d6
parent c12d8a122a95bc0e8843f98184f7efcc8ebb7727
Author: Jack Sangdahl <jack@pngu.org>
Date:   Wed, 21 Jan 2026 20:44:27 -0700

Move pointing device scrolling to userspace

Diffstat:
Mkeyboards/splitkb/kyria/keymaps/jack/keymap.c | 28----------------------------
Musers/jack/callbacks.c | 1-
Musers/jack/jack.c | 39+++++++++++++++++++++++++++++++++------
Musers/jack/jack.h | 1-
4 files changed, 33 insertions(+), 36 deletions(-)

diff --git a/keyboards/splitkb/kyria/keymaps/jack/keymap.c b/keyboards/splitkb/kyria/keymaps/jack/keymap.c @@ -116,31 +116,3 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } #endif - -#ifdef POINTING_DEVICE_ENABLE -static bool scrolling = false; -layer_state_t layer_state_set_keymap(layer_state_t state) { - switch (get_highest_layer(state)) { - case LAYER1: - scrolling = true; - pointing_device_set_cpi(64); - break; - default: - if (scrolling) { - scrolling = false; - pointing_device_set_cpi(1024); - } - } - return state; -} - -report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { - if (scrolling) { - mouse_report.h = mouse_report.x; - mouse_report.v = -mouse_report.y; - mouse_report.x = 0; - mouse_report.y = 0; - } - return mouse_report; -} -#endif diff --git a/users/jack/callbacks.c b/users/jack/callbacks.c @@ -4,6 +4,5 @@ // clang-format off __attribute__((weak)) void keyboard_post_init_keymap(void) {} -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } // clang-format on diff --git a/users/jack/jack.c b/users/jack/jack.c @@ -32,12 +32,6 @@ bool process_detected_host_os_user(os_variant_t detected_os) { } #endif -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, LAYER1, LAYER2, LAYER3); - state = layer_state_set_keymap(state); - return state; -} - uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case ESC_L1: @@ -169,3 +163,36 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [LAYER3] = {{_______, _______}, {_______, _______}}, }; #endif + +static bool scrolling = false; + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case LAYER1: + scrolling = true; +#ifdef POINTING_DEVICE_ENABLE + pointing_device_set_cpi(64); +#endif + break; + default: + if (scrolling) { + scrolling = false; +#ifdef POINTING_DEVICE_ENABLE + pointing_device_set_cpi(1024); +#endif + } + } + return update_tri_layer_state(state, LAYER1, LAYER2, LAYER3); +} + +#ifdef POINTING_DEVICE_ENABLE +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + if (scrolling) { + mouse_report.h = mouse_report.x; + mouse_report.v = -mouse_report.y; + mouse_report.x = 0; + mouse_report.y = 0; + } + return mouse_report; +} +#endif diff --git a/users/jack/jack.h b/users/jack/jack.h @@ -18,7 +18,6 @@ enum custom_keycodes { }; void keyboard_post_init_keymap(void); -layer_state_t layer_state_set_keymap(layer_state_t state); bool process_record_keymap(uint16_t keycode, keyrecord_t *record); #define INTERCEPT_MOD_TAP(mod, keycode) \