diff options
author | Nick Brassel <[email protected]> | 2022-05-29 07:57:11 +1000 |
---|---|---|
committer | Nick Brassel <[email protected]> | 2022-05-29 07:57:11 +1000 |
commit | b835171008eaeaa992a1b8e390af8bce6f5f0b8f (patch) | |
tree | de22c239cc47556f8be7538f95f48ad75b86d110 /docs/feature_pointing_device.md | |
parent | f5d091a9d58c8349437e9d52de87294258cbd256 (diff) | |
parent | 0c8f78020d01ee5c45481d7d93b9b0d9f7b95103 (diff) | |
download | qmk_firmware-b835171008eaeaa992a1b8e390af8bce6f5f0b8f.tar.gz qmk_firmware-b835171008eaeaa992a1b8e390af8bce6f5f0b8f.zip |
Merge branch 'develop' -- breaking changes 2022-05-28.0.17.0
Diffstat (limited to 'docs/feature_pointing_device.md')
-rw-r--r-- | docs/feature_pointing_device.md | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 8c51865558..02c1e64a31 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -134,6 +134,7 @@ The Pimoroni Trackball module is a I2C based breakout board with an RGB enable t ### PMW 3360 Sensor +This drivers supports multiple sensors _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards). To use the PMW 3360 sensor, add this to your `rules.mk` ```make @@ -145,6 +146,7 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su | Setting | Description | Default | |-----------------------------|--------------------------------------------------------------------------------------------|---------------| |`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ | +|`PMW3360_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ | |`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` | |`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | |`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` | @@ -155,6 +157,36 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI. +To use multiple sensors, instead of setting `PMW3360_CS_PIN` you need to set `PMW3360_CS_PINS` and also handle and merge the read from this sensor in user code. +Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported. + +```c +// in config.h: +#define PMW3360_CS_PINS { B5, B6 } + +// in keyboard.c: +#ifdef POINTING_DEVICE_ENABLE +void pointing_device_init_kb(void) { + pmw3360_init(1); // index 1 is the second device. + pointing_device_set_cpi(800); // applies to both sensors + pointing_device_init_user(); +} + +// Contains report from sensor #0 already, need to merge in from sensor #1 +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + report_pmw3360_t data = pmw3360_read_burst(1); + if (data.isOnSurface && data.isMotion) { +// From quantum/pointing_device_drivers.c +#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt))) + mouse_report.x = constrain_hid(mouse_report.x + data.dx); + mouse_report.y = constrain_hid(mouse_report.y + data.dy); + } + return pointing_device_task_user(mouse_report); +} +#endif + +``` + ### PMW 3389 Sensor To use the PMW 3389 sensor, add this to your `rules.mk` |