Skip to content

Commit

Permalink
Bastard Keyboards: upstream recent changes (qmk#18903)
Browse files Browse the repository at this point in the history
* bastardkb: cleanup blackpill configuration

Fixes #17

* bastardkb: fix splinky configuration

The pinout of the splinky changed between the last beta batch, and the
production one. This commit updates the keyboard definition to support
the new pinout by default, while offering backward compatibility.

Define `SPLINKY_BETA_PINOUT` to build the firmware with pre-production
pinout.

Fixes #15

* bastardkb: add support for STeMCell

* Update scylla/tbkmini/skeletyl outdated readmes

* bastardkb/dilemma: enable circular scroll

* bastardkb/dilemma: add initial version of the `via` keymap

* bastardkb/dilemma/assembled: add new keyboard

Fixes #20

* bastardkb/dilemma: remove elite-c

* Initial support for the Dilemma 3x5+3 Assembled RGB

* Address code review comments

* Address more comments

* Address review comments

* Address more nits

* bastardkb: split splinky-based keyboards to distinguish between Splinky v2 and v3 pinout
  • Loading branch information
0xcharly authored Nov 15, 2022
1 parent ee7426e commit 30b2dbe
Show file tree
Hide file tree
Showing 139 changed files with 2,792 additions and 300 deletions.
2 changes: 1 addition & 1 deletion keyboards/bastardkb/charybdis/3x5/blackpill/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,5 @@
#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4

/* PMW3360 settings. */
#define PMW33XX_CS_PIN B14
#define POINTING_DEVICE_CS_PIN B14
#define PMW33XX_CS_DIVISOR 64
4 changes: 1 addition & 3 deletions keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
*
Expand All @@ -20,10 +20,8 @@

#define HAL_USE_PWM TRUE
#define HAL_USE_SERIAL TRUE
//#define HAL_USE_I2C TRUE
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
//#define HAL_USE_GPT TRUE

#include_next "halconf.h"
16 changes: 0 additions & 16 deletions keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@

#include_next "mcuconf.h"

#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

#undef STM32_I2C_I2C1_RX_DMA_STREAM
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#undef STM32_I2C_I2C1_TX_DMA_STREAM
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)

#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE

Expand All @@ -46,14 +38,6 @@
#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE

// #undef STM32_SERIAL_USE_USART2
// #define STM32_SERIAL_USE_USART2 TRUE

// #undef STM32_UART_USART2_RX_DMA_STREAM
// #define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
// #undef STM32_UART_USART2_TX_DMA_STREAM
// #define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)

#undef STM32_GPT_USE_TIM4
#define STM32_GPT_USE_TIM4 TRUE

Expand Down
4 changes: 1 addition & 3 deletions keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by def
RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality
RGB_MATRIX_DRIVER = WS2812

# Charybdis nano is a split 3x5 keyboard with a maximum of 3 thumb keys (2 on
# the trackball side).
SPLIT_KEYBOARD = yes
LAYOUTS = split_3x5_3 # Support community layout, in particular Manna-Harbour's Miryoku layout
LAYOUTS = split_3x5_3

POINTING_DEVICE_ENABLE = yes # Enable trackball
POINTING_DEVICE_DRIVER = pmw3360
Expand Down
1 change: 1 addition & 0 deletions keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* 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

