Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Keyboard] Bug fixes and improvements to PloopyCo devices #10573

Merged
merged 25 commits into from
Oct 27, 2020
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion keyboards/ploopyco/mouse/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#define VENDOR_ID 0x5043
#define PRODUCT_ID 0x4D6F
#define DEVICE_VER 0x0001
#define MANUFACTURER Ploopyco
#define MANUFACTURER PloopyCo
#define PRODUCT Mouse

/* key matrix size */
Expand Down
3 changes: 2 additions & 1 deletion keyboards/ploopyco/mouse/info.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"keyboard_name": "PloopyCo Mouse",
"url": "",
"url": "www.ploopy.co",
"maintainer": "drashna",
"manufacturer": "Ploopy Corporation",
"width": 8,
"height": 3,
"layouts": {
Expand Down
4 changes: 3 additions & 1 deletion keyboards/ploopyco/mouse/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
*/
#include QMK_KEYBOARD_H

// safe range starts at `PLOOPY_SAFE_RANGE` instead.

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(/* Base */
C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_C), KC_BTN4, KC_BTN5, C(KC_Z)),
C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_V), KC_BTN4, KC_BTN5, DPI_CONFIG)
};
21 changes: 21 additions & 0 deletions keyboards/ploopyco/mouse/keymaps/via/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
* Copyright 2019 Sunjun Kim
* Copyright 2020 Ploopy Corporation
*
* 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/>.
*/

#pragma once

#define DYNAMIC_KEYMAP_LAYER_COUNT 8
7 changes: 5 additions & 2 deletions keyboards/ploopyco/mouse/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(/* Base */
C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_C), KC_BTN4, KC_BTN5, C(KC_Z)),
[0] = LAYOUT(C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_V), KC_BTN4, KC_BTN5, C(KC_Z)),
[1] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[2] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[3] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[4] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[5] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[6] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______),
[7] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______)
};
45 changes: 43 additions & 2 deletions keyboards/ploopyco/mouse/mouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,19 @@
#ifndef OPT_SCALE
# define OPT_SCALE 1 // Multiplier for wheel
#endif
#ifndef PLOOPY_DPI_OPTIONS
# define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 }
# ifndef PLOOPY_DPI_DEFAULT
# define PLOOPY_DPI_DEFAULT 1
# endif
#endif
#ifndef PLOOPY_DPI_DEFAULT
# define PLOOPY_DPI_DEFAULT 0
#endif

keyboard_config_t keyboard_config;
uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))

// TODO: Implement libinput profiles
// https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html
Expand Down Expand Up @@ -137,11 +150,18 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
}

