Add PS2_MOUSE_ROTATE to compensate for device orientation (#8650)

* Add PS2_MOUSE_ROTATE to compensate for device orientation

* fixup! Add PS2_MOUSE_ROTATE to compensate for device orientation

* Reformat with IndentPPDirectives: AfterHash as per #6316
This commit is contained in:
Manna Harbour 2020-04-09 18:29:27 +10:00 committed by GitHub
parent b5aa5e4338
commit 07c75feba3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 0 deletions

View file

@ -266,6 +266,25 @@ To reverse the scroll axes you can put:
into config.h. into config.h.
### Rotate Mouse Axes :id=rotate-mouse-axes
Transform the output of the device with a clockwise rotation of 90, 180, or 270
degrees.
When compensating for device orientation, rotate the output the same amount in
the opposite direction. E.g. if the normal device orientation is considered to
be North-facing, compensate as follows:
```c
#define PS2_MOUSE_ROTATE 270 /* Compensate for East-facing device orientation. */
```
```c
#define PS2_MOUSE_ROTATE 180 /* Compensate for South-facing device orientation. */
```
```c
#define PS2_MOUSE_ROTATE 90 /* Compensate for West-facing device orientation. */
```
### Debug Settings :id=debug-settings ### Debug Settings :id=debug-settings
To debug the mouse, add `debug_mouse = true` or enable via bootmagic. To debug the mouse, add `debug_mouse = true` or enable via bootmagic.

View file

@ -157,6 +157,21 @@ static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report)
// invert coordinate of y to conform to USB HID mouse // invert coordinate of y to conform to USB HID mouse
mouse_report->y = -mouse_report->y; mouse_report->y = -mouse_report->y;
#endif #endif
#ifdef PS2_MOUSE_ROTATE
int8_t x = mouse_report->x;
int8_t y = mouse_report->y;
# if PS2_MOUSE_ROTATE == 90
mouse_report->x = y;
mouse_report->y = -x;
# elif PS2_MOUSE_ROTATE == 180
mouse_report->x = -x;
mouse_report->y = -y;
# elif PS2_MOUSE_ROTATE == 270
mouse_report->x = -y;
mouse_report->y = x;
# endif
#endif
} }
static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report) { static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report) {