diff options
author | Nick Brassel <[email protected]> | 2024-02-18 21:17:15 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-02-18 21:17:15 +1100 |
commit | 9d9cdaaa2d035787b0b50c26f2975695fdbc16f4 (patch) | |
tree | 1a9f5d16ffc0e3bd27bc14791c25405a79ccd069 /keyboards/ploopyco/mouse | |
parent | 2eb9ff8efd1df2c98724481c71c8ab8a5b62e31e (diff) | |
download | qmk_firmware-9d9cdaaa2d035787b0b50c26f2975695fdbc16f4.tar.gz qmk_firmware-9d9cdaaa2d035787b0b50c26f2975695fdbc16f4.zip |
Add encoder abstraction. (#21548)
Diffstat (limited to 'keyboards/ploopyco/mouse')
-rw-r--r-- | keyboards/ploopyco/mouse/config.h | 3 | ||||
-rw-r--r-- | keyboards/ploopyco/mouse/info.json | 6 | ||||
-rw-r--r-- | keyboards/ploopyco/mouse/mouse.c | 20 | ||||
-rw-r--r-- | keyboards/ploopyco/mouse/rules.mk | 3 |
4 files changed, 18 insertions, 14 deletions
diff --git a/keyboards/ploopyco/mouse/config.h b/keyboards/ploopyco/mouse/config.h index 94bd6ef6af..86af11fc94 100644 --- a/keyboards/ploopyco/mouse/config.h +++ b/keyboards/ploopyco/mouse/config.h @@ -32,3 +32,6 @@ /* PMW33XX Settings */ #define PMW33XX_CS_PIN B0 + +/* Custom encoder needs to specify just how many encoders we have */ +#define NUM_ENCODERS 1 diff --git a/keyboards/ploopyco/mouse/info.json b/keyboards/ploopyco/mouse/info.json index 5dc53392ff..1f110aad71 100644 --- a/keyboards/ploopyco/mouse/info.json +++ b/keyboards/ploopyco/mouse/info.json @@ -31,6 +31,12 @@ ["D4", "D2", "E6", "B6", "D7", "C6", "C7", "B7"] ] }, + "features": { + "encoder": true + }, + "encoder": { + "driver": "custom" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/mouse/mouse.c b/keyboards/ploopyco/mouse/mouse.c index e2dada4a15..5f4a82e474 100644 --- a/keyboards/ploopyco/mouse/mouse.c +++ b/keyboards/ploopyco/mouse/mouse.c @@ -66,8 +66,6 @@ uint8_t OptLowPin = OPT_ENC1; bool debug_encoder = false; bool is_drag_scroll = false; -__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } - bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; @@ -83,7 +81,14 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { return true; } -void process_wheel(void) { +void encoder_driver_init(void) { + setPinInput(OPT_ENC1); + setPinInput(OPT_ENC2); + + opt_encoder_init(); +} + +void encoder_driver_task(void) { // Lovingly ripped from the Ploopy Source // If the mouse wheel was just released, do not scroll. @@ -111,12 +116,10 @@ void process_wheel(void) { int dir = opt_encoder_handler(p1, p2); if (dir == 0) return; - encoder_update_kb(0, dir > 0); + encoder_queue_event(0, dir == 1); } report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { - process_wheel(); - if (is_drag_scroll) { mouse_report.h = mouse_report.x; #ifdef PLOOPY_DRAGSCROLL_INVERT @@ -177,9 +180,6 @@ void keyboard_pre_init_kb(void) { // debug_mouse = true; // debug_encoder = true; - setPinInput(OPT_ENC1); - setPinInput(OPT_ENC2); - /* Ground all output pins connected to ground. This provides additional * pathways to ground. If you're messing with this, know this: driving ANY * of these pins high will cause a short. On the MCU. Ka-blooey. @@ -204,8 +204,6 @@ void keyboard_pre_init_kb(void) { void pointing_device_init_kb(void) { pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); - // initialize the scroll wheel's optical encoder - opt_encoder_init(); } void eeconfig_init_kb(void) { diff --git a/keyboards/ploopyco/mouse/rules.mk b/keyboards/ploopyco/mouse/rules.mk index 17df9cc3c9..6356950780 100644 --- a/keyboards/ploopyco/mouse/rules.mk +++ b/keyboards/ploopyco/mouse/rules.mk @@ -16,9 +16,6 @@ POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = pmw3360 MOUSEKEY_ENABLE = yes # Mouse keys -ENCODER_ENABLE := no -OPTS_DEF += -DENCODER_ENABLE - ANALOG_DRIVER_REQUIRED = yes SRC += opt_encoder.c |