enum charybdis_keymap_layers {
Expand Down
2 changes: 1 addition & 1 deletion keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,4 @@
#define RGB_DI_PIN D3

/* PMW3360 settings. */
#define PMW33XX_CS_PIN B0
#define POINTING_DEVICE_CS_PIN B0
2 changes: 1 addition & 1 deletion keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@
#define RGB_DI_PIN D3

/* PMW3360 settings. */
#define PMW33XX_CS_PIN F0
#define POINTING_DEVICE_CS_PIN F0
70 changes: 65 additions & 5 deletions keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
/* Key matrix configuration. */
#define MATRIX_ROW_PINS \
{ GP26, GP5, GP4, GP9 }
#define MATRIX_COL_PINS \
{ GP28, GP15, GP6, GP7, GP8 }

/* Handedness. */
#define MASTER_RIGHT
Expand All @@ -39,12 +37,74 @@

/* SPI & PMW3360 settings. */
#define SPI_DRIVER SPID0
#define SPI_SCK_PIN GP18
#define SPI_MOSI_PIN GP19
#define SPI_MISO_PIN GP20
#define PMW33XX_CS_PIN GP14

/* Reset. */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U

/** RGB Matrix. */

#ifdef RGB_MATRIX_ENABLE
// Enable all animations on ARM boards since they have plenty of memory
// available for it.
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_SAT
# define ENABLE_RGB_MATRIX_BAND_VAL
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_ALL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# define ENABLE_RGB_MATRIX_RAINDROPS
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
# define ENABLE_RGB_MATRIX_HUE_WAVE
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_MULTISPLASH
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

// Limit maximum brightness to keep power consumption reasonable, and avoid
// disconnects.
# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64

// Rainbow swirl as startup mode.
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT

// Slow swirl at startup.
# define RGB_MATRIX_STARTUP_SPD 32

// Startup values.
# define RGB_MATRIX_STARTUP_HUE 0
# define RGB_MATRIX_STARTUP_SAT 255
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define RGB_MATRIX_STARTUP_HSV RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL
#endif // RGB_MATRIX_ENABLE
6 changes: 6 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/splinky/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Splinky controller

The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040.

See https://github.com/plut0nium/0xB2/#releases to figure out the right version
for you (v2 and v3) supported.
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "quantum.h"
#pragma once

// Forward declare RP2040 SDK declaration.
void gpio_init(uint gpio);
/* Key matrix configuration. */
#define MATRIX_COL_PINS \
{ GP28, GP15, GP6, GP7, GP8 }

void keyboard_pre_init_kb(void) {
// Ensures that GP26 through GP29 are initialized as digital inputs (as
// opposed to analog inputs). These GPIOs are shared with A0 through A3,
// respectively. On RP2040-B2 and later, the digital inputs are disabled by
// default (see RP2040-E6).
gpio_init(GP26);
gpio_init(GP27);
gpio_init(GP28);
gpio_init(GP29);
keyboard_pre_init_user();
}
/* SPI & PMW3360 settings. */
#define SPI_SCK_PIN GP18
#define SPI_MOSI_PIN GP19
#define POINTING_DEVICE_CS_PIN GP14
2 changes: 2 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Intentionally blank so that QMK detects this folder as a valid keyboard
# parameter.
27 changes: 27 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
*
* 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

/* Key matrix configuration. */
#define MATRIX_COL_PINS \
{ GP28, GP21, GP6, GP7, GP8 }

/* SPI & PMW3360 settings. */
#define SPI_SCK_PIN GP22
#define SPI_MOSI_PIN GP23
#define POINTING_DEVICE_CS_PIN GP16
2 changes: 2 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Intentionally blank so that QMK detects this folder as a valid keyboard
# parameter.
63 changes: 63 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
*
* 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

/* Key matrix configuration. */
#define MATRIX_ROW_PINS \
{ F7, C6, D4, B5 }
#define MATRIX_COL_PINS \
{ F5, B6, D7, E6, B4 }

/* Handedness. */
#define MASTER_RIGHT

// To use the handedness pin, resistors need to be installed on the adapter PCB.
// If so, uncomment the following code, and undefine MASTER_RIGHT above.
// #define A0 PAL_LINE(GPIOA, 0)
// #define SPLIT_HAND_PIN A0
// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.

/* serial.c configuration (for split keyboard). */
#define SOFT_SERIAL_PIN D2

/* RGB settings. */
#define RGB_DI_PIN D3
#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 4
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM7
#define WS2812_DMA_CHANNEL 3

/* CRC. */
#define CRC8_USE_TABLE
#define CRC8_OPTIMIZE_SPEED

/* SPI config for pmw3360 sensor. */
#define SPI_DRIVER SPID1
#define SPI_SCK_PIN B1
#define SPI_SCK_PAL_MODE 5
#define SPI_MOSI_PIN B2
#define SPI_MOSI_PAL_MODE 5
#define SPI_MISO_PIN B3
#define SPI_MISO_PAL_MODE 5

/* PMW3360 settings. */
#define A1 PAL_LINE(GPIOA, 1)
#define POINTING_DEVICE_CS_PIN A1
#define PMW3360_CS_MODE 3
#define PMW3360_CS_DIVISOR 64
24 changes: 24 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
*
* 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 HAL_USE_PWM TRUE
#define HAL_USE_SERIAL TRUE
#define HAL_USE_SPI TRUE

#include_next <halconf.h>
6 changes: 6 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"keyboard_name": "Charybdis Nano (3x5) STeMCell",
"usb": {
"device_version": "2.0.0"
}
}
32 changes: 32 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
*
* 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

#include_next <mcuconf.h>

#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE

#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 FALSE

#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE

#undef STM32_ST_USE_TIMER
#define STM32_ST_USE_TIMER 5
Loading

0 comments on commit 30b2dbe

Please sign in to comment.