diff options
Diffstat (limited to 'keyboards/ploopyco')
19 files changed, 70 insertions, 148 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 diff --git a/keyboards/ploopyco/trackball/config.h b/keyboards/ploopyco/trackball/config.h index de0ed1ebec..a1f3695d81 100644 --- a/keyboards/ploopyco/trackball/config.h +++ b/keyboards/ploopyco/trackball/config.h @@ -31,3 +31,6 @@ /* PMW33XX Settings */ #define PMW33XX_CS_PIN B0 #define POINTING_DEVICE_INVERT_Y + +/* Custom encoder needs to specify just how many encoders we have */ +#define NUM_ENCODERS 1 diff --git a/keyboards/ploopyco/trackball/info.json b/keyboards/ploopyco/trackball/info.json index 2c30755aa1..110264ef1c 100644 --- a/keyboards/ploopyco/trackball/info.json +++ b/keyboards/ploopyco/trackball/info.json @@ -12,6 +12,12 @@ "bootmagic": { "matrix": [0, 3] }, + "features": { + "encoder": true + }, + "encoder": { + "driver": "custom" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/trackball/rules.mk b/keyboards/ploopyco/trackball/rules.mk index ce7c4f29c8..ca1a8fd17a 100644 --- a/keyboards/ploopyco/trackball/rules.mk +++ b/keyboards/ploopyco/trackball/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 diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c index 8fd5b8650d..0c606bab07 100644 --- a/keyboards/ploopyco/trackball/trackball.c +++ b/keyboards/ploopyco/trackball/trackball.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,15 @@ 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) { // TODO: Replace this with interrupt driven code, polling is S L O W // Lovingly ripped from the Ploopy Source @@ -112,11 +118,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) { #ifdef PLOOPY_DRAGSCROLL_H_INVERT @@ -189,9 +194,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. @@ -216,8 +218,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/trackball_mini/config.h b/keyboards/ploopyco/trackball_mini/config.h index 789deb5a5f..6b92563fa9 100644 --- a/keyboards/ploopyco/trackball_mini/config.h +++ b/keyboards/ploopyco/trackball_mini/config.h @@ -32,3 +32,6 @@ #define ADNS5050_CS_PIN B4 #define POINTING_DEVICE_ROTATION_270 + +/* Custom encoder needs to specify just how many encoders we have */ +#define NUM_ENCODERS 1 diff --git a/keyboards/ploopyco/trackball_mini/info.json b/keyboards/ploopyco/trackball_mini/info.json index 301c8d18ec..0e7b12d20d 100644 --- a/keyboards/ploopyco/trackball_mini/info.json +++ b/keyboards/ploopyco/trackball_mini/info.json @@ -14,6 +14,12 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "features": { + "encoder": true + }, + "encoder": { + "driver": "custom" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/trackball_mini/rules.mk b/keyboards/ploopyco/trackball_mini/rules.mk index bcede0676c..d2bacc3974 100644 --- a/keyboards/ploopyco/trackball_mini/rules.mk +++ b/keyboards/ploopyco/trackball_mini/rules.mk @@ -13,9 +13,6 @@ POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = adns5050 MOUSEKEY_ENABLE = yes # Mouse keys -ENCODER_ENABLE := no -OPTS_DEF += -DENCODER_ENABLE - ANALOG_DRIVER_REQUIRED = yes SRC += opt_encoder.c diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c index 8bc0ab99c2..8517a54e70 100644 --- a/keyboards/ploopyco/trackball_mini/trackball_mini.c +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c @@ -74,8 +74,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; @@ -91,7 +89,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) { uint16_t p1 = adc_read(OPT_ENC1_MUX); uint16_t p2 = adc_read(OPT_ENC2_MUX); @@ -113,21 +118,17 @@ void process_wheel(void) { } if (dir == 0) return; - encoder_update_kb(0, dir > 0); + encoder_queue_event(0, dir == 1); lastScroll = timer_read(); } void pointing_device_init_kb(void) { - opt_encoder_init(); - // set the DPI. pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } 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 @@ -180,9 +181,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. diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c deleted file mode 100644 index 370eb95aa0..0000000000 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright 2021 Colin Lam (Ploopy Corporation) - * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> - * Copyright 2019 Sunjun Kim - * Copyright 2019 Hiroyuki Okada - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include QMK_KEYBOARD_H - -// Configuration options -#define SCROLL_TIMEOUT 25 -#define DELTA_X_THRESHOLD 60 -#define DELTA_Y_THRESHOLD 15 - -bool scroll_enabled = false; -bool lock_state = false; - -// State -static int8_t delta_x = 0; -static int8_t delta_y = 0; - -// Dummy -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; - -report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { - if (scroll_enabled) { - delta_x += mouse_report.x; - delta_y += mouse_report.y; - - if (delta_x > DELTA_X_THRESHOLD) { - mouse_report.h = 1; - delta_x = 0; - } else if (delta_x < -DELTA_X_THRESHOLD) { - mouse_report.h = -1; - delta_x = 0; - } - - if (delta_y > DELTA_Y_THRESHOLD) { - mouse_report.v = -1; - delta_y = 0; - } else if (delta_y < -DELTA_Y_THRESHOLD) { - mouse_report.v = 1; - delta_y = 0; - } - mouse_report.x = 0; - mouse_report.y = 0; - } - return mouse_report; -} - -void keyboard_post_init_user(void) { - lock_state = host_keyboard_led_state().num_lock; -} - -bool led_update_user(led_t led_state) { - static uint8_t lock_count = 0; - static uint16_t scroll_timer = 0; - - if (timer_elapsed(scroll_timer) > SCROLL_TIMEOUT) { - scroll_timer = timer_read(); - lock_count = 0; - } - - if (led_state.num_lock != lock_state) { - lock_count++; - - if (lock_count == 2) { - scroll_enabled = !scroll_enabled; - lock_count = 0; - } - } - - lock_state = led_state.num_lock; - return true; -} diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/readme.md b/keyboards/ploopyco/trackball_nano/keymaps/maddie/readme.md deleted file mode 100644 index 3a597e38d8..0000000000 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/readme.md +++ /dev/null @@ -1 +0,0 @@ -toggles scroll mode when numlock is double-tapped within 25ms. add a macro or something, unless you have ungodly fast fingers. diff --git a/keyboards/ploopyco/trackball_thumb/config.h b/keyboards/ploopyco/trackball_thumb/config.h index 8fc084c38c..316755f686 100644 --- a/keyboards/ploopyco/trackball_thumb/config.h +++ b/keyboards/ploopyco/trackball_thumb/config.h @@ -31,3 +31,6 @@ /* PMW3360 Settings */ #define POINTING_DEVICE_CS_PIN B0 + +/* Custom encoder needs to specify just how many encoders we have */ +#define NUM_ENCODERS 1 diff --git a/keyboards/ploopyco/trackball_thumb/info.json b/keyboards/ploopyco/trackball_thumb/info.json index 72e236a5bb..e27bf47252 100644 --- a/keyboards/ploopyco/trackball_thumb/info.json +++ b/keyboards/ploopyco/trackball_thumb/info.json @@ -18,7 +18,10 @@ "mousekey": true, "nkro": true, "pointing_device": true, - "encoder": false + "encoder": true + }, + "encoder": { + "driver": "custom" }, "layouts": { "LAYOUT": { diff --git a/keyboards/ploopyco/trackball_thumb/post_rules.mk b/keyboards/ploopyco/trackball_thumb/post_rules.mk deleted file mode 100644 index d922afd9cd..0000000000 --- a/keyboards/ploopyco/trackball_thumb/post_rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Force encoder to be disabled -# But enable the defines for it -ENCODER_ENABLE := no -OPT_DEFS += -DENCODER_ENABLE diff --git a/keyboards/ploopyco/trackball_thumb/trackball_thumb.c b/keyboards/ploopyco/trackball_thumb/trackball_thumb.c index bbc782da45..326410cf13 100644 --- a/keyboards/ploopyco/trackball_thumb/trackball_thumb.c +++ b/keyboards/ploopyco/trackball_thumb/trackball_thumb.c @@ -17,6 +17,7 @@ */ #include "trackball_thumb.h" +#include "encoder.h" #ifndef OPT_DEBOUNCE # define OPT_DEBOUNCE 5 // (ms) Time between scroll events @@ -57,9 +58,6 @@ uint16_t last_mid_click = 0; // Stops scrollwheel from being read if it was bool debug_encoder = false; bool is_drag_scroll = false; -// require, since core encoder.c (where is is normally defined isn't present -__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; @@ -75,25 +73,25 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { return true; } -void encoder_init(void) { opt_encoder_init(); } +void encoder_driver_init(void) { opt_encoder_init(); } -bool encoder_read(void) { +void encoder_driver_task(void) { // Lovingly ripped from the Ploopy Source // If the mouse wheel was just released, do not scroll. if (timer_elapsed(last_mid_click) < SCROLL_BUTT_DEBOUNCE) { - return false; + return; } // Limit the number of scrolls per unit time. if (timer_elapsed(last_scroll) < OPT_DEBOUNCE) { - return false; + return; } // Don't scroll if the middle button is depressed. if (is_scroll_clicked) { #ifndef IGNORE_SCROLL_CLICK - return false; + return; #endif } @@ -104,10 +102,8 @@ bool encoder_read(void) { int dir = opt_encoder_handler(p1, p2); - if (dir == 0) return false; - ; - encoder_update_kb(0, dir == 1); - return true; + if (dir == 0) return; + encoder_queue_event(0, dir == 1); } report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { diff --git a/keyboards/ploopyco/trackball_thumb/trackball_thumb.h b/keyboards/ploopyco/trackball_thumb/trackball_thumb.h index 8ee17634f1..50a71601cf 100644 --- a/keyboards/ploopyco/trackball_thumb/trackball_thumb.h +++ b/keyboards/ploopyco/trackball_thumb/trackball_thumb.h @@ -28,9 +28,6 @@ #define OPT_ENC1_MUX 4 #define OPT_ENC2_MUX 0 -bool encoder_update_kb(uint8_t index, bool clockwise); -bool encoder_update_user(uint8_t index, bool clockwise); - typedef union { uint32_t raw; struct { |