diff options
Diffstat (limited to 'keyboards/bastardkb/charybdis/4x6')
22 files changed, 491 insertions, 74 deletions
diff --git a/keyboards/bastardkb/charybdis/4x6/4x6.c b/keyboards/bastardkb/charybdis/4x6/4x6.c index 6cd8fffee7..85e8b5fdd1 100644 --- a/keyboards/bastardkb/charybdis/4x6/4x6.c +++ b/keyboards/bastardkb/charybdis/4x6/4x6.c @@ -36,6 +36,10 @@ * 26 27 28 53 54 XX * 25 24 55 XX * ╰────────────╯ ╰────────────╯ + * + * Note: the LED config simulates 58 LEDs instead of the actual 56 to prevent + * confusion when testing LEDs during assembly when handedness is not set + * correctly. Those fake LEDs are bound to the physical bottom-left corner. */ led_config_t g_led_config = { { /* Key Matrix to LED index. */ @@ -70,6 +74,7 @@ led_config_t g_led_config = { { /* index=45 */ { 160, 0 }, { 160, 12 }, { 160, 24 }, { 160, 36 }, /* index=49 */ { 144, 0 }, { 144, 12 }, { 144, 24 }, { 144, 36 }, /* index=53 */ { 112, 52 }, { 128, 64 }, { 112, 64 }, + /* index=56 */ { 0, 0 }, { 0, 0 }, }, { /* LED index to flag. */ // Left split. @@ -89,6 +94,7 @@ led_config_t g_led_config = { { /* index=45 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, /* index=49 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, /* index=53 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster + /* index=55 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster fakes } }; #endif // clang-format on diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h new file mode 100644 index 0000000000..2514a52fb0 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h @@ -0,0 +1,62 @@ +/* + * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + * Copyright 2021 Stefan Kerkmann (@KarlK90) + * 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 Publicw 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 \ + { B15, A2, B8, A8, B9 } +#define MATRIX_COL_PINS \ + { B0, B1, B10, B3, B4, B5 } + +/* Handedness. */ +#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. + +/* RGB settings. */ +#define RGB_DI_PIN A1 +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_EXTERNAL_PULLUP +#define WS2812_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_DMA_CHANNEL 3 +#define WS2812_PWM_TARGET_PERIOD 800000 + +/* Serial configuration for split keyboard. */ +#define SERIAL_USART_TX_PIN A9 + +/* CRC. */ +#define CRC8_USE_TABLE +#define CRC8_OPTIMIZE_SPEED + +/* SPI config for EEPROM and pmw3360 sensor. */ +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN A5 +#define SPI_SCK_PAL_MODE 5 +#define SPI_MOSI_PIN A7 +#define SPI_MOSI_PAL_MODE 5 +#define SPI_MISO_PIN A6 +#define SPI_MISO_PAL_MODE 5 + +/* EEPROM config. */ +#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 + +/* PMW3360 settings. */ +#define PMW33XX_CS_PIN B14 +#define PMW33XX_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h new file mode 100644 index 0000000000..a89dff0cd3 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h @@ -0,0 +1,29 @@ +/* + * Copyright 2020 Nick Brassel (tzarc) + * 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_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" diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/info.json b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json new file mode 100644 index 0000000000..788783c679 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "Charybdis (4x6) Blackpill", + "usb": { + "device_version": "1.0.0", + }, +} diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h new file mode 100644 index 0000000000..1615d1bf46 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h @@ -0,0 +1,61 @@ +/* + * Copyright 2020 Nick Brassel (tzarc) + * Copyright 2021 Stefan Kerkmann (@KarlK90) + * 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_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 + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +#undef STM32_SPI_SPI1_RX_DMA_STREAM +#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) +#undef STM32_SPI_SPI1_TX_DMA_STREAM +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) + +#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 + +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md b/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md new file mode 100644 index 0000000000..bbae15bb85 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md @@ -0,0 +1,3 @@ +# Charybdis (4x6) BlackPill + +An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod. diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk new file mode 100644 index 0000000000..6123ec58b7 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk @@ -0,0 +1,40 @@ +# MCU name +MCU = STM32F411 +BOARD = BLACKPILL_STM32_F411 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +AUDIO_SUPPORTED = no # Audio is not supported. +RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default. +RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default. +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality +RGB_MATRIX_DRIVER = WS2812 + +# Charybdis is a split 4x6 keyboard with a maximum of 5 thumb keys (3 on the +# trackball side). +SPLIT_KEYBOARD = yes + +POINTING_DEVICE_ENABLE = yes # Enable trackball +POINTING_DEVICE_DRIVER = pmw3360 +MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint +KEYBOARD_SHARED_EP = yes + +EEPROM_DRIVER = spi +WS2812_DRIVER = pwm +SERIAL_DRIVER = usart + +DEBOUNCE_TYPE = asym_eager_defer_pk diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h index 6760129ef8..f0c1f48cdf 100644 --- a/keyboards/bastardkb/charybdis/4x6/config.h +++ b/keyboards/bastardkb/charybdis/4x6/config.h @@ -18,55 +18,24 @@ #pragma once -#define VENDOR_ID 0xA8F8 -#define PRODUCT_ID 0x1833 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Bastard Keyboards -#define PRODUCT Charybdis +#include "config_common.h" /* Key matrix configuration. */ - -// Rows are doubled-up. -#define MATRIX_ROWS 10 +#define MATRIX_ROWS 10 // Rows are doubled-up. #define MATRIX_COLS 6 -// Wiring configuration for each half. -#define MATRIX_ROW_PINS \ - { F1, B7, C6, D4, B5 } -#define MATRIX_COL_PINS \ - { D5, C7, F0, D7, E6, B4 } - -#define MATRIX_ROW_PINS_RIGHT \ - { D5, F0, C6, D4, B5 } -#define MATRIX_COL_PINS_RIGHT \ - { F1, C7, B7, D7, E6, B4 } - #define DIODE_DIRECTION ROW2COL -#define ROTATIONAL_TRANSFORM_ANGLE -25 - -/* Handedness. */ -#define MASTER_RIGHT - -/* Bootmagic Lite configuration. */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 -#define BOOTMAGIC_LITE_ROW_RIGHT 5 -#define BOOTMAGIC_LITE_COLUMN_RIGHT 0 - -/* serial.c configuration (for split keyboard) */ -#define SOFT_SERIAL_PIN D2 - -/* Set 0 if debouncing isn't needed */ +/* Set 0 if debouncing isn't needed. */ #define DEBOUNCE 5 -/* PMW33XX settings. */ -#define PMW33XX_CS_PIN B0 +/* Trackball angle adjustment. */ +#define ROTATIONAL_TRANSFORM_ANGLE -25 -#define RGB_DI_PIN D3 -#define RGBLED_NUM 56 +/* RGB settings. */ +#define RGBLED_NUM 58 #define RGBLED_SPLIT \ - { 29, 27 } + { 29, 29 } /* RGB matrix support. */ #ifdef RGB_MATRIX_ENABLE diff --git a/keyboards/bastardkb/charybdis/4x6/info.json b/keyboards/bastardkb/charybdis/4x6/info.json index 956dfe88f5..4bd0983709 100644 --- a/keyboards/bastardkb/charybdis/4x6/info.json +++ b/keyboards/bastardkb/charybdis/4x6/info.json @@ -1,7 +1,8 @@ { - "keyboard_name": "Charybdis", - "url": "https://www.bastardkb.com", - "maintainer": "Quentin Lebastard", + "url": "https://bastardkb.com/charybdis", + "usb": { + "pid": "0x1833", + }, "layouts": { "LAYOUT_charybdis_4x6": { "layout": [ diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c index 1d3142faac..e0cee41221 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, + RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_P0 @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, + KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h index 75eb2240f3..c31e39261e 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h @@ -19,7 +19,7 @@ #ifdef VIA_ENABLE /* VIA configuration. */ # define DYNAMIC_KEYMAP_LAYER_COUNT 4 -#endif // VIA_ENABLE +#endif // VIA_ENABLE /* Disable unused features. */ #define NO_ACTION_ONESHOT @@ -33,21 +33,16 @@ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term */ # define TAPPING_TERM 200 -#endif // TAPPING_TERM +#endif // TAPPING_TERM /* Charybdis-specific features. */ #ifdef POINTING_DEVICE_ENABLE -// Enable pointer acceleration, which increases the speed by ~2x for large -// displacement, while maintaining 1x speed for slow movements. -// - `CHARYBDIS_POINTER_ACCELERATION_FACTOR` -# define CHARYBDIS_POINTER_ACCELERATION_ENABLE - // Automatically enable the pointer layer when moving the trackball. See also: // - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS` // - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD` // #define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE -#endif // POINTING_DEVICE_ENABLE +#endif // POINTING_DEVICE_ENABLE /* RGB Matrix. */ @@ -69,4 +64,4 @@ # 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 +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c index cf24fea3c0..8c55855af1 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c @@ -18,7 +18,7 @@ #ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE # include "timer.h" -#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE enum charybdis_keymap_layers { LAYER_BASE = 0, @@ -35,18 +35,25 @@ static uint16_t auto_pointer_layer_timer = 0; # ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS # define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000 -# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS +# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS # ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD # define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8 -# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD -#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD +#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE #define LOWER MO(LAYER_LOWER) #define RAISE MO(LAYER_RAISE) #define PT_Z LT(LAYER_POINTER, KC_Z) #define PT_SLSH LT(LAYER_POINTER, KC_SLSH) +#ifndef POINTING_DEVICE_ENABLE +# define DRGSCRL KC_NO +# define DPI_MOD KC_NO +# define S_D_MOD KC_NO +# define SNIPING KC_NO +#endif // !POINTING_DEVICE_ENABLE + // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_BASE] = LAYOUT_charybdis_4x6( @@ -102,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, _______, DRGSCRL, SNIPING, EEP_RST, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX, + XXXXXXX, _______, DRGSCRL, SNIPING, EEP_RST, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1, XXXXXXX, KC_BTN2, KC_BTN2 @@ -120,33 +127,31 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { # ifdef RGB_MATRIX_ENABLE rgb_matrix_mode_noeeprom(RGB_MATRIX_NONE); rgb_matrix_sethsv_noeeprom(HSV_GREEN); -# endif // RGB_MATRIX_ENABLE +# endif // RGB_MATRIX_ENABLE } auto_pointer_layer_timer = timer_read(); } return mouse_report; } -void matrix_scan_kb(void) { +void matrix_scan_user(void) { if (auto_pointer_layer_timer != 0 && TIMER_DIFF_16(timer_read(), auto_pointer_layer_timer) >= CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS) { auto_pointer_layer_timer = 0; layer_off(LAYER_POINTER); # ifdef RGB_MATRIX_ENABLE rgb_matrix_mode_noeeprom(RGB_MATRIX_STARTUP_MODE); -# endif // RGB_MATRIX_ENABLE +# endif // RGB_MATRIX_ENABLE } - matrix_scan_user(); } -# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE +# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE # ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER -layer_state_t layer_state_set_kb(layer_state_t state) { - state = layer_state_set_user(state); +layer_state_t layer_state_set_user(layer_state_t state) { charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER)); return state; } -# endif // CHARYBDIS_AUTO_SNIPING_ON_LAYER -#endif // POINTING_DEVICE_ENABLE +# endif // CHARYBDIS_AUTO_SNIPING_ON_LAYER +#endif // POINTING_DEVICE_ENABLE #ifdef RGB_MATRIX_ENABLE // Forward-declare this helper function since it is defined in rgb_matrix.c. @@ -158,9 +163,9 @@ void shutdown_user(void) { rgblight_enable_noeeprom(); rgblight_mode_noeeprom(1); rgblight_setrgb_red(); -#endif // RGBLIGHT_ENABLE +#endif // RGBLIGHT_ENABLE #ifdef RGB_MATRIX_ENABLE rgb_matrix_set_color_all(RGB_RED); rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE +#endif // RGB_MATRIX_ENABLE } diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h new file mode 100644 index 0000000000..15044ef645 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h @@ -0,0 +1,42 @@ +/* + * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna) + * 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 + +/* Key matrix configuration. */ +#define MATRIX_ROW_PINS \ + { F1, B7, C6, D4, B5 } +#define MATRIX_COL_PINS \ + { D5, C7, F0, D7, E6, B4 } + +#define MATRIX_ROW_PINS_RIGHT \ + { D5, F0, C6, D4, B5 } +#define MATRIX_COL_PINS_RIGHT \ + { F1, C7, B7, D7, E6, B4 } + +/* Handedness. */ +#define MASTER_RIGHT + +/* serial.c configuration (for split keyboard). */ +#define SOFT_SERIAL_PIN D2 + +/* RGB settings. */ +#define RGB_DI_PIN D3 + +/* PMW3360 settings. */ +#define PMW33XX_CS_PIN B0 diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json b/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json new file mode 100644 index 0000000000..4ea658a7d9 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "Charybdis (4x6) Elite-C", + "usb": { + "device_version": "1.0.0", + }, +} diff --git a/keyboards/bastardkb/charybdis/4x6/rules.mk b/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk index e137f5d4cc..fa5fe80405 100644 --- a/keyboards/bastardkb/charybdis/4x6/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk @@ -23,15 +23,14 @@ 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 -# Enable link-time optimization by default. The Charybdis packs a lot of -# features (RGB, Via, trackball) in a small atmega32u4 package. -LTO_ENABLE = yes - # Charybdis is a split 4x6 keyboard with a maximum of 5 thumb keys (3 on the # trackball side). SPLIT_KEYBOARD = yes POINTING_DEVICE_ENABLE = yes # Enable trackball POINTING_DEVICE_DRIVER = pmw3360 -# https://qmk.fm/changes/2018-11-16-use-a-single-endpoint-for-hid-reports MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint + +# Enable link-time optimization by default. The Charybdis packs a lot of +# features (RGB, Via, trackball) in a small atmega32u4 package. +LTO_ENABLE = yes diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h new file mode 100644 index 0000000000..891e511ccb --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h @@ -0,0 +1,36 @@ +/* + * 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 \ + { F4, F7, C6, D4, B5 } +#define MATRIX_COL_PINS \ + { F6, F5, B6, D7, E6, B4 } + +/* Handedness. */ +#define MASTER_RIGHT + +/* serial.c configuration (for split keyboard). */ +#define SOFT_SERIAL_PIN D2 + +/* RGB settings. */ +#define RGB_DI_PIN D3 + +/* PMW3360 settings. */ +#define PMW33XX_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json b/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json new file mode 100644 index 0000000000..151c0e1ca3 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "Charybdis (4x6) Elite-C", + "usb": { + "device_version": "2.0.0", + }, +} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk new file mode 100644 index 0000000000..fa5fe80405 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk @@ -0,0 +1,36 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +AUDIO_SUPPORTED = no # Audio is not supported. +RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default. +RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default. +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality +RGB_MATRIX_DRIVER = WS2812 + +# Charybdis is a split 4x6 keyboard with a maximum of 5 thumb keys (3 on the +# trackball side). +SPLIT_KEYBOARD = yes + +POINTING_DEVICE_ENABLE = yes # Enable trackball +POINTING_DEVICE_DRIVER = pmw3360 +MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint + +# Enable link-time optimization by default. The Charybdis packs a lot of +# features (RGB, Via, trackball) in a small atmega32u4 package. +LTO_ENABLE = yes diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h new file mode 100644 index 0000000000..e17ec49726 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h @@ -0,0 +1,50 @@ +/* + * 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 \ + { GP29, GP26, GP5, GP4, GP9 } +#define MATRIX_COL_PINS \ + { GP27, GP28, GP15, GP6, GP7, GP8 } + +/* 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 SPLIT_HAND_PIN GP13 +// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. + +/* serial.c configuration (for split keyboard). */ +#define SOFT_SERIAL_PIN GP1 + +/* RGB settings. */ +#define RGB_DI_PIN GP0 + +/* 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 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json b/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json new file mode 100644 index 0000000000..0004eb81c9 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "Charybdis (4x6) Splinky", + "usb": { + "device_version": "2.0.0", + }, +} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h new file mode 100644 index 0000000000..0fdd67c3a2 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h @@ -0,0 +1,23 @@ +/* + * 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 + +#include_next "mcuconf.h" + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk new file mode 100644 index 0000000000..13c1b39961 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk @@ -0,0 +1,36 @@ +# MCU name +MCU = RP2040 + +# Bootloader selection +BOOTLOADER = rp2040 + +# RP2040-specific options +ALLOW_WARNINGS = yes +PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +AUDIO_SUPPORTED = no # Audio is not supported +RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default +RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality +RGB_MATRIX_DRIVER = WS2812 + +SPLIT_KEYBOARD = yes + +POINTING_DEVICE_ENABLE = yes # Enable trackball +POINTING_DEVICE_DRIVER = pmw3360 + +SERIAL_DRIVER = vendor +WS2812_DRIVER = vendor |