// Update Timer to prevent accidental scrolls
if ((record->event.key.col == 2) && (record->event.key.row == 0)) {
if ((record->event.key.col == 1) && (record->event.key.row == 0)) {
lastMidClick = timer_read();
is_scroll_clicked = record->event.pressed;
}

if (!process_record_user(keycode, record)) { return false; }

if (keycode == DPI_CONFIG && record->event.pressed) {
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
eeconfig_update_kb(keyboard_config.raw);
pmw_set_cpi(dpi_array[keyboard_config.dpi_config]);
}
/* If Mousekeys is disabled, then use handle the mouse button
* keycodes. This makes things simpler, and allows usage of
* the keycodes in a consistent manner. But only do this if
Expand Down Expand Up @@ -177,7 +197,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
}
#endif

return process_record_user(keycode, record);
return true;
}

// Hardware Setup
Expand Down Expand Up @@ -235,3 +255,24 @@ void pointing_device_task(void) {
pointing_device_send();
}
}

void eeconfig_init_kb(void) {
keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT;
eeconfig_update_kb(keyboard_config.raw);
}

void matrix_init_kb(void) {
// is safe to just read DPI setting since matrix init
// comes before pointing device init.
keyboard_config.raw = eeconfig_read_kb();
if (keyboard_config.dpi_config > DPI_OPTION_SIZE) {
eeconfig_init_kb();
}
matrix_init_user();
}

void keyboard_post_init_kb(void) {
pmw_set_cpi(dpi_array[keyboard_config.dpi_config]);

keyboard_post_init_user();
}
16 changes: 15 additions & 1 deletion keyboards/ploopyco/mouse/mouse.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

#include "quantum.h"
#include "spi_master.h"
#include "pmw3600.h"
#include "pmw3360.h"
#include "analog.h"
#include "opt_encoder.h"
#include "pointing_device.h"
Expand All @@ -38,3 +38,17 @@ void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v);

#define LAYOUT(BLL, BL, BM, BR, BRR, BF, BB, BDPI) \
{ {BL, BM, BR, BF, BB, BRR, BLL, BDPI}, }

typedef union {
uint32_t raw;
struct {
uint8_t dpi_config;
};
} keyboard_config_t;

extern keyboard_config_t keyboard_config;

enum ploopy_keycodes {
DPI_CONFIG = SAFE_RANGE,
PLOOPY_SAFE_RANGE,
};
15 changes: 12 additions & 3 deletions keyboards/ploopyco/mouse/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Make example for this keyboard (after setting up your build environment):

make ploopyco/mouse:default:flash

To jump to the bootloader, hold down "Button 4" (immediate right of the Mouse)
To jump to the bootloader, hold down "Button 4" (the "forward" button on the left side)

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

Expand All @@ -40,9 +40,18 @@ This should allow you to more heavily customize the behavior.

Alternatively, the `process_wheel` and `process_mouse` functions can both be replaced too, to allow for even more functionality.

Additionally, you can change the DPI/CPI or speed of the Mouse by calling `pmw_set_cpi` at any time. And tThe default can be changed by adding a define to the keymap's `config.h` file:
Additionally, you can change the DPI/CPI or speed of the krackball by calling `pmw_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 1200, 1600, and 2400, but can be changed. 1600 is also set to the default.

To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`.

```c
#define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 }
#define PLOOPY_DPI_DEFAULT 1
```
The `PLOOPY_DPI_OPTIONS` array sets the values that you want to be able to cycle through, and the order they are in. The "default" define lets the firmware know which of these options is the default and should be loaded by default.

The `DPI_CONFIG` macro will cycle through the values in the array, each time you hit it. And it stores this value in persistent memory, so it will load it the next time the device powers up.

#define PMW_CPI 1600

# Programming QMK-DFU onto the PloopyCo Mouse

Expand Down
2 changes: 1 addition & 1 deletion keyboards/ploopyco/mouse/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ POINTING_DEVICE_ENABLE = yes
MOUSEKEY_ENABLE = no # Mouse keys

QUANTUM_LIB_SRC += analog.c spi_master.c
SRC += pmw3600.c opt_encoder.c
SRC += pmw3360.c opt_encoder.c
10 changes: 6 additions & 4 deletions keyboards/ploopyco/pmw3600.c → keyboards/ploopyco/pmw3360.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@
*/


#include "pmw3600.h"
#include "pmw3600_firmware.h"
#include "pmw3360.h"
#include "pmw3360_firmware.h"

#ifdef CONSOLE_ENABLE
# include "print.h"
#endif
Expand All @@ -30,8 +31,9 @@ bool _inBurst = false;
#ifndef SPI_DIVISOR
# define SPI_DIVISOR 2
#endif

static const int8_t ROTATIONAL_TRANSFORM_ANGLE = 20;
#ifndef ROTATIONAL_TRANSFORM_ANGLE
# define ROTATIONAL_TRANSFORM_ANGLE 0x00
#endif

#ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); }
Expand Down
File renamed without changes.
16 changes: 11 additions & 5 deletions keyboards/ploopyco/trackball/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
/* USB Device descriptor parameter */
#define VENDOR_ID 0x5043
#define PRODUCT_ID 0x5442
#define DEVICE_VER 0x0001
#define MANUFACTURER Ploopyco
#define PRODUCT Trackball
#define DEVICE_VER 0x0001
#define MANUFACTURER PloopyCo
#define PRODUCT Trackball

/* key matrix size */
#define MATRIX_ROWS 1
Expand All @@ -41,11 +41,15 @@
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define DIRECT_PINS { { D4, D2, E6, B5, D7 } }
#define DIRECT_PINS \
{ \
{ D4, D2, E6, B5, D7 } \
}

// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
#define UNUSED_PINS { D1, D3, B4, B6, B7, D6, C7, F6, F5, F3 }
#define UNUSED_PINS \
{ D1, D3, B4, B6, B7, D6, C7, F6, F5, F3 }

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
Expand All @@ -67,3 +71,5 @@
/* Bootmagic Lite key configuration */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 3

#define ROTATIONAL_TRANSFORM_ANGLE 20
3 changes: 2 additions & 1 deletion keyboards/ploopyco/trackball/info.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"keyboard_name": "PloopyCo Trackball",
"url": "",
"url": "www.ploopy.co",
"maintainer": "drashna",
"manufacturer": "Ploopy Corporation",
"width": 8,
"height": 3,
"layouts": {
Expand Down
1 change: 1 addition & 0 deletions keyboards/ploopyco/trackball/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/
#include QMK_KEYBOARD_H

// safe range starts at `PLOOPY_SAFE_RANGE` instead.

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
Expand Down
21 changes: 21 additions & 0 deletions keyboards/ploopyco/trackball/keymaps/via/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
* Copyright 2019 Sunjun Kim
* Copyright 2020 Ploopy Corporation
*
* 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/>.
*/

#pragma once

#define DYNAMIC_KEYMAP_LAYER_COUNT 8
12 changes: 8 additions & 4 deletions keyboards/ploopyco/trackball/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_BTN1, KC_BTN3, KC_BTN2,
KC_BTN4, KC_BTN5
),
[0] = LAYOUT( KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5 ),
[1] = LAYOUT( _______, _______, _______, _______, _______ ),
[2] = LAYOUT( _______, _______, _______, _______, _______ ),
[3] = LAYOUT( _______, _______, _______, _______, _______ ),
[4] = LAYOUT( _______, _______, _______, _______, _______ ),
[5] = LAYOUT( _______, _______, _______, _______, _______ ),
[6] = LAYOUT( _______, _______, _______, _______, _______ ),
[7] = LAYOUT( _______, _______, _______, _______, _______ )
};
12 changes: 10 additions & 2 deletions keyboards/ploopyco/trackball/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,17 @@ This should allow you to more heavily customize the behavior.

