diff options
| author | Drashna Jaelre <drashna@live.com> | 2021-02-03 17:25:05 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-03 17:25:05 -0800 |
| commit | 780ca5565d2bdb8e03aa2669a3203373a0a4d9dd (patch) | |
| tree | a89235710614eb9d29f2c97b60ca3ee9714aae2c /quantum/pointing_device.c | |
| parent | 420f6c4b2e1634e82e4bbdcc24691c169c72ac79 (diff) | |
| download | qmk_firmware-780ca5565d2bdb8e03aa2669a3203373a0a4d9dd.tar.gz qmk_firmware-780ca5565d2bdb8e03aa2669a3203373a0a4d9dd.zip | |
Improve Pointing Device report sending (#11064)
* Improve Pointing Device report sending
* Hide old report behind preprocessors too
* put host_mouse_send() in curly brackets
* Remove POINTING_DEVICE_ALWAYS_SEND_REPORT functionality
* Fix typo
* fix function ref in docs
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Diffstat (limited to 'quantum/pointing_device.c')
| -rw-r--r-- | quantum/pointing_device.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c index 9b7629f30..fbcc08e6d 100644 --- a/quantum/pointing_device.c +++ b/quantum/pointing_device.c | |||
| @@ -25,18 +25,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 25 | 25 | ||
| 26 | static report_mouse_t mouseReport = {}; | 26 | static report_mouse_t mouseReport = {}; |
| 27 | 27 | ||
| 28 | __attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new, report_mouse_t old) { | ||
| 29 | return (new.buttons != old.buttons) || | ||
| 30 | (new.x && new.x != old.x) || | ||
| 31 | (new.y && new.y != old.y) || | ||
| 32 | (new.h && new.h != old.h) || | ||
| 33 | (new.v && new.v != old.v); | ||
| 34 | } | ||
| 35 | |||
| 36 | |||
| 28 | __attribute__((weak)) void pointing_device_init(void) { | 37 | __attribute__((weak)) void pointing_device_init(void) { |
| 29 | // initialize device, if that needs to be done. | 38 | // initialize device, if that needs to be done. |
| 30 | } | 39 | } |
| 31 | 40 | ||
| 32 | __attribute__((weak)) void pointing_device_send(void) { | 41 | __attribute__((weak)) void pointing_device_send(void) { |
| 42 | static report_mouse_t old_report = {}; | ||
| 43 | |||
| 33 | // If you need to do other things, like debugging, this is the place to do it. | 44 | // If you need to do other things, like debugging, this is the place to do it. |
| 34 | host_mouse_send(&mouseReport); | 45 | if (has_mouse_report_changed(mouseReport, old_report)) { |
| 46 | host_mouse_send(&mouseReport); | ||
| 47 | } | ||
| 35 | // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device | 48 | // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device |
| 36 | mouseReport.x = 0; | 49 | mouseReport.x = 0; |
| 37 | mouseReport.y = 0; | 50 | mouseReport.y = 0; |
| 38 | mouseReport.v = 0; | 51 | mouseReport.v = 0; |
| 39 | mouseReport.h = 0; | 52 | mouseReport.h = 0; |
| 53 | old_report = mouseReport; | ||
| 40 | } | 54 | } |
| 41 | 55 | ||
| 42 | __attribute__((weak)) void pointing_device_task(void) { | 56 | __attribute__((weak)) void pointing_device_task(void) { |
