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:
parent
00fc35539d
commit
b7dc2eb9ab
3 changed files with 18 additions and 0 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue