Add movement hook to ps2_mouse (#8805)
Process mouse movement in the keymap before it is sent to the host. Example uses include filtering noise, adding acceleration, and automatically activating a layer. To use, define the following function in your keymap: void ps2_mouse_moved_user(report_mouse_t *mouse_report);
This commit is contained in:
		| @@ -294,3 +294,13 @@ To debug the mouse, add `debug_mouse = true` or enable via bootmagic. | |||||||
| #define PS2_MOUSE_DEBUG_HID | #define PS2_MOUSE_DEBUG_HID | ||||||
| #define PS2_MOUSE_DEBUG_RAW | #define PS2_MOUSE_DEBUG_RAW | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | ### Movement Hook :id=movement-hook | ||||||
|  |  | ||||||
|  | Process mouse movement in the keymap before it is sent to the host.  Example | ||||||
|  | uses include filtering noise, adding acceleration, and automatically activating | ||||||
|  | a layer.  To use, define the following function in your keymap: | ||||||
|  |  | ||||||
|  | ```c | ||||||
|  | void ps2_mouse_moved_user(report_mouse_t *mouse_report); | ||||||
|  | ``` | ||||||
|   | |||||||
| @@ -68,6 +68,8 @@ void ps2_mouse_init(void) { | |||||||
|  |  | ||||||
| __attribute__((weak)) void ps2_mouse_init_user(void) {} | __attribute__((weak)) void ps2_mouse_init_user(void) {} | ||||||
|  |  | ||||||
|  | __attribute__((weak)) void ps2_mouse_moved_user(report_mouse_t *mouse_report) {} | ||||||
|  |  | ||||||
| void ps2_mouse_task(void) { | void ps2_mouse_task(void) { | ||||||
|     static uint8_t buttons_prev = 0; |     static uint8_t buttons_prev = 0; | ||||||
|     extern int     tp_buttons; |     extern int     tp_buttons; | ||||||
| @@ -98,6 +100,9 @@ void ps2_mouse_task(void) { | |||||||
| #if PS2_MOUSE_SCROLL_BTN_MASK | #if PS2_MOUSE_SCROLL_BTN_MASK | ||||||
|         ps2_mouse_scroll_button_task(&mouse_report); |         ps2_mouse_scroll_button_task(&mouse_report); | ||||||
| #endif | #endif | ||||||
|  |         if (mouse_report.x || mouse_report.y || mouse_report.v) { | ||||||
|  |             ps2_mouse_moved_user(&mouse_report); | ||||||
|  |         } | ||||||
| #ifdef PS2_MOUSE_DEBUG_HID | #ifdef PS2_MOUSE_DEBUG_HID | ||||||
|         // Used to debug the bytes sent to the host |         // Used to debug the bytes sent to the host | ||||||
|         ps2_mouse_print_report(&mouse_report); |         ps2_mouse_print_report(&mouse_report); | ||||||
|   | |||||||
| @@ -20,6 +20,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
|  |  | ||||||
| #include <stdbool.h> | #include <stdbool.h> | ||||||
| #include "debug.h" | #include "debug.h" | ||||||
|  | #include "report.h" | ||||||
|  |  | ||||||
| #define PS2_MOUSE_SEND(command, message)                                                \ | #define PS2_MOUSE_SEND(command, message)                                                \ | ||||||
|     do {                                                                                \ |     do {                                                                                \ | ||||||
| @@ -174,4 +175,6 @@ void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution); | |||||||
|  |  | ||||||
| void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate); | void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate); | ||||||
|  |  | ||||||
|  | void ps2_mouse_moved_user(report_mouse_t *mouse_report); | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user