diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c index 60bca936e77..2000641f9ac 100644 --- a/keyboards/bastardkb/charybdis/charybdis.c +++ b/keyboards/bastardkb/charybdis/charybdis.c @@ -303,16 +303,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { break; } # endif // !NO_CHARYBDIS_KEYCODES -# ifndef MOUSEKEY_ENABLE - // Simulate mouse keys if full support is not enabled (reduces firmware size - // while maintaining support for mouse keys). - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t mouse_report = pointing_device_get_report(); - mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, record->event.pressed, keycode - KC_MS_BTN1); - pointing_device_set_report(mouse_report); - pointing_device_send(); - } -# endif // !MOUSEKEY_ENABLE # endif // POINTING_DEVICE_ENABLE if ((keycode >= POINTER_DEFAULT_DPI_FORWARD && keycode < CHARYBDIS_SAFE_RANGE) || IS_MOUSEKEY(keycode)) { debug_charybdis_config_to_console(&g_charybdis_config); diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c index d3e2e029753..7ded835a6e1 100644 --- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c @@ -308,16 +308,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { break; } # endif // !NO_CHARYBDIS_KEYCODES -# ifndef MOUSEKEY_ENABLE - // Simulate mouse keys if full support is not enabled (reduces firmware size - // while maintaining support for mouse keys). - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t mouse_report = pointing_device_get_report(); - mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, record->event.pressed, keycode - KC_MS_BTN1); - pointing_device_set_report(mouse_report); - pointing_device_send(); - } -# endif // !MOUSEKEY_ENABLE return true; } diff --git a/keyboards/ploopyco/mouse/mouse.c b/keyboards/ploopyco/mouse/mouse.c index abcaa276d94..72535bf5465 100644 --- a/keyboards/ploopyco/mouse/mouse.c +++ b/keyboards/ploopyco/mouse/mouse.c @@ -167,21 +167,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #endif } -/* If Mousekeys is disabled, then use handle the mouse button - * keycodes. This makes things simpler, and allows usage of - * the keycodes in a consistent manner. But only do this if - * Mousekeys is not enable, so it's not handled twice. - */ -#ifndef MOUSEKEY_ENABLE - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t currentReport = pointing_device_get_report(); - currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); - pointing_device_set_report(currentReport); - pointing_device_send(); - } - -#endif - return true; } diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c index c96bf15cbaf..6dbb73e8f86 100644 --- a/keyboards/ploopyco/trackball/trackball.c +++ b/keyboards/ploopyco/trackball/trackball.c @@ -178,14 +178,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { * the keycodes in a consistent manner. But only do this if * Mousekeys is not enable, so it's not handled twice. */ -#ifndef MOUSEKEY_ENABLE - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t currentReport = pointing_device_get_report(); - currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); - pointing_device_set_report(currentReport); - pointing_device_send(); - } -#endif return true; } diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c index dc3708fd51a..1e8212814c1 100644 --- a/keyboards/ploopyco/trackball_mini/trackball_mini.c +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c @@ -169,20 +169,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { pointing_device_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); } -/* If Mousekeys is disabled, then use handle the mouse button - * keycodes. This makes things simpler, and allows usage of - * the keycodes in a consistent manner. But only do this if - * Mousekeys is not enable, so it's not handled twice. - */ -#ifndef MOUSEKEY_ENABLE - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t currentReport = pointing_device_get_report(); - currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); - pointing_device_set_report(currentReport); - pointing_device_send(); - } -#endif - return true; } diff --git a/quantum/action.c b/quantum/action.c index 6b2e9104e03..4f01acb96e9 100644 --- a/quantum/action.c +++ b/quantum/action.c @@ -403,9 +403,9 @@ void process_action(keyrecord_t *record, action_t action) { # if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 } else if (tap_count == ONESHOT_TAP_TOGGLE) { dprint("MODS_TAP: Toggling oneshot"); + register_mods(mods); clear_oneshot_mods(); set_oneshot_locked_mods(mods | get_oneshot_locked_mods()); - register_mods(mods); # endif } else { register_mods(mods | get_oneshot_mods()); @@ -418,16 +418,16 @@ void process_action(keyrecord_t *record, action_t action) { // Retain Oneshot mods # if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 if (mods & get_mods()) { + unregister_mods(mods); clear_oneshot_mods(); set_oneshot_locked_mods(~mods & get_oneshot_locked_mods()); - unregister_mods(mods); } } else if (tap_count == ONESHOT_TAP_TOGGLE) { // Toggle Oneshot Layer # endif } else { - clear_oneshot_mods(); unregister_mods(mods); + clear_oneshot_mods(); } } } @@ -918,6 +918,10 @@ __attribute__((weak)) void register_code(uint8_t code) { mousekey_on(code); mousekey_send(); } +#elif defined(POINTING_DEVICE_ENABLE) + else if IS_MOUSEKEY (code) { + pointing_device_keycode_handler(code, true); + } #endif } @@ -978,6 +982,10 @@ __attribute__((weak)) void unregister_code(uint8_t code) { mousekey_off(code); mousekey_send(); } +#elif defined(POINTING_DEVICE_ENABLE) + else if IS_MOUSEKEY (code) { + pointing_device_keycode_handler(code, false); + } #endif } diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c index 6981f850d09..75bb5f81fc3 100644 --- a/quantum/pointing_device/pointing_device.c +++ b/quantum/pointing_device/pointing_device.c @@ -22,6 +22,7 @@ #ifdef MOUSEKEY_ENABLE # include "mousekey.h" #endif + #if (defined(POINTING_DEVICE_ROTATION_90) + defined(POINTING_DEVICE_ROTATION_180) + defined(POINTING_DEVICE_ROTATION_270)) > 1 # error More than one rotation selected. This is not supported. #endif @@ -479,3 +480,10 @@ __attribute__((weak)) report_mouse_t pointing_device_task_combined_user(report_m return pointing_device_combine_reports(left_report, right_report); } #endif + +__attribute__((weak)) void pointing_device_keycode_handler(uint16_t keycode, bool pressed) { + if IS_MOUSEKEY_BUTTON (keycode) { + local_mouse_report.buttons = pointing_device_handle_buttons(local_mouse_report.buttons, pressed, keycode - KC_MS_BTN1); + pointing_device_send(); + } +} diff --git a/quantum/pointing_device/pointing_device.h b/quantum/pointing_device/pointing_device.h index 27a3f95e32a..d430e6cfa4b 100644 --- a/quantum/pointing_device/pointing_device.h +++ b/quantum/pointing_device/pointing_device.h @@ -110,6 +110,7 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report); report_mouse_t pointing_device_task_user(report_mouse_t mouse_report); uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button); report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report); +void pointing_device_keycode_handler(uint16_t keycode, bool pressed); #if defined(SPLIT_POINTING_ENABLE) void pointing_device_set_shared_report(report_mouse_t report);