From fb400f2ac2c57fa0fc82ca803f6450b818bb32f9 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 26 Sep 2022 20:49:32 -0700 Subject: [PATCH] Enabling Pointing Device support in register code functions (#18363) --- keyboards/bastardkb/charybdis/charybdis.c | 10 ---------- .../handwired/tractyl_manuform/tractyl_manuform.c | 10 ---------- keyboards/ploopyco/mouse/mouse.c | 15 --------------- keyboards/ploopyco/trackball/trackball.c | 8 -------- .../ploopyco/trackball_mini/trackball_mini.c | 14 -------------- quantum/action.c | 8 ++++++++ quantum/pointing_device/pointing_device.c | 8 ++++++++ quantum/pointing_device/pointing_device.h | 1 + 8 files changed, 17 insertions(+), 57 deletions(-) diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c index 60bca936e776c0566827036a0a3e776a834340ae..2000641f9ac1092a2a1fc9ec09d79067ff319aaa 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 d3e2e02975392c452eb93a2b83e36f5c98bb3fe4..7ded835a6e1798f2fef0f2e7473a5eb0e9aa24d7 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 abcaa276d94dec6c5731bdbc8e528a644ba4969f..72535bf546549cf21c42382b431c7e51b6309ad5 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 c96bf15cbafc810bc9280ba380c80efe96aae628..6dbb73e8f8663fbb4bfd94500954f5ac6a9d6a12 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 dc3708fd51adb96d31a0deff00d85fd0d25465a0..1e8212814c195fe09d884c7846d065c6ae7faa80 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 a1476131b9f1df5ca3988335d16ac316d7766b8e..4f01acb96e91ca134bae470d6562d2dc3a02aeb2 100644 --- a/quantum/action.c +++ b/quantum/action.c @@ -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 6981f850d096558326154d44200b74147c9984ed..75bb5f81fc3d6b59be71903bc34dfed9c15cc3c6 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 27a3f95e32a66a55ac456fcdaf38ad7f6336bf65..d430e6cfa4b008e9700e6854957dd16b4824591f 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);