diff options
| author | a-chol <a-chol@users.noreply.github.com> | 2021-08-17 20:52:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-18 04:52:44 +1000 |
| commit | 75b49aff56436c57a424e622c91f6d80e1d0ecc2 (patch) | |
| tree | 1968a4e939efef6aec0451d4bc991f4494292e22 /tmk_core/common/host.c | |
| parent | 7794e97f32fb9dcb07e7fa928cde08691b257fbe (diff) | |
| download | qmk_firmware-75b49aff56436c57a424e622c91f6d80e1d0ecc2.tar.gz qmk_firmware-75b49aff56436c57a424e622c91f6d80e1d0ecc2.zip | |
Digitizer HID interface : absolute coordinates for mouse cursor (#12851)
* Add digitizer HID interface for setting the mouse cursor position at
absolute screen coordinates. Tested on Pro Micro, Proton C and
Blackpill.
* Update docs/feature_digitizer.md
Co-authored-by: Ryan <fauxpark@gmail.com>
* Update tmk_core/protocol/usb_descriptor.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Add missing copyrights
Add V-USB support
* Add support for digitizer dedicated endpoint for lufa and chibios.
Fix formatting issues
Move digitizer_task definition to the feature's base implementation file
* Run cformat on modified files
* Change digitizer report usage to Digitizer instead of Pen to avoid
pointer disappearing on Windows.
* Update tmk_core/protocol/vusb/vusb.c
Co-authored-by: Ryan <fauxpark@gmail.com>
* Run cformat from docker image
* Remove send_digitizer from host_driver_t and instead rely on the
declaration being the interface to the implementation in each
HW-specific usb implementation.
* Fix build : send_digitizer shouldn't be static in vusb and add
weak-linkage implementation for tests without usb implementation
* Change digitizer user interface to match pointing device's
* Update documentation with new API
Co-authored-by: a-chol <nothing@none.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'tmk_core/common/host.c')
| -rw-r--r-- | tmk_core/common/host.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tmk_core/common/host.c b/tmk_core/common/host.c index a8b391e89..f0c396b18 100644 --- a/tmk_core/common/host.c +++ b/tmk_core/common/host.c | |||
| @@ -22,6 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 22 | #include "host.h" | 22 | #include "host.h" |
| 23 | #include "util.h" | 23 | #include "util.h" |
| 24 | #include "debug.h" | 24 | #include "debug.h" |
| 25 | #include "digitizer.h" | ||
| 25 | 26 | ||
| 26 | #ifdef NKRO_ENABLE | 27 | #ifdef NKRO_ENABLE |
| 27 | # include "keycode_config.h" | 28 | # include "keycode_config.h" |
| @@ -103,6 +104,24 @@ void host_consumer_send(uint16_t report) { | |||
| 103 | (*driver->send_consumer)(report); | 104 | (*driver->send_consumer)(report); |
| 104 | } | 105 | } |
| 105 | 106 | ||
| 107 | void host_digitizer_send(digitizer_t *digitizer) { | ||
| 108 | if (!driver) return; | ||
| 109 | |||
| 110 | report_digitizer_t report = { | ||
| 111 | #ifdef DIGITIZER_SHARED_EP | ||
| 112 | .report_id = REPORT_ID_DIGITIZER, | ||
| 113 | #endif | ||
| 114 | .tip = digitizer->tipswitch & 0x1, | ||
| 115 | .inrange = digitizer->inrange & 0x1, | ||
| 116 | .x = (uint16_t)(digitizer->x * 0x7FFF), | ||
| 117 | .y = (uint16_t)(digitizer->y * 0x7FFF), | ||
| 118 | }; | ||
| 119 | |||
| 120 | send_digitizer(&report); | ||
| 121 | } | ||
| 122 | |||
| 123 | __attribute__((weak)) void send_digitizer(report_digitizer_t *report) {} | ||
| 124 | |||
| 106 | uint16_t host_last_system_report(void) { return last_system_report; } | 125 | uint16_t host_last_system_report(void) { return last_system_report; } |
| 107 | 126 | ||
| 108 | uint16_t host_last_consumer_report(void) { return last_consumer_report; } | 127 | uint16_t host_last_consumer_report(void) { return last_consumer_report; } |