Alternatively, the `process_wheel` and `process_mouse` functions can both be replaced too, to allow for even more functionality.

Additionally, you can change the DPI/CPI or speed of the trackball by calling `pmw_set_cpi` at any time. And tThe default can be changed by adding a define to the keymap's `config.h` file:
Additionally, you can change the DPI/CPI or speed of the trackball by calling `pmw_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 1200, 1600, and 2400, but can be changed. 1600 is also set to the default.

#define PMW_CPI 1600
To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`.

```c
#define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 }
#define PLOOPY_DPI_DEFAULT 1
```
The `PLOOPY_DPI_OPTIONS` array sets the values that you want to be able to cycle through, and the order they are in. The "default" define lets the firmware know which of these options is the default and should be loaded by default.

The `DPI_CONFIG` macro will cycle through the values in the array, each time you hit it. And it stores this value in persistent memory, so it will load it the next time the device powers up.

# Programming QMK-DFU onto the PloopyCo Trackball

Expand Down
2 changes: 1 addition & 1 deletion keyboards/ploopyco/trackball/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ POINTING_DEVICE_ENABLE = yes
MOUSEKEY_ENABLE = no # Mouse keys

QUANTUM_LIB_SRC += analog.c spi_master.c
SRC += pmw3600.c opt_encoder.c
SRC += pmw3360.c opt_encoder.c
Loading