diff --git a/data/mappings/defaults.hjson b/data/mappings/defaults.hjson
index ea9f6972c5a..10657e5aa06 100644
--- a/data/mappings/defaults.hjson
+++ b/data/mappings/defaults.hjson
@@ -70,7 +70,7 @@
"bonsai_c4": {
"processor": "STM32F411",
"bootloader": "stm32-dfu",
- "board": "GENERIC_STM32_F411XE",
+ "board": "BONSAI_C4",
"pin_compatible": "promicro"
}
}
diff --git a/docs/config_options.md b/docs/config_options.md
index a6ceb199de5..6b1f83214c7 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -207,7 +207,7 @@ If you define these options you will enable the associated feature, which may in
* `#define COMBO_NO_TIMER`
* Disable the combo timer completely for relaxed combos.
* `#define TAP_CODE_DELAY 100`
- * Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
+ * Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds and defaults to `0`.
* `#define TAP_HOLD_CAPS_DELAY 80`
* Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPS_LOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
* `#define KEY_OVERRIDE_REPEAT_DELAY 500`
diff --git a/docs/feature_converters.md b/docs/feature_converters.md
index 3dabae915d5..0fa677f8732 100644
--- a/docs/feature_converters.md
+++ b/docs/feature_converters.md
@@ -157,8 +157,6 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro
#define B0 PAL_LINE(GPIOA, 9)
```
-No peripherals are enabled by default at this time, but example code to enable SPI, I2C, PWM, and Serial communications can be found [here](/keyboards/custommk/bonsai_c4_template).
-
## Elite-C
If a board currently supported in QMK uses an [Elite-C](https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4), the supported alternative controllers are:
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 79861ef3b8b..8613512221c 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -822,8 +822,8 @@ See also: [Swap Hands](feature_swap_hands.md)
|Key |Description |
|-----------|-------------------------------------------------------------------------|
|`SH_T(key)`|Sends `key` with a tap; momentary swap when held. |
-|`SW_ON` |Turns on swapping and leaves it on. |
-|`SW_OFF` |Turn off swapping and leaves it off. Good for returning to a known state.|
+|`SH_ON` |Turns on swapping and leaves it on. |
+|`SH_OFF` |Turn off swapping and leaves it off. Good for returning to a known state.|
|`SH_MON` |Swaps hands when pressed, returns to normal when released (momentary). |
|`SH_MOFF` |Momentarily turns off swap. |
|`SH_TG` |Toggles swap on and off with every key press. |
diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h
index e9b8c5b4e87..291049e36bd 100644
--- a/drivers/oled/oled_driver.h
+++ b/drivers/oled/oled_driver.h
@@ -170,6 +170,10 @@ along with this program. If not, see .
# define OLED_UPDATE_INTERVAL 50
#endif
+#if !defined(OLED_UPDATE_PROCESS_LIMIT)
+# define OLED_UPDATE_PROCESS_LIMIT 1
+#endif
+
typedef struct __attribute__((__packed__)) {
uint8_t *current_element;
uint16_t remaining_element_count;
diff --git a/drivers/oled/ssd1306_sh1106.c b/drivers/oled/ssd1306_sh1106.c
index 30cfeb5648d..342920572e3 100644
--- a/drivers/oled/ssd1306_sh1106.c
+++ b/drivers/oled/ssd1306_sh1106.c
@@ -291,65 +291,64 @@ static void rotate_90(const uint8_t *src, uint8_t *dest) {
}
void oled_render(void) {
- if (!oled_initialized) {
- return;
- }
-
// Do we have work to do?
oled_dirty &= OLED_ALL_BLOCKS_MASK;
- if (!oled_dirty || oled_scrolling) {
+ if (!oled_dirty || !oled_initialized || oled_scrolling) {
return;
}
- // Find first dirty block
- uint8_t update_start = 0;
- while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) {
- ++update_start;
- }
-
- // Set column & page position
- static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
- if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
- calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
- } else {
- calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
- }
-
- // Send column & page position
- if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) {
- print("oled_render offset command failed\n");
- return;
- }
-
- if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
- // Send render data chunk as is
- if (I2C_WRITE_REG(I2C_DATA, &oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
- print("oled_render data failed\n");
- return;
- }
- } else {
- // Rotate the render chunks
- const static uint8_t source_map[] = OLED_SOURCE_MAP;
- const static uint8_t target_map[] = OLED_TARGET_MAP;
-
- static uint8_t temp_buffer[OLED_BLOCK_SIZE];
- memset(temp_buffer, 0, sizeof(temp_buffer));
- for (uint8_t i = 0; i < sizeof(source_map); ++i) {
- rotate_90(&oled_buffer[OLED_BLOCK_SIZE * update_start + source_map[i]], &temp_buffer[target_map[i]]);
- }
-
- // Send render data chunk after rotating
- if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
- print("oled_render90 data failed\n");
- return;
- }
- }
-
// Turn on display if it is off
oled_on();
- // Clear dirty flag
- oled_dirty &= ~((OLED_BLOCK_TYPE)1 << update_start);
+ uint8_t update_start = 0;
+ uint8_t num_processed = 0;
+ while (oled_dirty && num_processed++ < OLED_UPDATE_PROCESS_LIMIT) { // render all dirty blocks (up to the configured limit)
+ // Find next dirty block
+ while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) {
+ ++update_start;
+ }
+
+ // Set column & page position
+ static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
+ } else {
+ calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
+ }
+
+ // Send column & page position
+ if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) {
+ print("oled_render offset command failed\n");
+ return;
+ }
+
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ // Send render data chunk as is
+ if (I2C_WRITE_REG(I2C_DATA, &oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
+ print("oled_render data failed\n");
+ return;
+ }
+ } else {
+ // Rotate the render chunks
+ const static uint8_t source_map[] = OLED_SOURCE_MAP;
+ const static uint8_t target_map[] = OLED_TARGET_MAP;
+
+ static uint8_t temp_buffer[OLED_BLOCK_SIZE];
+ memset(temp_buffer, 0, sizeof(temp_buffer));
+ for (uint8_t i = 0; i < sizeof(source_map); ++i) {
+ rotate_90(&oled_buffer[OLED_BLOCK_SIZE * update_start + source_map[i]], &temp_buffer[target_map[i]]);
+ }
+
+ // Send render data chunk after rotating
+ if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
+ print("oled_render90 data failed\n");
+ return;
+ }
+ }
+
+ // Clear dirty flag of just rendered block
+ oled_dirty &= ~((OLED_BLOCK_TYPE)1 << update_start);
+ }
}
void oled_set_cursor(uint8_t col, uint8_t line) {
diff --git a/drivers/ps2/ps2_mouse.c b/drivers/ps2/ps2_mouse.c
index 66b48bb3c3d..b32ad1e222d 100644
--- a/drivers/ps2/ps2_mouse.c
+++ b/drivers/ps2/ps2_mouse.c
@@ -80,7 +80,7 @@ void ps2_mouse_task(void) {
uint8_t rcv;
rcv = ps2_host_send(PS2_MOUSE_READ_DATA);
if (rcv == PS2_ACK) {
- mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
+ mouse_report.buttons = ps2_host_recv_response();
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
# ifdef PS2_MOUSE_ENABLE_SCROLLING
@@ -88,11 +88,10 @@ void ps2_mouse_task(void) {
# endif
} else {
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n");
- return;
}
#else
if (pbuf_has_data()) {
- mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
+ mouse_report.buttons = ps2_host_recv_response();
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
# ifdef PS2_MOUSE_ENABLE_SCROLLING
@@ -100,10 +99,10 @@ void ps2_mouse_task(void) {
# endif
} else {
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n");
- return;
}
#endif
+ mouse_report.buttons |= tp_buttons;
/* if mouse moves or buttons state changes */
if (mouse_report.x || mouse_report.y || mouse_report.v || ((mouse_report.buttons ^ buttons_prev) & PS2_MOUSE_BTN_MASK)) {
#ifdef PS2_MOUSE_DEBUG_RAW
diff --git a/keyboards/a_dux/keymaps/daliusd/keymap.c b/keyboards/a_dux/keymaps/daliusd/keymap.c
index 3da9b76057d..72f24172784 100644
--- a/keyboards/a_dux/keymaps/daliusd/keymap.c
+++ b/keyboards/a_dux/keymaps/daliusd/keymap.c
@@ -189,9 +189,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MISC] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐
- RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,KC_PSCR ,XXXXXXX ,K_PRINT ,
+ QK_BOOT ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,KC_PSCR ,XXXXXXX ,K_PRINT ,
//├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,DEBUG ,LT_OSLNX,XXXXXXX , KC_MPRV ,KC_MPLY ,KC_MNXT ,XXXXXXX ,K_VIDEO ,
+ XXXXXXX ,XXXXXXX ,DB_TOGG ,LT_OSLNX,XXXXXXX , KC_MPRV ,KC_MPLY ,KC_MNXT ,XXXXXXX ,K_VIDEO ,
//├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_VOLD ,KC_VOLU ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘
diff --git a/keyboards/aeboards/constellation/constellation.h b/keyboards/aeboards/constellation/constellation.h
index a467327712c..3724b29d6ac 100755
--- a/keyboards/aeboards/constellation/constellation.h
+++ b/keyboards/aeboards/constellation/constellation.h
@@ -23,4 +23,6 @@
#include "rev1.h"
#elif defined(KEYBOARD_aeboards_constellation_rev2)
#include "rev2.h"
+#elif defined(KEYBOARD_aeboards_constellation_rev3)
+ #include "rev3.h"
#endif
diff --git a/keyboards/aeboards/constellation/rev3/config.h b/keyboards/aeboards/constellation/rev3/config.h
new file mode 100755
index 00000000000..bd4614f8b22
--- /dev/null
+++ b/keyboards/aeboards/constellation/rev3/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2021 Harrison Chan (Xelus)
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, F0, F1, F4 }
+#define MATRIX_COL_PINS { E6, D5, B2, B3, D3, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/aeboards/constellation/rev3/info.json b/keyboards/aeboards/constellation/rev3/info.json
new file mode 100644
index 00000000000..d6fbbac789b
--- /dev/null
+++ b/keyboards/aeboards/constellation/rev3/info.json
@@ -0,0 +1,89 @@
+{
+ "keyboard_name": "Constellation Rev3",
+ "manufacturer": "AEBoards",
+ "url": "",
+ "maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x4145",
+ "pid": "0x065D",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"label":"\"", "x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.5},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/aeboards/constellation/rev3/readme.md b/keyboards/aeboards/constellation/rev3/readme.md
new file mode 100755
index 00000000000..06c3593e07f
--- /dev/null
+++ b/keyboards/aeboards/constellation/rev3/readme.md
@@ -0,0 +1,18 @@
+# CONSTELLATION REV3
+
+A gasket 65% keyboard by [aeboards](https://aeboards.com/)
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: CONSTELLATION
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aeboards/constellation/rev3:default
+
+Reset your keyboard in 3 ways:
+* Software reset on Fn + Backspace
+* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard
+* Physical reset: on the back of the PCB, there is a ISP header which you should short the RST and GND together
+
+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).
diff --git a/keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c b/keyboards/aeboards/constellation/rev3/rev3.c
old mode 100644
new mode 100755
similarity index 70%
rename from keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c
rename to keyboards/aeboards/constellation/rev3/rev3.c
index 2129a712cf3..5c4257c9b9c
--- a/keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c
+++ b/keyboards/aeboards/constellation/rev3/rev3.c
@@ -1,4 +1,5 @@
-/* Copyright 2022 customMK
+/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2022 Harrison Chan (Xelus)
*
* 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
@@ -14,10 +15,4 @@
* along with this program. If not, see .
*/
-// Set up SPI slave select pin
-void keyboard_post_init_kb(void) {
- #ifdef EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN
- setPinOutput(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN);
- writePinHigh(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN);
- #endif
-}
+#include "rev3.h"
diff --git a/keyboards/aeboards/constellation/rev3/rev3.h b/keyboards/aeboards/constellation/rev3/rev3.h
new file mode 100755
index 00000000000..15f37b7c205
--- /dev/null
+++ b/keyboards/aeboards/constellation/rev3/rev3.h
@@ -0,0 +1,36 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2022 Harrison Chan (Xelus)
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \
+ K400, K401, K402, K405, K409, K410, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, ____, K312, K313, K314 }, \
+ { K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, K410, ____, K412, K413, K414 } \
+}
diff --git a/keyboards/aeboards/constellation/rev3/rules.mk b/keyboards/aeboards/constellation/rev3/rules.mk
new file mode 100755
index 00000000000..d2950ac2b28
--- /dev/null
+++ b/keyboards/aeboards/constellation/rev3/rules.mk
@@ -0,0 +1,18 @@
+# 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 = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/anavi/knob1/config.h b/keyboards/anavi/knob1/config.h
new file mode 100644
index 00000000000..f677aa9b233
--- /dev/null
+++ b/keyboards/anavi/knob1/config.h
@@ -0,0 +1,34 @@
+// Copyright 2022 Leon Anavi
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 1
+
+/* Keyboard Matrix Assignments */
+// clang-format off
+#define DIRECT_PINS { \
+ { GP26 } \
+}
+
+#define RGBLIGHT_DEFAULT_MODE 9
+
+/* Double tap reset button to enter bootloader */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+
+
+#define I2C_DRIVER I2CD2
+#define I2C1_SDA_PIN GP6
+#define I2C1_SCL_PIN GP7
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X64
+# define OLED_TIMEOUT 60000
+# define OLED_BRIGHTNESS 128
+#endif
diff --git a/keyboards/anavi/knob1/info.json b/keyboards/anavi/knob1/info.json
new file mode 100644
index 00000000000..7ed1767a243
--- /dev/null
+++ b/keyboards/anavi/knob1/info.json
@@ -0,0 +1,60 @@
+{
+ "keyboard_name": "Knob 1",
+ "manufacturer": "ANAVI",
+ "url": "https://github.com/AnaviTechnology/anavi-knob-1",
+ "maintainer": "leon-anavi",
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "debounce": 5,
+ "features": {
+ "bootmagic": false,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": true,
+ "rgblight": true
+ },
+ "rgblight": {
+ "pin": "GP12",
+ "led_count": 1,
+ "hue_steps": 10,
+ "saturation_steps": 17,
+ "brightness_steps": 17,
+ "max_brightness": 255,
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "encoder": {
+ "enabled": true,
+ "rotary": [
+ {
+ "pin_a": "GP27",
+ "pin_b": "GP28",
+ "resolution": 2
+ }
+ ]
+ },
+ "layouts": {
+ "LAYOUT_k1": {
+ "layout": [
+ { "label":"Mute", "x": 0, "y": 0 }
+ ]
+ }
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x9A25",
+ "vid": "0xFEED"
+ }
+}
diff --git a/keyboards/anavi/knob1/keymaps/default/keymap.c b/keyboards/anavi/knob1/keymaps/default/keymap.c
new file mode 100644
index 00000000000..a17be455e4c
--- /dev/null
+++ b/keyboards/anavi/knob1/keymaps/default/keymap.c
@@ -0,0 +1,16 @@
+// Copyright 2022 Leon Anavi
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+//#include
+
+enum layer_names {
+ _BASE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_k1(
+ KC_MUTE
+ )
+};
diff --git a/keyboards/anavi/knob1/knob1.c b/keyboards/anavi/knob1/knob1.c
new file mode 100644
index 00000000000..cfc3ac8a652
--- /dev/null
+++ b/keyboards/anavi/knob1/knob1.c
@@ -0,0 +1,59 @@
+// Copyright 2022 Leon Anavi
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "encoder.h"
+#include
+
+void keyboard_post_init_kb(void) {
+ // Enable RGB LED
+ setPinOutput(GP11);
+ writePinHigh(GP11);
+ rgblight_enable();
+
+ // Offload to the user func
+ keyboard_post_init_user();
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+bool oled_task_kb(void) {
+
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ // Host Keyboard Layer Status
+ oled_write_ln_P(PSTR("ANAVI Knob 1"), false);
+ oled_write_ln_P(PSTR("Keymap: Default"), false);
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(PSTR("Num Lock: "), false);
+ oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Caps Lock: "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Scroll Lock: "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false);
+#ifdef RGBLIGHT_ENABLE
+ static char rgbStatusLine1[26] = {0};
+ snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
+ oled_write_ln(rgbStatusLine1, false);
+ static char rgbStatusLine2[26] = {0};
+ snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
+ oled_write_ln(rgbStatusLine2, false);
+#endif
+ return false;
+}
+#endif
diff --git a/keyboards/anavi/knob1/knob1.h b/keyboards/anavi/knob1/knob1.h
new file mode 100644
index 00000000000..c48170928ca
--- /dev/null
+++ b/keyboards/anavi/knob1/knob1.h
@@ -0,0 +1,30 @@
+/* Copyright 2022 Leon Anavi
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+// clang-format off
+ #define LAYOUT_k1( \
+ K02 \
+ ) \
+ { \
+ { K02 } \
+ }
+// clang-format on
diff --git a/keyboards/anavi/knob1/mcuconf.h b/keyboards/anavi/knob1/mcuconf.h
new file mode 100644
index 00000000000..eb1c98372fb
--- /dev/null
+++ b/keyboards/anavi/knob1/mcuconf.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Leon Anavi (@leon-anavi)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
diff --git a/keyboards/anavi/knob1/readme.md b/keyboards/anavi/knob1/readme.md
new file mode 100644
index 00000000000..08f8f921976
--- /dev/null
+++ b/keyboards/anavi/knob1/readme.md
@@ -0,0 +1,21 @@
+# ANAVI Knob 1
+
+Mini mechanical keyboard with a clickable rotary encoder, USB-C, RP2040 microcontroller and I2C slot.
+
+* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi)
+* Hardware Supported: ANAVI Knob 1
+* Hardware Availability: [Crowd Supply](https://www.crowdsupply.com/anavi-technology/anavi-macro-pad-10), [GitHub repository](https://github.com/AnaviTechnology/anavi-knob-1)
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb anavi/knob1 -km default
+
+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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half.
+* **Physical reset button**: Double tap the reset button on the XIAO RP2040.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/anavi/knob1/rules.mk b/keyboards/anavi/knob1/rules.mk
new file mode 100644
index 00000000000..ed8acbe4ac1
--- /dev/null
+++ b/keyboards/anavi/knob1/rules.mk
@@ -0,0 +1,6 @@
+WS2812_DRIVER = vendor
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/annepro2/annepro2.c b/keyboards/annepro2/annepro2.c
index 9e17cbcf778..f4ced65436b 100644
--- a/keyboards/annepro2/annepro2.c
+++ b/keyboards/annepro2/annepro2.c
@@ -145,22 +145,22 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
case KC_AP2_BT1:
annepro2_ble_broadcast(0);
/* FIXME: This hardcodes col/row position */
- ap2_led_blink(0, 1, blue, 8, 50);
+ ap2_led_blink(record->event.key.row, record->event.key.col, blue, 8, 50);
return false;
case KC_AP2_BT2:
annepro2_ble_broadcast(1);
- ap2_led_blink(0, 2, blue, 8, 50);
+ ap2_led_blink(record->event.key.row, record->event.key.col, blue, 8, 50);
return false;
case KC_AP2_BT3:
annepro2_ble_broadcast(2);
- ap2_led_blink(0, 3, blue, 8, 50);
+ ap2_led_blink(record->event.key.row, record->event.key.col, blue, 8, 50);
return false;
case KC_AP2_BT4:
annepro2_ble_broadcast(3);
- ap2_led_blink(0, 4, blue, 8, 50);
+ ap2_led_blink(record->event.key.row, record->event.key.col, blue, 8, 50);
return false;
case KC_AP2_USB:
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/config.h b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h
index ddd5e83318b..ef99f3b6313 100644
--- a/keyboards/bastardkb/charybdis/3x5/blackpill/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h
@@ -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
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
index a89dff0cd33..0e5caa9f9a9 100644
--- a/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2021 Charly Delay (@0xcharly)
*
@@ -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"
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
index 1615d1bf46d..3b9c9056f8c 100644
--- a/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
@@ -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
@@ -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
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
index 0f732c2cbd2..a21fd9e7ff8 100644
--- a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
@@ -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
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/readme.md
similarity index 100%
rename from keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md
rename to keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/readme.md
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
index 5ce93fe070c..60c31463087 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
@@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
#include QMK_KEYBOARD_H
enum charybdis_keymap_layers {
diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
index 3e3d95174ce..8a9d40ac639 100644
--- a/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
@@ -39,4 +39,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN B0
+#define POINTING_DEVICE_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
index 5c11fa31458..2667ee9e7e4 100644
--- a/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
@@ -33,4 +33,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN F0
+#define POINTING_DEVICE_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
index 2929d3dd1e7..d4688aef92e 100644
--- a/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
@@ -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
@@ -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
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/readme.md b/keyboards/bastardkb/charybdis/3x5/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk
index 21a95060771..7e38f33d5d4 100644
--- a/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk
@@ -35,3 +35,5 @@ POINTING_DEVICE_DRIVER = pmw3360
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/charybdis/3x5/v2/splinky/v3
diff --git a/keyboards/bastardkb/dilemma/splinky/splinky.c b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/config.h
similarity index 58%
rename from keyboards/bastardkb/dilemma/splinky/splinky.c
rename to keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/config.h
index 0100ae06ae4..70b65a97c7e 100644
--- a/keyboards/bastardkb/dilemma/splinky/splinky.c
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/config.h
@@ -15,19 +15,13 @@
* along with this program. If not, see .
*/
-#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
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..d53c5a3c41d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/config.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#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
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h
new file mode 100644
index 00000000000..a06859b2154
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#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
diff --git a/keyboards/custommk/bonsai_c4_template/halconf.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h
similarity index 59%
rename from keyboards/custommk/bonsai_c4_template/halconf.h
rename to keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h
index a90ea163f36..0397de50b7b 100644
--- a/keyboards/custommk/bonsai_c4_template/halconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h
@@ -1,4 +1,5 @@
-/* Copyright 2021 customMK
+/*
+ * Copyright 2021 Charly Delay (@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
@@ -16,20 +17,8 @@
#pragma once
-// If you are using I2C (e.g. for OLED), include this line
-#define HAL_USE_I2C TRUE
-
-// If you are using PWM (e.g. for WS2812, backlight, etc.) include this line
#define HAL_USE_PWM TRUE
-
-// If you are using serial comms for split communications, include these lines
#define HAL_USE_SERIAL TRUE
-#define SERIAL_BUFFERS_SIZE 256
-
-// If you are using SPI (e.g. for FRAM, flash, etc.) include these lines
#define HAL_USE_SPI TRUE
-#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
-// This enables interrupt-driven mode
-#define SPI_USE_WAIT TRUE
-#include_next
\ No newline at end of file
+#include_next
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json
new file mode 100644
index 00000000000..2aee1fe40b8
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Nano (3x5) STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/custommk/bonsai_c4_template/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h
similarity index 67%
rename from keyboards/custommk/bonsai_c4_template/mcuconf.h
rename to keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h
index 4f926bd7deb..17a46d8f95e 100644
--- a/keyboards/custommk/bonsai_c4_template/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h
@@ -1,4 +1,5 @@
-/* Copyright 2022 customMK
+/*
+ * Copyright 2021 Charly Delay (@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
@@ -18,18 +19,14 @@
#include_next
-// Used for underglow in example code
-#undef STM32_PWM_USE_TIM1 //timer 1 channel 3
-#define STM32_PWM_USE_TIM1 TRUE
-
-// Used for backlight in examples
-#undef STM32_PWM_USE_TIM3 //timer 3 channel 1
-#define STM32_PWM_USE_TIM3 TRUE
-
-// Used for FRAM and flash in example code
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE
-// Used for Split comms in example code
#undef STM32_SERIAL_USE_USART1
-#define STM32_SERIAL_USE_USART1 TRUE
\ No newline at end of file
+#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
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..e4a9ce289c3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk
@@ -0,0 +1,38 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+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
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/config.h b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h
index 1b90a3076b4..93d897a4feb 100644
--- a/keyboards/bastardkb/charybdis/3x6/blackpill/config.h
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h
@@ -56,5 +56,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
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h
index 42d74999074..78885b68708 100644
--- a/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h
@@ -1,4 +1,5 @@
-/*
+/**
+ * Copyright 2020 Nick Brassel (tzarc)
* Copyright 2022 Charly Delay (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h
index 26645d8c1a4..7adcb837deb 100644
--- a/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h
@@ -1,4 +1,6 @@
/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
* Copyright 2022 Charly Delay (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h
index 05746cf17ef..fa1a1c01f7e 100644
--- a/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h
@@ -38,4 +38,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN B0
+#define POINTING_DEVICE_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h
index edd167446b8..e9d45e6796f 100644
--- a/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h
@@ -33,4 +33,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN F0
+#define POINTING_DEVICE_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h
index 9c4ced817a4..e68bf722e4e 100644
--- a/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h
@@ -20,8 +20,6 @@
/* Key matrix configuration. */
#define MATRIX_ROW_PINS \
{ GP26, GP5, GP4, GP9 }
-#define MATRIX_COL_PINS \
- { GP27, GP28, GP15, GP6, GP7, GP8 }
/* Handedness. */
#define MASTER_RIGHT
@@ -39,10 +37,7 @@
/* 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
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/readme.md b/keyboards/bastardkb/charybdis/3x6/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk
index 6ab474a76fc..4dfff6dfd6a 100644
--- a/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk
@@ -35,3 +35,5 @@ POINTING_DEVICE_DRIVER = pmw3360
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/charybdis/3x6/v2/splinky/v3
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/config.h
new file mode 100644
index 00000000000..7b7d94b3207
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/config.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* SPI & PMW3360 settings. */
+#define SPI_SCK_PIN GP18
+#define SPI_MOSI_PIN GP19
+#define POINTING_DEVICE_CS_PIN GP14
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..0e9f2257f02
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/config.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP21, GP6, GP7, GP8 }
+
+/* SPI & PMW3360 settings. */
+#define SPI_SCK_PIN GP22
+#define SPI_MOSI_PIN GP23
+#define POINTING_DEVICE_CS_PIN GP16
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h
new file mode 100644
index 00000000000..81c7e737a7c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, 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
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h
new file mode 100644
index 00000000000..8141e0cf4b4
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+#define HAL_USE_SPI TRUE
+
+#include_next
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json
new file mode 100644
index 00000000000..516eb7dde31
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Mini (3x6) STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h
new file mode 100644
index 00000000000..1a3c4433dbd
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next
+
+#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
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..94cd8a0deb4
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk
@@ -0,0 +1,38 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+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
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h
index 2514a52fb00..e37df487fd8 100644
--- a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h
@@ -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
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h
index a89dff0cd33..0e5caa9f9a9 100644
--- a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2021 Charly Delay (@0xcharly)
*
@@ -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"
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h
index 1615d1bf46d..3b9c9056f8c 100644
--- a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h
@@ -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
@@ -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
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk
index 6123ec58b7f..9015f3a8b2c 100644
--- a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk
@@ -24,8 +24,6 @@ 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 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
diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h
index 15044ef645d..710c4c35876 100644
--- a/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h
@@ -39,4 +39,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN B0
+#define POINTING_DEVICE_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h
index 891e511ccb0..692a28b7bea 100644
--- a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h
@@ -33,4 +33,4 @@
#define RGB_DI_PIN D3
/* PMW3360 settings. */
-#define PMW33XX_CS_PIN F0
+#define POINTING_DEVICE_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h
index e17ec49726f..010de7c4807 100644
--- a/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h
@@ -20,8 +20,6 @@
/* 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
@@ -39,10 +37,7 @@
/* 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
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/readme.md b/keyboards/bastardkb/charybdis/4x6/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk
index 13c1b399610..34ef782d2f6 100644
--- a/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk
@@ -34,3 +34,5 @@ POINTING_DEVICE_DRIVER = pmw3360
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/charybdis/4x6/v2/splinky/v3
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/config.h
new file mode 100644
index 00000000000..7b7d94b3207
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/config.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* SPI & PMW3360 settings. */
+#define SPI_SCK_PIN GP18
+#define SPI_MOSI_PIN GP19
+#define POINTING_DEVICE_CS_PIN GP14
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..0e9f2257f02
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/config.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP21, GP6, GP7, GP8 }
+
+/* SPI & PMW3360 settings. */
+#define SPI_SCK_PIN GP22
+#define SPI_MOSI_PIN GP23
+#define POINTING_DEVICE_CS_PIN GP16
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h
new file mode 100644
index 00000000000..b1b432c3306
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#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
+
+// 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
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h
new file mode 100644
index 00000000000..0397de50b7b
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+#define HAL_USE_SPI TRUE
+
+#include_next
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json
new file mode 100644
index 00000000000..7d687319b39
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis (4x6) STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h
new file mode 100644
index 00000000000..17a46d8f95e
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next
+
+#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
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..0847e9ce1fa
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+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
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/readme.md b/keyboards/bastardkb/charybdis/readme.md
index c112c1150e0..dd0fca00155 100644
--- a/keyboards/bastardkb/charybdis/readme.md
+++ b/keyboards/bastardkb/charybdis/readme.md
@@ -21,6 +21,7 @@ Check out the [keyboard build guides](https://docs.bastardkb.com) for the Charyb
**You must specify the shield version when compiling/flashing the firmware.**
The template is:
+
```shell
qmk compile -kb bastardkb/charybdis/{LAYOUT}/{VERSION}/elitec -km {KEYMAP}
```
@@ -33,16 +34,16 @@ Check out the `via` layout if you're looking for VIA support.
### Charybdis (4x6)
-| Shield Version | default | via |
-|----------------|-----------------------------------------------------------------|-----------------------------------------------------------------|
-| v1 | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km via` |
+| Shield Version | default | via |
+| -------------- | --------------------------------------------------------------- | ----------------------------------------------------------- |
+| v1 | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km via` |
| v2 | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km via` |
### Charybdis (3x5)
-| Shield Version | default | via |
-|----------------|-----------------------------------------------------------------|-----------------------------------------------------------------|
-| v1 | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km via` |
+| Shield Version | default | via |
+| -------------- | --------------------------------------------------------------- | ----------------------------------------------------------- |
+| v1 | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km via` |
| v2 | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km via` |
## Customizing the firmware
@@ -164,17 +165,17 @@ To disable the custom keycodes, and reduce binary size, simply add a definition
### Configuration Syncing
-If you want/need to enable syncing of the charybdis config, such as to read the sniping or drag scroll modes on the other half (such as for displaying the status via rgb matrix, or added on screens, or what not), you can enabled this. To do so, add this to your `config.h`:
+If you want/need to enable syncing of the charybdis config, such as to read the sniping or drag scroll modes on the other half (such as for displaying the status via rgb matrix, or added on screens, or what not), you can enabled this. To do so, add this to your `config.h`:
```c
#define CHARYBDIS_CONFIG_SYNC
```
-Note that you will need to reflash both sides when enabling this.
+Note that you will need to reflash both sides when enabling this.
### Enable Large Mouse Reports
-By default, the X and Y motion for the pointing device/mouse reports is -127 to 127. You can definitely hit the limit for that with the sensors. You can enable support for -32767 to 32767 by adding this to your `config.h`:
+By default, the X and Y motion for the pointing device/mouse reports is -127 to 127. You can definitely hit the limit for that with the sensors. You can enable support for -32767 to 32767 by adding this to your `config.h`:
```c
#define MOUSE_EXTENDED_REPORT
diff --git a/keyboards/bastardkb/dilemma/3x5_2/3x5_2.h b/keyboards/bastardkb/dilemma/3x5_2/3x5_2.h
new file mode 100644
index 00000000000..7deb32d9173
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/3x5_2.h
@@ -0,0 +1,37 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+// clang-format off
+#define LAYOUT_split_3x5_2( \
+ k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
+ k30, k32, k72, k70 \
+) \
+{ \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, KC_NO, k32, KC_NO, KC_NO }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, k54 }, \
+ { k60, k61, k62, k63, k64 }, \
+ { k70, KC_NO, k72, KC_NO, KC_NO }, \
+}
+// clang-format on
diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h
new file mode 100644
index 00000000000..8420898f4ed
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h
@@ -0,0 +1,46 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP4, GP5, GP28, GP26 }
+#define MATRIX_COL_PINS \
+ { GP8, GP9, GP7, GP6, GP27 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN GP29
+#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* Cirque trackpad. */
+#define SPI_SCK_PIN GP22
+#define SPI_MOSI_PIN GP23
+#define SPI_MISO_PIN GP20
+#define POINTING_DEVICE_CS_PIN GP21
+
+/* 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/dilemma/3x5_2/assembled/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h
new file mode 100644
index 00000000000..7a79bec953f
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h
@@ -0,0 +1,22 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+
+#include_next "halconf.h"
diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/info.json b/keyboards/bastardkb/dilemma/3x5_2/assembled/info.json
new file mode 100644
index 00000000000..aae8dfc1798
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/info.json
@@ -0,0 +1,4 @@
+{
+ "keyboard_name": "Dilemma (3x5+2) Assembled"
+}
+
diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h
new file mode 100644
index 00000000000..b54d705b542
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI1
+#define RP_SPI_USE_SPI1 TRUE
diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk
new file mode 100644
index 00000000000..df2f94792de
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk
@@ -0,0 +1,34 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# 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 = no # RGB matrix is supported and enabled by default
+RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix functionality
+
+SERIAL_DRIVER = vendor
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = cirque_pinnacle_spi # Assembled version uses SPI.
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_2
+
+# RP2040-specific options
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
diff --git a/keyboards/bastardkb/dilemma/3x5_2/info.json b/keyboards/bastardkb/dilemma/3x5_2/info.json
new file mode 100644
index 00000000000..5aa89bcdedf
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/info.json
@@ -0,0 +1,46 @@
+{
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x1835"
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0},
+ {"label":"L01", "x":1, "y":0},
+ {"label":"L02", "x":2, "y":0},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0},
+ {"label":"R00", "x":11, "y":0},
+ {"label":"R01", "x":12, "y":0},
+ {"label":"R02", "x":13, "y":0},
+ {"label":"R03", "x":14, "y":0},
+ {"label":"R04", "x":15, "y":0},
+ {"label":"L10", "x":0, "y":1},
+ {"label":"L11", "x":1, "y":1},
+ {"label":"L12", "x":2, "y":1},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1},
+ {"label":"R10", "x":11, "y":1},
+ {"label":"R11", "x":12, "y":1},
+ {"label":"R12", "x":13, "y":1},
+ {"label":"R13", "x":14, "y":1},
+ {"label":"R14", "x":15, "y":1},
+ {"label":"L20", "x":0, "y":2},
+ {"label":"L21", "x":1, "y":2},
+ {"label":"L22", "x":2, "y":2},
+ {"label":"L23", "x":3, "y":2},
+ {"label":"L24", "x":4, "y":2},
+ {"label":"R20", "x":11, "y":2},
+ {"label":"R21", "x":12, "y":2},
+ {"label":"R22", "x":13, "y":2},
+ {"label":"R23", "x":14, "y":2},
+ {"label":"R24", "x":15, "y":2},
+ {"label":"L30", "x":4, "y":3},
+ {"label":"L32", "x":5, "y":3},
+ {"label":"R32", "x":10, "y":3},
+ {"label":"R30", "x":11, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/dilemma/keymaps/bstiq/config.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/config.h
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/bstiq/config.h
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/config.h
diff --git a/keyboards/bastardkb/dilemma/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/bstiq/keymap.c
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c
diff --git a/keyboards/bastardkb/dilemma/keymaps/bstiq/README.md b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/readme.md
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/bstiq/README.md
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/readme.md
diff --git a/keyboards/bastardkb/dilemma/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/default/keymap.c
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/config.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/config.h
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/drashna/config.h
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/config.h
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/keymap.c
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/keymap.c
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/rules.mk
similarity index 100%
rename from keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk
rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/rules.mk
diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/config.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/config.h
new file mode 100644
index 00000000000..fbe61df03ba
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/config.h
@@ -0,0 +1,91 @@
+/**
+ * Copyright 2021 Charly Delay (@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 .
+ */
+#pragma once
+
+#ifdef VIA_ENABLE
+/* VIA configuration. */
+# define DYNAMIC_KEYMAP_LAYER_COUNT 6
+#endif // VIA_ENABLE
+
+/* Disable unused features. */
+#define NO_ACTION_ONESHOT
+
+#ifndef TAPPING_TERM
+/**
+ * \brief Configure the global tapping term (default: 200ms).
+ *
+ * If you have a lot of accidental mod activations, crank up the tapping term.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
+ */
+# define TAPPING_TERM 200
+#endif // TAPPING_TERM
+
+/**
+ * \brief Enable rapid switch from tap to hold.
+ *
+ * Note that a side-effect of this setting is to disable auto-repeat when
+ * pressing key twice, except for one-shot keys.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-force-hold
+ */
+#define TAPPING_FORCE_HOLD
+
+/*
+ * Tap-or-Hold decision modes.
+ *
+ * Note that the following flags behave differently when combined (ie. when 2 or
+ * more are enabled).
+ *
+ * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
+ * decision modes.
+ */
+
+/**
+ * \brief Faster tap-hold trigger.
+ *
+ * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
+ * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
+ */
+#define PERMISSIVE_HOLD
+
+/**
+ * \brief Prevent normal rollover on alphas from accidentally triggering mods.
+ *
+ * Ignores key presses that interrupt a mod-tap. Must-have for Home Row mod.
+ *
+ * Without `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ Mod+e
+ * With `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ ae
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#ignore-mod-tap-interrupt
+ */
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Charybdis-specific features. */
+
+#ifdef POINTING_DEVICE_ENABLE
+// Automatically enable the pointer layer when moving the trackball. See also:
+// - `DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS`
+// - `DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD`
+// #define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/keymap.c
new file mode 100644
index 00000000000..b3aeaf014f6
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/keymap.c
@@ -0,0 +1,229 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+#include QMK_KEYBOARD_H
+
+#ifdef DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+# include "timer.h"
+#endif // DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+enum dilemma_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_FUNCTION,
+ LAYER_NAVIGATION,
+ LAYER_POINTER,
+ LAYER_NUMERAL,
+ LAYER_SYMBOLS,
+};
+
+// Automatically enable sniping-mode on the pointer layer.
+#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+
+#ifdef DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+static uint16_t auto_pointer_layer_timer = 0;
+
+# ifndef DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+# define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+# endif // DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+
+# ifndef DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+# define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+# endif // DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+#endif // DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+#define SPC_NAV LT(LAYER_NAVIGATION, KC_SPC)
+#define TAB_FUN LT(LAYER_FUNCTION, KC_TAB)
+#define ENT_SYM LT(LAYER_SYMBOLS, KC_ENT)
+#define BSP_NUM LT(LAYER_NUMERAL, KC_BSPC)
+#define _L_PTR(KC) LT(LAYER_POINTER, KC)
+
+#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
+/** \brief QWERTY layout (3 rows, 10 columns). */
+#define LAYOUT_LAYER_BASE \
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
+ TAB_FUN, SPC_NAV, ENT_SYM, BSP_NUM
+
+/** Convenience row shorthands. */
+#define _______________DEAD_HALF_ROW_______________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define ______________HOME_ROW_GACS_L______________ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX
+#define ______________HOME_ROW_GACS_R______________ XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI
+
+/*
+ * Layers used on the Dilemma.
+ *
+ * These layers started off heavily inspired by the Miryoku layout, but trimmed
+ * down and tailored for a stock experience that is meant to be fundation for
+ * further personalization.
+ *
+ * See https://github.com/manna-harbour/miryoku for the original layout.
+ */
+
+/**
+ * \brief Function layer.
+ *
+ * Secondary right-hand layer has function keys mirroring the numerals on the
+ * primary layer with extras on the pinkie column, plus system keys on the inner
+ * column. App is on the tertiary thumb key and other thumb keys are duplicated
+ * from the base layer to enable auto-repeat.
+ */
+#define LAYOUT_LAYER_FUNCTION \
+ _______________DEAD_HALF_ROW_______________, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12, \
+ ______________HOME_ROW_GACS_L______________, KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11, \
+ _______________DEAD_HALF_ROW_______________, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX
+
+/** \brief Mouse emulation and pointer functions. */
+#define LAYOUT_LAYER_POINTER \
+ QK_BOOT, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, QK_BOOT, \
+ ______________HOME_ROW_GACS_L______________, ______________HOME_ROW_GACS_R______________, \
+ _______, DRGSCRL, SNIPING, KC_BTN3, XXXXXXX, XXXXXXX, KC_BTN3, SNIPING, DRGSCRL, _______, \
+ KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2
+
+/**
+ * \brief Navigation layer.
+ *
+ * Primary right-hand layer (left home thumb) is navigation and editing. Cursor
+ * keys are on the home position, line and page movement below, clipboard above,
+ * caps lock and insert on the inner column. Thumb keys are duplicated from the
+ * base layer to avoid having to layer change mid edit and to enable auto-repeat.
+ */
+#define LAYOUT_LAYER_NAVIGATION \
+ _______________DEAD_HALF_ROW_______________, _______________DEAD_HALF_ROW_______________, \
+ ______________HOME_ROW_GACS_L______________, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+ _______________DEAD_HALF_ROW_______________, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+ XXXXXXX, _______, KC_ENT, KC_BSPC
+
+/**
+ * \brief Numeral layout.
+ *
+ * Primary left-hand layer (right home thumb) is numerals and symbols. Numerals
+ * are in the standard numpad locations with symbols in the remaining positions.
+ * `KC_DOT` is duplicated from the base layer.
+ */
+#define LAYOUT_LAYER_NUMERAL \
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______________DEAD_HALF_ROW_______________, \
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, ______________HOME_ROW_GACS_R______________, \
+ KC_DOT, KC_1, KC_2, KC_3, KC_BSLS, _______________DEAD_HALF_ROW_______________, \
+ KC_MINS, KC_0, XXXXXXX, _______
+
+/**
+ * \brief Symbols layer.
+ *
+ * Secondary left-hand layer has shifted symbols in the same locations to reduce
+ * chording when using mods with shifted symbols. `KC_LPRN` is duplicated next to
+ * `KC_RPRN`.
+ */
+#define LAYOUT_LAYER_SYMBOLS \
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, _______________DEAD_HALF_ROW_______________, \
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GACS_R______________, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, _______________DEAD_HALF_ROW_______________, \
+ KC_GRV, KC_UNDS, _______, XXXXXXX
+
+/**
+ * \brief Add Home Row mod to a layout.
+ *
+ * Expects a 10-key per row layout. Adds support for GACS (Gui, Alt, Ctl, Shift)
+ * home row. The layout passed in parameter must contain at least 20 keycodes.
+ *
+ * This is meant to be used with `LAYER_ALPHAS_QWERTY` defined above, eg.:
+ *
+ * HOME_ROW_MOD_GACS(LAYER_ALPHAS_QWERTY)
+ */
+#define _HOME_ROW_MOD_GACS( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ LGUI_T(L10), LALT_T(L11), LCTL_T(L12), LSFT_T(L13), L14, \
+ R15, RSFT_T(R16), RCTL_T(R17), LALT_T(R18), RGUI_T(R19), \
+ __VA_ARGS__
+#define HOME_ROW_MOD_GACS(...) _HOME_ROW_MOD_GACS(__VA_ARGS__)
+
+/**
+ * \brief Add pointer layer keys to a layout.
+ *
+ * Expects a 10-key per row layout. The layout passed in parameter must contain
+ * at least 30 keycodes.
+ *
+ * This is meant to be used with `LAYER_ALPHAS_QWERTY` defined above, eg.:
+ *
+ * POINTER_MOD(LAYER_ALPHAS_QWERTY)
+ */
+#define _POINTER_MOD( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ L20, L21, L22, L23, L24, R25, R26, R27, R28, R29, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, \
+ R15, R16, R17, R18, R19, \
+ _L_PTR(L20), L21, L22, L23, L24, \
+ R25, R26, R27, R28, _L_PTR(R29), \
+ __VA_ARGS__
+#define POINTER_MOD(...) _POINTER_MOD(__VA_ARGS__)
+
+#define LAYOUT_wrapper(...) LAYOUT_split_3x5_2(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_wrapper(
+ POINTER_MOD(HOME_ROW_MOD_GACS(LAYOUT_LAYER_BASE))
+ ),
+ [LAYER_FUNCTION] = LAYOUT_wrapper(LAYOUT_LAYER_FUNCTION),
+ [LAYER_NAVIGATION] = LAYOUT_wrapper(LAYOUT_LAYER_NAVIGATION),
+ [LAYER_NUMERAL] = LAYOUT_wrapper(LAYOUT_LAYER_NUMERAL),
+ [LAYER_POINTER] = LAYOUT_wrapper(LAYOUT_LAYER_POINTER),
+ [LAYER_SYMBOLS] = LAYOUT_wrapper(LAYOUT_LAYER_SYMBOLS),
+};
+// clang-format on
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifdef DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (abs(mouse_report.x) > DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD || abs(mouse_report.y) > DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD) {
+ if (auto_pointer_layer_timer == 0) {
+ layer_on(LAYER_POINTER);
+ }
+ auto_pointer_layer_timer = timer_read();
+ }
+ return mouse_report;
+}
+
+void matrix_scan_user(void) {
+ if (auto_pointer_layer_timer != 0 && TIMER_DIFF_16(timer_read(), auto_pointer_layer_timer) >= DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS) {
+ auto_pointer_layer_timer = 0;
+ layer_off(LAYER_POINTER);
+ }
+}
+# endif // DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+# ifdef DILEMMA_AUTO_SNIPING_ON_LAYER
+layer_state_t layer_state_set_user(layer_state_t state) {
+ dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+# endif // DILEMMA_AUTO_SNIPING_ON_LAYER
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/readme.md b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/readme.md
new file mode 100644
index 00000000000..df40677f4df
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/readme.md
@@ -0,0 +1,67 @@
+# Dilemma `via` keymap
+
+The Dilemma `via` keymap is based on a QWERTY layout with [home row mods](https://precondition.github.io/home-row-mods) and [Miryoku-inspired layers](https://github.com/manna-harbour/miryoku), and some features and changes specific to the Dilemma.
+
+This layout also supports VIA.
+
+## Customizing the keymap
+
+### Dynamic DPI scaling
+
+Use the following keycodes to change the default DPI:
+
+- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 16 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
+
+Use the following keycodes to change the sniping mode DPI:
+
+- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 4 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
+
+### Drag-scroll
+
+Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
+
+### Circular scroll
+
+By default, the firmware is configured to enable the circular scroll feature on Cirque trackpad.
+
+To disable this, add the following to your keymap:
+
+```c
+#undef POINTING_DEVICE_GESTURES_SCROLL_ENABLE
+```
+
+### Sniping
+
+Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
+
+Change the value of `DILEMMA_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
+
+```c
+#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+```
+
+### Auto pointer layer
+
+The pointer layer can be automatically enabled when moving the trackball. To enable or disable this behavior, add or remove the following define:
+
+```c
+#define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+```
+
+By default, the layer is turned off 1 second after the last registered trackball movement:
+
+```c
+#define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+```
+
+The trigger sensibility can also be tuned. The lower the value, the more sensible the trigger:
+
+```c
+#define DILEMMA_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+```
diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/bastardkb/dilemma/splinky/config.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h
similarity index 99%
rename from keyboards/bastardkb/dilemma/splinky/config.h
rename to keyboards/bastardkb/dilemma/3x5_2/splinky/config.h
index 80c9e422248..4ac28ed1f90 100644
--- a/keyboards/bastardkb/dilemma/splinky/config.h
+++ b/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2022 Charly Delay (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
diff --git a/keyboards/bastardkb/dilemma/splinky/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h
similarity index 100%
rename from keyboards/bastardkb/dilemma/splinky/halconf.h
rename to keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h
diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/info.json b/keyboards/bastardkb/dilemma/3x5_2/splinky/info.json
new file mode 100644
index 00000000000..38ce4738f9a
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_2/splinky/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Dilemma (3x5+2) Splinky"
+}
diff --git a/keyboards/bastardkb/dilemma/splinky/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h
similarity index 100%
rename from keyboards/bastardkb/dilemma/splinky/mcuconf.h
rename to keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h
diff --git a/keyboards/bastardkb/dilemma/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk
similarity index 78%
rename from keyboards/bastardkb/dilemma/rules.mk
rename to keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk
index 499eadfdfbe..292b71fe8b4 100644
--- a/keyboards/bastardkb/dilemma/rules.mk
+++ b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk
@@ -1,3 +1,9 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
# Build Options
# change yes to no to disable
#
@@ -16,10 +22,13 @@ RGB_MATRIX_SUPPORTED = no # RGB matrix is supported and enabled by default
RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default
RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix functionality
+SERIAL_DRIVER = vendor
+
POINTING_DEVICE_ENABLE = yes
-POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
+POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c # DIY version uses I2C.
SPLIT_KEYBOARD = yes
LAYOUTS = split_3x5_2
-DEFAULT_FOLDER = bastardkb/dilemma/splinky
+# RP2040-specific options
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
diff --git a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c
new file mode 100644
index 00000000000..0b6c657fdae
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c
@@ -0,0 +1,83 @@
+/**
+ * Copyright 2020 Christopher Courtney (@drashna)
+ * Copyright 2021 Quentin LEBASTARD
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#include "3x5_3.h"
+
+/**
+ * LEDs index.
+ *
+ * ╭────────────────────╮ ╭────────────────────╮
+ * 2 3 8 9 12 30 27 26 21 20
+ * ├────────────────────┤ ├────────────────────┤
+ * 1 4 7 10 13 31 28 25 22 19
+ * ├────────────────────┤ ├────────────────────┤
+ * 0 5 6 11 14 32 29 24 23 18
+ * ╰────────────────────╯ ╰────────────────────╯
+ * 15 16 17 35 34 33
+ * ╰────────────╯ ╰────────────╯
+ */
+// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ /* Key Matrix to LED index. */
+ // Left split.
+ { 2, 3, 8, 9, 12 }, // Top row
+ { 1, 4, 7, 10, 13 }, // Middle row
+ { 0, 5, 6, 11, 14 }, // Bottom row
+ { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster
+ // Right split.
+ { 20, 21, 26, 27, 30 }, // Top row
+ { 19, 22, 25, 28, 31 }, // Middle row
+ { 18, 23, 24, 29, 32 }, // Bottom row
+ { 35, NO_LED, 33, 34, NO_LED }, // Thumb cluster
+}, {
+ /* LED index to physical position. */
+ // Left split.
+ /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most)
+ /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2
+ /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 },
+ /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 },
+ /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 },
+ /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster
+ // Right split.
+ /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most)
+ /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9
+ /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 },
+ /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 },
+ /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 },
+ /* index=33 */ { 152, 64 }, { 134, 64 }, { 116, 64 }, // Thumb cluster
+}, {
+ /* LED index to flag. */
+ // Left split.
+ /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1
+ /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2
+ /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster
+ // Right split.
+ /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10
+ /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9
+ /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=33 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster
+} };
+#endif
+// clang-format on
diff --git a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.h b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.h
new file mode 100644
index 00000000000..566d5b81d23
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.h
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include "dilemma.h"
+
+// clang-format off
+#define LAYOUT_split_3x5_3( \
+ k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
+ k32, k30, k31, k71, k70, k72 \
+) \
+{ \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, k31, k32, KC_NO, KC_NO }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, k54 }, \
+ { k60, k61, k62, k63, k64 }, \
+ { k70, k71, k72, KC_NO, KC_NO }, \
+}
+// clang-format on
diff --git a/keyboards/bastardkb/dilemma/3x5_3/config.h b/keyboards/bastardkb/dilemma/3x5_3/config.h
new file mode 100644
index 00000000000..d89f2500636
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/config.h
@@ -0,0 +1,71 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP4, GP5, GP27, GP26 }
+#define MATRIX_COL_PINS \
+ { GP8, GP9, GP7, GP6, GP28 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN GP29
+#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 // Per-key.
+// #define RGB_DI_PIN GP10 // Underglow.
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* Cirque trackpad over SPI. */
+#define SPI_SCK_PIN GP22
+#define SPI_MOSI_PIN GP23
+#define SPI_MISO_PIN GP20
+#define POINTING_DEVICE_CS_PIN GP21
+
+/* OLED over i2c. */
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
+#define OLED_DISPLAY_HEIGHT 128
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+/* RGB settings. */
+#define RGBLED_NUM 36
+#define RGBLED_SPLIT \
+ { 18, 18 }
+
+/* RGB matrix support. */
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_LED_COUNT RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+#endif
diff --git a/keyboards/bastardkb/dilemma/3x5_3/halconf.h b/keyboards/bastardkb/dilemma/3x5_3/halconf.h
new file mode 100644
index 00000000000..a3774605a8f
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/halconf.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SPI TRUE
+
+#include_next "halconf.h"
diff --git a/keyboards/bastardkb/dilemma/3x5_3/info.json b/keyboards/bastardkb/dilemma/3x5_3/info.json
new file mode 100644
index 00000000000..2c1a68888b4
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/info.json
@@ -0,0 +1,49 @@
+{
+ "keyboard_name": "Dilemma (3x5+3) Assembled",
+ "usb": {
+ "device_version": "2.0.0",
+ "pid": "0x1835"
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ { "label": "L00", "x": 0, "y": 0 },
+ { "label": "L01", "x": 1, "y": 0 },
+ { "label": "L02", "x": 2, "y": 0 },
+ { "label": "L03", "x": 3, "y": 0 },
+ { "label": "L04", "x": 4, "y": 0 },
+ { "label": "R00", "x": 11, "y": 0 },
+ { "label": "R01", "x": 12, "y": 0 },
+ { "label": "R02", "x": 13, "y": 0 },
+ { "label": "R03", "x": 14, "y": 0 },
+ { "label": "R04", "x": 15, "y": 0 },
+ { "label": "L10", "x": 0, "y": 1 },
+ { "label": "L11", "x": 1, "y": 1 },
+ { "label": "L12", "x": 2, "y": 1 },
+ { "label": "L13", "x": 3, "y": 1 },
+ { "label": "L14", "x": 4, "y": 1 },
+ { "label": "R10", "x": 11, "y": 1 },
+ { "label": "R11", "x": 12, "y": 1 },
+ { "label": "R12", "x": 13, "y": 1 },
+ { "label": "R13", "x": 14, "y": 1 },
+ { "label": "R14", "x": 15, "y": 1 },
+ { "label": "L20", "x": 0, "y": 2 },
+ { "label": "L21", "x": 1, "y": 2 },
+ { "label": "L22", "x": 2, "y": 2 },
+ { "label": "L23", "x": 3, "y": 2 },
+ { "label": "L24", "x": 4, "y": 2 },
+ { "label": "R20", "x": 11, "y": 2 },
+ { "label": "R21", "x": 12, "y": 2 },
+ { "label": "R22", "x": 13, "y": 2 },
+ { "label": "R23", "x": 14, "y": 2 },
+ { "label": "R24", "x": 15, "y": 2 },
+ { "label": "L32", "x": 4, "y": 3 },
+ { "label": "L33", "x": 5, "y": 3 },
+ { "label": "L34", "x": 6, "y": 3 },
+ { "label": "R32", "x": 11, "y": 3 },
+ { "label": "R33", "x": 10, "y": 3 },
+ { "label": "R34", "x": 9, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/config.h b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/config.h
new file mode 100644
index 00000000000..507cd6a2250
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/config.h
@@ -0,0 +1,145 @@
+/**
+ * Copyright 2021 Quentin LEBASTARD
+ * Copyright 2022 Charly Delay (@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 .
+ */
+#pragma once
+
+#ifdef VIA_ENABLE
+/* Via configuration. */
+# define DYNAMIC_KEYMAP_LAYER_COUNT 8
+#endif // VIA_ENABLE
+
+/**
+ * Configure the global tapping term (default: 200ms).
+ * If you have a lot of accidental mod activations, crank up the tapping term.
+ */
+#ifndef TAPPING_TERM
+# define TAPPING_TERM 160
+#endif // TAPPING_TERM
+
+// disable trackpad taps
+// #define CIRQUE_PINNACLE_TAPPING_TERM 0
+
+/**
+ * Enable rapid switch from tap to hold. Disable auto-repeat when pressing key
+ * twice, except for one-shot keys.
+ */
+#define TAPPING_FORCE_HOLD
+
+/*
+ * Tap-or-Hold decision modes.
+ *
+ * Note that the following flags behave differently when combined (ie. when 2 or
+ * more are enabled).
+ *
+ * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
+ * decision modes.
+ */
+
+/**
+ * Faster tap-hold trigger.
+ *
+ * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
+ * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
+ */
+#define PERMISSIVE_HOLD
+
+/**
+ * Prevent normal rollover on alphas from accidentally triggering mods.
+ *
+ * Ignores key presses that interrupt a mod-tap. Must-have for Home Row mod.
+ *
+ * Without `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ Mod+e
+ * With `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ ae
+ */
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/** Dilemma-specific features. */
+
+#ifdef POINTING_DEVICE_ENABLE
+// Flip horizontal direction for drag-scroll.
+# define DILEMMA_DRAGSCROLL_REVERSE_X
+// #define DILEMMA_DRAGSCROLL_REVERSE_Y
+#endif // POINTING_DEVICE_ENABLE
+
+/** 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
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c
new file mode 100644
index 00000000000..2c262521bc8
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c
@@ -0,0 +1,223 @@
+/**
+ * Copyright 2021 Quentin LEBASTARD
+ * Copyright 2022 Charly Delay (@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 .
+ */
+#include QMK_KEYBOARD_H
+
+enum bstiq_layers {
+ LAYER_BASE = 0,
+ LAYER_MBO,
+ LAYER_MEDIA,
+ LAYER_NAV,
+ LAYER_MOUSE,
+ LAYER_SYM,
+ LAYER_NUM,
+ LAYER_FUN,
+};
+
+// Automatically enable sniping when the mouse layer is on.
+#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
+
+#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
+#define ENT_MBO LT(LAYER_MBO, KC_ENT)
+#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
+#define ESC_SYM LT(LAYER_SYM, KC_ESC)
+#define SPC_NUM LT(LAYER_NUM, KC_SPC)
+#define SPC_MBO LT(LAYER_MBO, KC_SPC)
+#define MOUSE(KC) LT(LAYER_MOUSE, KC)
+
+#define USR_RDO KC_AGAIN
+#define USR_PST S(KC_INS)
+#define USR_CPY C(KC_INS)
+#define USR_CUT S(KC_DEL)
+#define USR_UND KC_UNDO
+
+#define MS_L KC_MS_LEFT
+#define MS_R KC_MS_RIGHT
+#define MS_D KC_MS_DOWN
+#define MS_U KC_MS_UP
+
+#define WH_L KC_MS_WH_LEFT
+#define WH_R KC_MS_WH_RIGHT
+#define WH_D KC_MS_WH_DOWN
+#define WH_U KC_MS_WH_UP
+
+// clang-format off
+/** Convenience macro. */
+#define _KC_LAYOUT_wrapper( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
+ ...) \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
+ __VA_ARGS__
+#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
+
+/** Base layer with BÉPO layout. */
+#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper( \
+ B, W, P, O, QUOT, DOT, V, D, L, J, \
+ A, U, I, E, COMM, C, T, S, R, N, \
+ Z, Y, X, SLSH, K, M, Q, G, H, F, \
+ KC_A, SPC_MBO, TAB_MED, ESC_SYM, SPC_NUM, KC_A)
+
+/** Convenience key shorthands. */
+#define U_NA KC_NO // Present but not available for use.
+#define U_NU KC_NO // Available but not used.
+
+/** Convenience row shorthands. */
+#define ________________HOME_ROW_NA________________ U_NA, U_NA, U_NA, U_NA, U_NA
+#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, U_NA
+#define ______________HOME_ROW_ALGR_L______________ U_NA, KC_ALGR, U_NA, U_NA, U_NA
+#define ______________HOME_ROW_GASC_R______________ U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
+#define ______________HOME_ROW_ALGR_R______________ U_NA, U_NA, U_NA, KC_ALGR, U_NA
+
+/** Layers. */
+
+// Buttons.
+#define LAYOUT_LAYER_MBO \
+ ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+ KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1, U_NA, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+ U_NA, U_NA, U_NA, KC_ENT, KC_ENT, KC_ENT
+
+// Media.
+#define LAYOUT_LAYER_MEDIA \
+ ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2
+
+// Navigation.
+#define LAYOUT_LAYER_NAV \
+ ________________HOME_ROW_NA________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
+ ______________HOME_ROW_GASC_L______________, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, U_NU, U_NU, U_NU, U_NU, \
+ U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, U_NA
+
+// Mouse.
+#define LAYOUT_LAYER_MOUSE \
+ S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ DPI_MOD, DRGSCRL, KC_LSFT, DRGSCRL, _______, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ USR_RDO, USR_PST, USR_CPY, KC_BTN3, USR_UND, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ KC_BTN3, KC_BTN1, KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN2
+
+// Symbols.
+#define LAYOUT_LAYER_SYM \
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, ________________HOME_ROW_NA________________, \
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_MINS, ______________HOME_ROW_ALGR_R______________, \
+ U_NA, KC_RPRN, KC_LPRN, U_NA, U_NA, U_NA
+
+// Numerals.
+#define LAYOUT_LAYER_NUM \
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, ________________HOME_ROW_NA________________, \
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, ______________HOME_ROW_GASC_R______________, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_UNDS, ______________HOME_ROW_ALGR_R______________, \
+ U_NA, KC_0, KC_MINS, U_NA, U_NA, U_NA
+
+// Function keys.
+#define LAYOUT_LAYER_FUN \
+ KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, ________________HOME_ROW_NA________________, \
+ KC_F11, KC_F4, KC_F5, KC_F6, KC_SCRL, ______________HOME_ROW_GASC_R______________, \
+ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
+ U_NA, KC_APP, KC_TAB, U_NA, U_NA, U_NA
+
+/**
+ * Add Home Row mod to a layout.
+ *
+ * Expects a 10-key per row layout. Adds support for GASC (Gui, Alt, Shift, Ctl)
+ * home row. The layout passed in parameter must contain at least 20 keycodes.
+ *
+ * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _HOME_ROW_MOD_GASC( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ LGUI_T(L10), LALT_T(L11), LSFT_T(L12), LCTL_T(L13), L14, \
+ R15, RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
+ __VA_ARGS__
+#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
+
+/**
+ * Add mouse layer keys to a layout.
+ *
+ * Expects a 10-key per row layout. The layout passed in parameter must contain
+ * at least 30 keycodes.
+ *
+ * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _MOUSE_MOD( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ L20, L21, L22, L23, L24, R25, R26, R27, R28, R29, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, \
+ R15, R16, R17, R18, R19, \
+ L20, MOUSE(L21), L22, L23, L24, \
+ R25, R26, R27, R28, MOUSE(R29), \
+ __VA_ARGS__
+#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
+
+#define LAYOUT_wrapper(...) LAYOUT_split_3x5_3(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_wrapper(
+ MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
+ ),
+ [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
+ [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
+ [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
+ [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
+ [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
+ [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
+ [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
+};
+// clang-format on
+
+#if defined(POINTING_DEVICE_ENABLE) && defined(DILEMMA_AUTO_SNIPING_ON_LAYER)
+layer_state_t layer_state_set_user(layer_state_t state) {
+ dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+#endif // POINTING_DEVICE_ENABLE && DILEMMA_AUTO_SNIPING_ON_LAYER
+
+#ifdef RGB_MATRIX_ENABLE
+// Forward-declare this helper function since it is defined in rgb_matrix.c.
+void rgb_matrix_update_pwm_buffers(void);
+#endif
+
+void shutdown_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_setrgb_red();
+#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_set_color_all(RGB_RED);
+ rgb_matrix_update_pwm_buffers();
+#endif // RGB_MATRIX_ENABLE
+}
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/readme.md b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/readme.md
new file mode 100644
index 00000000000..df1f43cbcb3
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/readme.md
@@ -0,0 +1,3 @@
+# Dilemma @bstiq keymap
+
+Inspired from Miryoku, using home-rows.
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c
new file mode 100644
index 00000000000..461976b2764
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum dilemma_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_NAV,
+ LAYER_SYM,
+ LAYER_NUM,
+};
+
+#define NAV MO(LAYER_NAV)
+#define SYM MO(LAYER_SYM)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_split_3x5_3(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ KC_A, NAV, CAPSWRD, KC_SPC, SYM, KC_A
+ // ╰───────────────────────────╯ ╰──────────────────────────╯
+ ),
+
+ [LAYER_NAV] = LAYOUT_split_3x5_3(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_DEL,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LSFT, KC_LCTL, KC_LALT, KC_RGUI, KC_VOLD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ QK_BOOT, EE_CLR, KC_MPRV, KC_MNXT, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, KC_ENT,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ // ╰───────────────────────────╯ ╰──────────────────────────╯
+ ),
+
+ [LAYER_SYM] = LAYOUT_split_3x5_3(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_ESC, KC_LBRC, KC_LCBR, KC_LPRN, KC_TILD, KC_CIRC, KC_RPRN, KC_RCBR, KC_RBRC, KC_GRV,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_MINS, KC_ASTR, KC_EQL, KC_UNDS, KC_DLR, KC_HASH, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_PLUS, KC_PIPE, KC_AT, KC_SLSH, KC_PERC, _______, KC_BSLS, KC_AMPR, KC_QUES, KC_EXLM,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ // ╰───────────────────────────╯ ╰──────────────────────────╯
+ ),
+
+ [LAYER_NUM] = LAYOUT_split_3x5_3(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_F11, KC_F12, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ // ╰───────────────────────────╯ ╰──────────────────────────╯
+ ),
+};
+// clang-format on
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, LAYER_NAV, LAYER_SYM, LAYER_NUM);
+}
diff --git a/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h
new file mode 100644
index 00000000000..f9aa8946657
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h
@@ -0,0 +1,26 @@
+/**
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI1
+#define RP_SPI_USE_SPI1 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
diff --git a/keyboards/bastardkb/dilemma/3x5_3/readme.md b/keyboards/bastardkb/dilemma/3x5_3/readme.md
new file mode 100644
index 00000000000..bfddbc9efc3
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/readme.md
@@ -0,0 +1,5 @@
+# Next generation Dilemma keyboard
+
+This keyboard is an updated version of the [3x5+2 Dilemma](../3x5_2/).
+
+This is still under active development, and not available publicly yet.
diff --git a/keyboards/bastardkb/dilemma/3x5_3/rules.mk b/keyboards/bastardkb/dilemma/3x5_3/rules.mk
new file mode 100644
index 00000000000..73ee4ab1e00
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/rules.mk
@@ -0,0 +1,36 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# 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 = no # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality
+RGB_MATRIX_DRIVER = WS2812
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+# RP2040-specific options
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
diff --git a/keyboards/bastardkb/dilemma/config.h b/keyboards/bastardkb/dilemma/config.h
index af59efb7090..7f0b5c266f1 100644
--- a/keyboards/bastardkb/dilemma/config.h
+++ b/keyboards/bastardkb/dilemma/config.h
@@ -47,3 +47,4 @@
// Configure for the Cirque model used on the Dilemma.
#define CIRQUE_PINNACLE_DIAMETER_MM 35
#define CIRQUE_PINNACLE_CURVED_OVERLAY
+#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE // Circular scroll.
diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c
index e710f3aab7f..b474a24e7f9 100644
--- a/keyboards/bastardkb/dilemma/dilemma.c
+++ b/keyboards/bastardkb/dilemma/dilemma.c
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Christopher Courtney (@drashna)
* Copyright 2021 Quentin LEBASTARD
* Copyright 2022 Charly Delay (@0xcharly)
@@ -316,7 +316,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
void eeconfig_init_kb(void) {
g_dilemma_config.raw = 0;
- g_dilemma_config.pointer_default_dpi = 4;
+ g_dilemma_config.pointer_default_dpi = 3; // DPI=1000
write_dilemma_config_to_eeprom(&g_dilemma_config);
maybe_update_pointing_device_cpi(&g_dilemma_config);
eeconfig_init_user();
@@ -327,3 +327,19 @@ void matrix_init_kb(void) {
matrix_init_user();
}
#endif // POINTING_DEVICE_ENABLE
+
+// Forward declare RP2040 SDK declaration.
+void gpio_init(uint gpio);
+
+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();
+}
diff --git a/keyboards/bastardkb/dilemma/dilemma.h b/keyboards/bastardkb/dilemma/dilemma.h
index fbf54c804bb..68d86b03ce9 100644
--- a/keyboards/bastardkb/dilemma/dilemma.h
+++ b/keyboards/bastardkb/dilemma/dilemma.h
@@ -17,27 +17,18 @@
#pragma once
-#include "quantum.h"
-
// clang-format off
-#define LAYOUT_split_3x5_2( \
- k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
- k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
- k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
- k30, k32, k72, k70 \
-) \
-{ \
- { k00, k01, k02, k03, k04 }, \
- { k10, k11, k12, k13, k14 }, \
- { k20, k21, k22, k23, k24 }, \
- { k30, KC_NO, k32, KC_NO, KC_NO }, \
- { k40, k41, k42, k43, k44 }, \
- { k50, k51, k52, k53, k54 }, \
- { k60, k61, k62, k63, k64 }, \
- { k70, KC_NO, k72, KC_NO, KC_NO }, \
-}
+#if defined(KEYBOARD_bastardkb_dilemma_3x5_2_splinky) || defined (KEYBOARD_bastardkb_dilemma_3x5_2_assembled)
+# include "3x5_2.h"
+#elif defined(KEYBOARD_bastardkb_dilemma_3x5_3)
+# include "3x5_3.h"
+#else
+# error "Unsuported format"
+#endif
// clang-format on
+#include "quantum.h"
+
#ifdef POINTING_DEVICE_ENABLE
# ifndef NO_DILEMMA_KEYCODES
enum dilemma_keycodes {
diff --git a/keyboards/bastardkb/dilemma/elitec/info.json b/keyboards/bastardkb/dilemma/elitec/info.json
deleted file mode 100644
index f5916f3ab1e..00000000000
--- a/keyboards/bastardkb/dilemma/elitec/info.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "keyboard_name": "Dilemma Elite-C",
- "usb": {
- "device_version": "1.0.0",
- },
-}
diff --git a/keyboards/bastardkb/dilemma/elitec/rules.mk b/keyboards/bastardkb/dilemma/elitec/rules.mk
deleted file mode 100644
index e8326bcf099..00000000000
--- a/keyboards/bastardkb/dilemma/elitec/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
diff --git a/keyboards/bastardkb/dilemma/info.json b/keyboards/bastardkb/dilemma/info.json
index 67642199691..989d66a177c 100644
--- a/keyboards/bastardkb/dilemma/info.json
+++ b/keyboards/bastardkb/dilemma/info.json
@@ -1,46 +1,3 @@
{
"url": "https://bastardkb.com/dilemma",
- "usb": {
- "pid": "0x1835",
- },
- "layouts": {
- "LAYOUT_split_3x5_2": {
- "layout": [
- {"label":"L00", "x":0, "y":0},
- {"label":"L01", "x":1, "y":0},
- {"label":"L02", "x":2, "y":0},
- {"label":"L03", "x":3, "y":0},
- {"label":"L04", "x":4, "y":0},
- {"label":"R00", "x":11, "y":0},
- {"label":"R01", "x":12, "y":0},
- {"label":"R02", "x":13, "y":0},
- {"label":"R03", "x":14, "y":0},
- {"label":"R04", "x":15, "y":0},
- {"label":"L10", "x":0, "y":1},
- {"label":"L11", "x":1, "y":1},
- {"label":"L12", "x":2, "y":1},
- {"label":"L13", "x":3, "y":1},
- {"label":"L14", "x":4, "y":1},
- {"label":"R10", "x":11, "y":1},
- {"label":"R11", "x":12, "y":1},
- {"label":"R12", "x":13, "y":1},
- {"label":"R13", "x":14, "y":1},
- {"label":"R14", "x":15, "y":1},
- {"label":"L20", "x":0, "y":2},
- {"label":"L21", "x":1, "y":2},
- {"label":"L22", "x":2, "y":2},
- {"label":"L23", "x":3, "y":2},
- {"label":"L24", "x":4, "y":2},
- {"label":"R20", "x":11, "y":2},
- {"label":"R21", "x":12, "y":2},
- {"label":"R22", "x":13, "y":2},
- {"label":"R23", "x":14, "y":2},
- {"label":"R24", "x":15, "y":2},
- {"label":"L30", "x":4, "y":3},
- {"label":"L32", "x":5, "y":3},
- {"label":"R32", "x":10, "y":3},
- {"label":"R30", "x":11, "y":3}
- ]
- }
- }
}
diff --git a/keyboards/bastardkb/dilemma/readme.md b/keyboards/bastardkb/dilemma/readme.md
index ecd1f9f1c91..ac3c818bd6f 100644
--- a/keyboards/bastardkb/dilemma/readme.md
+++ b/keyboards/bastardkb/dilemma/readme.md
@@ -3,12 +3,14 @@
A very small keyboard made for ergonomic enthusiasts.
- Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/)
-- Hardware Supported: elite-C V4, Splinky
+- Hardware Supported: RP2040-based controller (_eg._ Splinky, Elite-c, ...)
- Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
+A pre-assembled version (with embedded controller) is also available.
+
Make example for this keyboard (after setting up your build environment):
- make bastardkb/dilemma/elitec:default
- make bastardkb/dilemma/splinky:default
+ make bastardkb/dilemma/3x5_2/splinky:default
+ make bastardkb/dilemma/3x5_2/assembled:default
See the [keyboard build instructions](http://docs.bastardkb.com/)
diff --git a/keyboards/bastardkb/dilemma/splinky/info.json b/keyboards/bastardkb/dilemma/splinky/info.json
deleted file mode 100644
index 07ee320bb90..00000000000
--- a/keyboards/bastardkb/dilemma/splinky/info.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "keyboard_name": "Dilemma Splinky",
- "usb": {
- "device_version": "1.0.0",
- },
-}
diff --git a/keyboards/bastardkb/dilemma/splinky/rules.mk b/keyboards/bastardkb/dilemma/splinky/rules.mk
deleted file mode 100644
index 9c593c6ed83..00000000000
--- a/keyboards/bastardkb/dilemma/splinky/rules.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-# MCU name
-MCU = RP2040
-
-# Bootloader selection
-BOOTLOADER = rp2040
-
-# RP2040-specific options
-PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
-SERIAL_DRIVER = vendor
diff --git a/keyboards/bastardkb/scylla/blackpill/halconf.h b/keyboards/bastardkb/scylla/blackpill/halconf.h
index 0d4b7b5dc50..1ba700a80fa 100644
--- a/keyboards/bastardkb/scylla/blackpill/halconf.h
+++ b/keyboards/bastardkb/scylla/blackpill/halconf.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2022 Charly Delay (@0xcharly)
*
@@ -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
diff --git a/keyboards/bastardkb/scylla/blackpill/mcuconf.h b/keyboards/bastardkb/scylla/blackpill/mcuconf.h
index e7cf3681fd3..2b3f30cbfe7 100644
--- a/keyboards/bastardkb/scylla/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/scylla/blackpill/mcuconf.h
@@ -21,39 +21,15 @@
#include_next
-#undef STM32_I2C_USE_I2C1
-#define STM32_I2C_USE_I2C1 FALSE
-
-//#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_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
#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_TIM3
#define STM32_GPT_USE_TIM3 TRUE
diff --git a/keyboards/bastardkb/scylla/readme.md b/keyboards/bastardkb/scylla/readme.md
index 5a83083b96c..830b8eacdad 100644
--- a/keyboards/bastardkb/scylla/readme.md
+++ b/keyboards/bastardkb/scylla/readme.md
@@ -6,17 +6,24 @@ A modern, low-profile split ergonomic keyboard
* Hardware Supported: elite-C V4
* Hardware Availability: [Bastard Keyboards](https://bastardkb.com/)
-Make example for this keyboard (after setting up your build environment):
+## Building the firmware
- make bastardkb/scylla:default
+**You must specify the shield version when compiling/flashing the firmware.**
+
+The template is:
+
+```shell
+qmk compile -kb bastardkb/scylla/{VERSION}/elitec -km {KEYMAP}
+```
+
+| Shield Version | default | via |
+| --------------- | ------------------------------------------------------------- | --------------------------------------------------------- |
+| v1 (Elite-C) | `qmk compile -kb bastardkb/scylla/v1/elitec -km default` | `qmk compile -kb bastardkb/scylla/v1/elitec -km via` |
+| v2 (Elite-C) | `qmk compile -kb bastardkb/scylla/v2/elitec -km default` | `qmk compile -kb bastardkb/scylla/v2/elitec -km via` |
+| v2 (Splinky v2) | `qmk compile -kb bastardkb/scylla/v2/splinky/v2 -km default` | `qmk compile -kb bastardkb/scylla/v2/splinky/v2 -km via` |
+| v2 (Splinky v3) | `qmk compile -kb bastardkb/scylla/v2/splinky/v3 -km default` | `qmk compile -kb bastardkb/scylla/v2/splinky/v3 -km via` |
+| v2 (STeMCell) | `qmk compile -kb bastardkb/scylla/v2/stemcell -km default` | `qmk compile -kb bastardkb/scylla/v2/stemcell -km via` |
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).
See the [keyboard build instructions](https://docs.bastardkb.com)
-
-
-## Important information regarding the reset
-
-If you modify this firmware, make sure to always have a `QK_BOOT` key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up.
-
-Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button.
diff --git a/keyboards/bastardkb/scylla/v2/splinky/config.h b/keyboards/bastardkb/scylla/v2/splinky/config.h
index 5f678fb331a..8bfd59d28c2 100644
--- a/keyboards/bastardkb/scylla/v2/splinky/config.h
+++ b/keyboards/bastardkb/scylla/v2/splinky/config.h
@@ -20,8 +20,6 @@
/* 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
diff --git a/keyboards/bastardkb/scylla/v2/splinky/readme.md b/keyboards/bastardkb/scylla/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/scylla/v2/splinky/rules.mk b/keyboards/bastardkb/scylla/v2/splinky/rules.mk
index 8dfc0256ab5..67846c1ab38 100644
--- a/keyboards/bastardkb/scylla/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/scylla/v2/splinky/rules.mk
@@ -31,3 +31,5 @@ SPLIT_KEYBOARD = yes
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/scylla/v2/splinky/v3
diff --git a/keyboards/bastardkb/scylla/v2/splinky/v2/config.h b/keyboards/bastardkb/scylla/v2/splinky/v2/config.h
new file mode 100644
index 00000000000..be0e2fb9591
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/v2/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/scylla/v2/splinky/v2/rules.mk b/keyboards/bastardkb/scylla/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/scylla/v2/splinky/v3/config.h b/keyboards/bastardkb/scylla/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..72f5c0ffa81
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/v3/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP21, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/scylla/v2/splinky/v3/rules.mk b/keyboards/bastardkb/scylla/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/scylla/v2/stemcell/config.h b/keyboards/bastardkb/scylla/v2/stemcell/config.h
new file mode 100644
index 00000000000..578e23f40ac
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/stemcell/config.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#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
+
+// 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
diff --git a/keyboards/bastardkb/scylla/v2/stemcell/halconf.h b/keyboards/bastardkb/scylla/v2/stemcell/halconf.h
new file mode 100644
index 00000000000..dbeb6aeaa07
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/stemcell/halconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next
diff --git a/keyboards/bastardkb/scylla/v2/stemcell/info.json b/keyboards/bastardkb/scylla/v2/stemcell/info.json
new file mode 100644
index 00000000000..46e33a828c1
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Scylla STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h b/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h
new file mode 100644
index 00000000000..6afebade36c
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next
+
+#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
diff --git a/keyboards/bastardkb/scylla/v2/stemcell/rules.mk b/keyboards/bastardkb/scylla/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..39fc183e1dd
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/stemcell/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+SPLIT_KEYBOARD = yes
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/skeletyl/blackpill/halconf.h b/keyboards/bastardkb/skeletyl/blackpill/halconf.h
index 53f1c4c7850..1ba700a80fa 100644
--- a/keyboards/bastardkb/skeletyl/blackpill/halconf.h
+++ b/keyboards/bastardkb/skeletyl/blackpill/halconf.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2022 Charly Delay (@0xcharly)
*
@@ -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
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next
diff --git a/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h
index 91adb116899..2b3f30cbfe7 100644
--- a/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h
@@ -21,39 +21,15 @@
#include_next
-#undef STM32_I2C_USE_I2C1
-#define STM32_I2C_USE_I2C1 FALSE
-
-//#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_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
#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_TIM3
#define STM32_GPT_USE_TIM3 TRUE
diff --git a/keyboards/bastardkb/skeletyl/readme.md b/keyboards/bastardkb/skeletyl/readme.md
index 6c36b583564..5a595d338f3 100644
--- a/keyboards/bastardkb/skeletyl/readme.md
+++ b/keyboards/bastardkb/skeletyl/readme.md
@@ -6,10 +6,24 @@ A very small keyboard made for ergonomic enthusiasts.
* Hardware Supported: elite-C V4
* Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
-Make example for this keyboard (after setting up your build environment):
+## Building the firmware
+
+**You must specify the shield version when compiling/flashing the firmware.**
+
+The template is:
+
+```shell
+qmk compile -kb bastardkb/skeletyl/{VERSION}/elitec -km {KEYMAP}
+```
+
+| Shield Version | default | via |
+| --------------- | --------------------------------------------------------------- | ----------------------------------------------------------- |
+| v1 (Elite-C) | `qmk compile -kb bastardkb/skeletyl/v1/elitec -km default` | `qmk compile -kb bastardkb/skeletyl/v1/elitec -km via` |
+| v2 (Elite-C) | `qmk compile -kb bastardkb/skeletyl/v2/elitec -km default` | `qmk compile -kb bastardkb/skeletyl/v2/elitec -km via` |
+| v2 (Splinky v2) | `qmk compile -kb bastardkb/skeletyl/v2/splinky/v2 -km default` | `qmk compile -kb bastardkb/skeletyl/v2/splinky/v2 -km via` |
+| v2 (Splinky v3) | `qmk compile -kb bastardkb/skeletyl/v2/splinky/v3 -km default` | `qmk compile -kb bastardkb/skeletyl/v2/splinky/v3 -km via` |
+| v2 (STeMCell) | `qmk compile -kb bastardkb/skeletyl/v2/stemcell -km default` | `qmk compile -kb bastardkb/skeletyl/v2/stemcell -km via` |
- make bastardkb/skeletyl:default
-
This keyboard is made to be used with the Miryoku layout, do not use the default keymap.
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).
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/config.h b/keyboards/bastardkb/skeletyl/v2/splinky/config.h
index 02a8bd6551a..c4e5b3ff906 100644
--- a/keyboards/bastardkb/skeletyl/v2/splinky/config.h
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/config.h
@@ -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
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/readme.md b/keyboards/bastardkb/skeletyl/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk
index 1ce16352dde..2749d4fc2cb 100644
--- a/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk
@@ -32,3 +32,5 @@ LAYOUTS = split_3x5_3
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/skeletyl/v2/splinky/v3
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/v2/config.h b/keyboards/bastardkb/skeletyl/v2/splinky/v2/config.h
new file mode 100644
index 00000000000..ac86fa83e6f
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/v2/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP28, GP15, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/v2/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/v3/config.h b/keyboards/bastardkb/skeletyl/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..d78a36c97ff
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/v3/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP28, GP21, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/v3/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/dilemma/elitec/config.h b/keyboards/bastardkb/skeletyl/v2/stemcell/config.h
similarity index 69%
rename from keyboards/bastardkb/dilemma/elitec/config.h
rename to keyboards/bastardkb/skeletyl/v2/stemcell/config.h
index 0f26e46fdbb..44acd40e7b8 100644
--- a/keyboards/bastardkb/dilemma/elitec/config.h
+++ b/keyboards/bastardkb/skeletyl/v2/stemcell/config.h
@@ -19,19 +19,30 @@
/* Key matrix configuration. */
#define MATRIX_ROW_PINS \
- { D4, C6, F5, F7 }
+ { F7, C6, D4, B5 }
#define MATRIX_COL_PINS \
- { B4, B5, E6, D7, F6 }
+ { F5, B6, D7, E6, B4 }
/* Handedness. */
#define MASTER_RIGHT
-// To use the handedness pin, resistors need to be installed on the PCB.
+// 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 F4
-// If you've soldered the handedness pull-up on the upper side instead of the
-// left one, uncomment the following line.
-//#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+// #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
diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h b/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h
new file mode 100644
index 00000000000..dbeb6aeaa07
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next
diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/info.json b/keyboards/bastardkb/skeletyl/v2/stemcell/info.json
new file mode 100644
index 00000000000..df805a62292
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Skeletyl STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h b/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h
new file mode 100644
index 00000000000..6afebade36c
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next
+
+#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
diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk b/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..ff20b0c7421
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/tbkmini/blackpill/halconf.h b/keyboards/bastardkb/tbkmini/blackpill/halconf.h
index 0d4b7b5dc50..1ba700a80fa 100644
--- a/keyboards/bastardkb/tbkmini/blackpill/halconf.h
+++ b/keyboards/bastardkb/tbkmini/blackpill/halconf.h
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright 2020 Nick Brassel (tzarc)
* Copyright 2022 Charly Delay (@0xcharly)
*
@@ -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
diff --git a/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h
index e7cf3681fd3..2b3f30cbfe7 100644
--- a/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h
+++ b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h
@@ -21,39 +21,15 @@
#include_next
-#undef STM32_I2C_USE_I2C1
-#define STM32_I2C_USE_I2C1 FALSE
-
-//#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_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
#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_TIM3
#define STM32_GPT_USE_TIM3 TRUE
diff --git a/keyboards/bastardkb/tbkmini/readme.md b/keyboards/bastardkb/tbkmini/readme.md
index 8be8200ff9a..74e24ff5069 100644
--- a/keyboards/bastardkb/tbkmini/readme.md
+++ b/keyboards/bastardkb/tbkmini/readme.md
@@ -6,10 +6,24 @@ A split, compact ergonomic keyboard.
* Hardware Supported: elite-C V4
* Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
-Make example for this keyboard (after setting up your build environment):
+## Building the firmware
- make bastardkb/tbkmini:default
+**You must specify the shield version when compiling/flashing the firmware.**
+
+The template is:
+
+```shell
+qmk compile -kb bastardkb/tbkmini/{VERSION}/elitec -km {KEYMAP}
+```
+
+| Shield Version | default | via |
+| --------------- | -------------------------------------------------------------- | ---------------------------------------------------------- |
+| v1 (Elite-C) | `qmk compile -kb bastardkb/tbkmini/v1/elitec -km default` | `qmk compile -kb bastardkb/tbkmini/v1/elitec -km via` |
+| v2 (Elite-C) | `qmk compile -kb bastardkb/tbkmini/v2/elitec -km default` | `qmk compile -kb bastardkb/tbkmini/v2/elitec -km via` |
+| v2 (Splinky v2) | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v2 -km default` | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v2 -km via` |
+| v2 (Splinky v3) | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v3 -km default` | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v3 -km via` |
+| v2 (STeMCell) | `qmk compile -kb bastardkb/tbkmini/v2/stemcell -km default` | `qmk compile -kb bastardkb/tbkmini/v2/stemcell -km via` |
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).
-See the [keyboard build instructions](http://docs.bastardkb.com/)
\ No newline at end of file
+See the [keyboard build instructions](http://docs.bastardkb.com/)
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/config.h b/keyboards/bastardkb/tbkmini/v2/splinky/config.h
index ed0b4a6a548..c4e5b3ff906 100644
--- a/keyboards/bastardkb/tbkmini/v2/splinky/config.h
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/config.h
@@ -20,8 +20,6 @@
/* Key matrix configuration. */
#define MATRIX_ROW_PINS \
{ GP26, GP5, GP4, GP9 }
-#define MATRIX_COL_PINS \
- { GP27, GP28, GP15, GP6, GP7, GP8 }
/* Handedness. */
#define MASTER_RIGHT
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/readme.md b/keyboards/bastardkb/tbkmini/v2/splinky/readme.md
new file mode 100644
index 00000000000..22df77bbaa8
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/readme.md
@@ -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.
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk
index 6b55f6e5954..7bf3459d045 100644
--- a/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk
@@ -32,3 +32,5 @@ LAYOUTS = split_3x6_3
SERIAL_DRIVER = vendor
WS2812_DRIVER = vendor
+
+DEFAULT_FOLDER = bastardkb/tbkmini/v2/splinky/v3
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/v2/config.h b/keyboards/bastardkb/tbkmini/v2/splinky/v2/config.h
new file mode 100644
index 00000000000..be0e2fb9591
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/v2/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/v2/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky/v2/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/v2/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/v3/config.h b/keyboards/bastardkb/tbkmini/v2/splinky/v3/config.h
new file mode 100644
index 00000000000..72f5c0ffa81
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/v3/config.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP21, GP6, GP7, GP8 }
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/v3/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky/v3/rules.mk
new file mode 100644
index 00000000000..c9c50319dbb
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/v3/rules.mk
@@ -0,0 +1,2 @@
+# Intentionally blank so that QMK detects this folder as a valid keyboard
+# parameter.
diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/config.h b/keyboards/bastardkb/tbkmini/v2/stemcell/config.h
new file mode 100644
index 00000000000..0c66a8075b1
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/stemcell/config.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2022 Charly Delay (@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 .
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, 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
diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h b/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h
new file mode 100644
index 00000000000..dbeb6aeaa07
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next
diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/info.json b/keyboards/bastardkb/tbkmini/v2/stemcell/info.json
new file mode 100644
index 00000000000..b56c455ae35
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/stemcell/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "TBK Mini STeMCell",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h b/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h
new file mode 100644
index 00000000000..6afebade36c
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2021 Charly Delay (@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 .
+ */
+
+#pragma once
+
+#include_next
+
+#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
diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk b/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk
new file mode 100644
index 00000000000..9b36bf7ed58
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+CONVERT_TO = stemcell
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+SERIAL_DRIVER = usart
+WS2812_DRIVER = pwm
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/cannonkeys/serenity/info.json b/keyboards/cannonkeys/serenity/info.json
index cd154a30035..281defab6e7 100644
--- a/keyboards/cannonkeys/serenity/info.json
+++ b/keyboards/cannonkeys/serenity/info.json
@@ -1,4 +1,5 @@
{
+ "manufacturer": "Cannon Keys",
"keyboard_name": "Serenity",
"usb": {
"vid": "0xCA04",
diff --git a/keyboards/controllerworks/mini36/keymaps/default/config.h b/keyboards/controllerworks/mini36/keymaps/default/config.h
index e1d162ef3ee..77da61828c1 100644
--- a/keyboards/controllerworks/mini36/keymaps/default/config.h
+++ b/keyboards/controllerworks/mini36/keymaps/default/config.h
@@ -23,7 +23,7 @@
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_HUE_STEP 8
diff --git a/keyboards/controllerworks/mini36/keymaps/via/config.h b/keyboards/controllerworks/mini36/keymaps/via/config.h
index e1d162ef3ee..77da61828c1 100644
--- a/keyboards/controllerworks/mini36/keymaps/via/config.h
+++ b/keyboards/controllerworks/mini36/keymaps/via/config.h
@@ -23,7 +23,7 @@
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_HUE_STEP 8
diff --git a/keyboards/controllerworks/mini42/keymaps/default/config.h b/keyboards/controllerworks/mini42/keymaps/default/config.h
index e1d162ef3ee..77da61828c1 100644
--- a/keyboards/controllerworks/mini42/keymaps/default/config.h
+++ b/keyboards/controllerworks/mini42/keymaps/default/config.h
@@ -23,7 +23,7 @@
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_HUE_STEP 8
diff --git a/keyboards/controllerworks/mini42/keymaps/via/config.h b/keyboards/controllerworks/mini42/keymaps/via/config.h
index 94eb482c86f..e11d5aa37fa 100644
--- a/keyboards/controllerworks/mini42/keymaps/via/config.h
+++ b/keyboards/controllerworks/mini42/keymaps/via/config.h
@@ -16,8 +16,6 @@
*/
#pragma once
#ifdef RGB_MATRIX_ENABLE
-# define RGBLED_NUM 54 // Number of LEDs
-# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGB_MATRIX_SPLIT \
{ 27, 27 }
//# define SPLIT_TRANSPORT_MIRROR
@@ -26,7 +24,7 @@
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_HUE_STEP 8
diff --git a/keyboards/crkbd/keymaps/nimishgautam/config.h b/keyboards/crkbd/keymaps/nimishgautam/config.h
index 38146abb436..b09d8588986 100644
--- a/keyboards/crkbd/keymaps/nimishgautam/config.h
+++ b/keyboards/crkbd/keymaps/nimishgautam/config.h
@@ -61,7 +61,7 @@
#define RGB_MATRIX_VAL_STEP 8
#define RGB_MATRIX_SPD_STEP 10
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+ #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/crkbd/keymaps/nimishgautam/keymap.c b/keyboards/crkbd/keymaps/nimishgautam/keymap.c
index 508388d442a..e8a476cfc5f 100644
--- a/keyboards/crkbd/keymaps/nimishgautam/keymap.c
+++ b/keyboards/crkbd/keymaps/nimishgautam/keymap.c
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_TEXT_NAV] = LAYOUT_split_3x6_3( //text nav and special navigation (lock screen, adjust layer, etc)
//,-----------------------------------------------------. ,-----------------------------------------------------.
- LOCK_SCREEN, KC_PSCR, SELECT_LEFT_LINE, KC_UP, SELECT_RIGHT_LINE, TD(TD_MOVE_BEGIN_LINE), TD(TD_MOVE_END_LINE), KC_MS_WH_UP, EMOJI_KBD, KC_TRANSPARENT, KC_TRANSPARENT, RESET,
+ LOCK_SCREEN, KC_PSCR, SELECT_LEFT_LINE, KC_UP, SELECT_RIGHT_LINE, TD(TD_MOVE_BEGIN_LINE), TD(TD_MOVE_END_LINE), KC_MS_WH_UP, EMOJI_KBD, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
TO(_BASE), SELECT_LEFT_WD, KC_LEFT, KC_DOWN, KC_RIGHT,SELECT_RIGHT_WD, KC_MS_WH_LEFT, KC_RGUI, KC_RSFT, KC_RALT,KC_RCTL, KC_CAPS,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/sharkby7e/keymap.c b/keyboards/crkbd/keymaps/sharkby7e/keymap.c
index e37ef9881ba..9f483a27a44 100644
--- a/keyboards/crkbd/keymaps/sharkby7e/keymap.c
+++ b/keyboards/crkbd/keymaps/sharkby7e/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h
index f182a1a6d8b..ba41cd92234 100644
--- a/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h
+++ b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h
@@ -44,7 +44,7 @@
#define ________________________SYMBOL_R2________________________ XXXXXXX , KC_LCBR , KC_RCBR , KC_LBRC , KC_RBRC , KC_PLUS
-#define ________________________ADJUST_L1________________________ RESET , XXXXXXX , KC_PWR , KC_WAKE , KC_SLEP , XXXXXXX
+#define ________________________ADJUST_L1________________________ QK_BOOT , XXXXXXX , KC_PWR , KC_WAKE , KC_SLEP , XXXXXXX
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
# define ________________________ADJUST_L2________________________ RGBRST , XXXXXXX , RGB_SPI , RGB_SAI , RGB_HUI , RGB_VAI
diff --git a/keyboards/custommk/bonsai_c4_template/config.h b/keyboards/custommk/bonsai_c4_template/config.h
deleted file mode 100644
index 192e9b07556..00000000000
--- a/keyboards/custommk/bonsai_c4_template/config.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright 2022 customMK
- *
- * 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 .
- */
-
-#pragma once
-
-#include "config_common.h"
-
-// This file includes example #defines to enable commonly-used functionality
-// (SPI, PWM backlight, etc.) on specific pins. Capabilities you want to include
-// should be added to the config.h for your keyboard. Not all capabilities are
-// shown; for example:
-// I2C is not shown because the QMK defaults are sufficient for SCL on B6 and SDA on B7
-// Serial communications (for split keyboards) is not shown because QMK defaults work
-// for either pins A15 or B6
-
-// If you need to change pins for PWM, SPI, I2C, or Serial communications, be aware that
-// doing this may require changing the driver, channel, PAL (Pin ALternate function) mode,
-// DMA stream, and/or DMA channel.
-
-
-// Bonsai C4 wires up pin A9 for Vbus sensing pin by default. For spilt keyboards, this
-// can be used to determine which half of the keyboard is plugged into USB.
-// For boards using Bonsai C4 merely as a reference design, the VBUS sense pin A9
-// can be used for purposes other than Vbus sensing (e.g. the switch
-// matrix).
-//
-// If A9 is needed for Vbus sensing, uncomment the line
-// below. Most keyboards using Bonsai C4 can leave the line below
-// commented out.
-//
-// #undef BOARD_OTG_NOVBUSSENS
-
-// FRAM configuration
-#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A0
-#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // 96MHz / 8 = 12MHz; max supported by MB85R64 is 20MHz
-#define EXTERNAL_EEPROM_PAGE_SIZE 64 // does not matter for FRAM, just sets the RAM buffer size in STM32F chip
-#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191
-
-// External flash configuration
-#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B12
-#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 1 // 96MHz; max supported by W25Q128JV is 133MHz
-#define EXTERNAL_FLASH_BYTE_COUNT (16 * 1024 * 1024) //128Mbit or 16MByte
-#define EXTERNAL_FLASH_PAGE_SIZE 256
-#define EXTERNAL_FLASH_SPI_TIMEOUT 200000 //datasheet max is 200 seconds for flash chip erase
-
-// SPI Configuration (needed for FRAM and FLASH)
-#define SPI_DRIVER SPID1
-#define SPI_SCK_PIN B3
-#define SPI_MOSI_PIN B5
-#define SPI_MISO_PIN B4
-
-// Example code to set up PWM backlight on pin A6
-// If a different pin is used, a different PWM driver/channel settings may be necessary
-#define BACKLIGHT_PIN A6
-#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 1
-
-// Example code for WS2812 underglow
-// Only pin A10 is wired to send 5V signals to the WS2812
-// This also usually requires adding special wiring during board assembly
-#define RGB_DI_PIN A10
-#define WS2812_PWM_DRIVER PWMD1
-#define WS2812_PWM_CHANNEL 3
-#define WS2812_PWM_PAL_MODE 1
-#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
-#define WS2812_DMA_CHANNEL 6
diff --git a/keyboards/custommk/bonsai_c4_template/readme.md b/keyboards/custommk/bonsai_c4_template/readme.md
deleted file mode 100644
index 0c0fd8ed0ce..00000000000
--- a/keyboards/custommk/bonsai_c4_template/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Bonsai C4 template code
-
-Currently, the converter for Pro Micro to Bonsai C4 only does pin mapping. This is sufficient for simple keyboards and also a good start for
-incorporating into more advanced keyboards with other features (like RGB, OLED, backlighting, split communiciations, etc.). However, to make
-use of the more advanced features--including using the FRAM and flash memory chip included on Bonsai C4--various peripheral hardware must
-be configured. Pro Micro does not requrie such configuration because such functionality is more limited and hard-wired to specific pins.
-
-The code here provides examples that can be used to operate SPI, I2C, PWM, and Serial comms. In addition to using the converter, you will
-need to take code (as-needed) and add it to existing config.h files, or add in new halconf.h and mcuconf.h files. If you are changing which
-pins are used for certain functions, you should verify the new pins support that functionality, and check all assingments to ensure the correct settings are used (including as-applicable driver, channel, PAL (Pin ALternate function) mode, DMA stream, and/or DMA channel).
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/bghull/combos.def b/keyboards/eyeohdesigns/babyv/keymaps/bghull/combos.def
new file mode 100644
index 00000000000..a525113a093
--- /dev/null
+++ b/keyboards/eyeohdesigns/babyv/keymaps/bghull/combos.def
@@ -0,0 +1,14 @@
+// name result chord keys
+COMB(QW_ESC, KC_ESC, KC_Q, KC_W)
+COMB(CV_DEL, KC_DEL, KC_C, KC_V)
+COMB(XC_BSPC, KC_BSPC, KC_X, KC_C)
+COMB(WE_LBRC, KC_LBRC, KC_W, KC_E)
+COMB(ER_RBRC, KC_RBRC, KC_E, KC_R)
+COMB(SD_LPRN, KC_LPRN, KC_S, KC_D)
+COMB(DF_RPRN, KC_RPRN, KC_D, KC_F)
+COMB(FG_BSLS, KC_BSLS, KC_F, KC_G)
+COMB(HJ_SLSH, KC_SLSH, KC_H, KC_J)
+COMB(DQ_LGUI, KC_LGUI, KC_DOT, KC_QUOT)
+COMB(CD_LALT, KC_LALT, KC_COMM, KC_DOT)
+COMB(MC_LSFT, KC_LSFT, KC_M, KC_COMM)
+COMB(NM_LCTL, KC_LCTL, KC_N, KC_M)
\ No newline at end of file
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/bghull/config.h b/keyboards/eyeohdesigns/babyv/keymaps/bghull/config.h
new file mode 100644
index 00000000000..96a6aefb0e5
--- /dev/null
+++ b/keyboards/eyeohdesigns/babyv/keymaps/bghull/config.h
@@ -0,0 +1,7 @@
+// Copyright 2021 Your Name (@bghull)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#define AUTO_SHIFT_TIMEOUT 135
+#define ONESHOT_TIMEOUT 1000
+#define COMBO_TERM 20
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c
new file mode 100644
index 00000000000..21a0200925b
--- /dev/null
+++ b/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c
@@ -0,0 +1,122 @@
+/* Copyright 2020 Eye Oh! Designs
+ *
+ * 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
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_steno.h"
+#include "g/keymap_combo.h"
+
+
+#define COMBO_ONLY_FROM_LAYER QWERTY
+
+enum layer_names {
+ QWERTY,
+ COLMAK,
+ NAVNUM,
+ FUNC,
+ STENO
+};
+
+#define BspNAV LT(NAVNUM, KC_BSPC)
+#define SpcFUN LT(FUNC, KC_SPC)
+#define OneSFT OSM(MOD_LSFT)
+#define OneALT OSM(MOD_LALT)
+#define OneCTL OSM(MOD_LCTL)
+#define OneWIN OSM(MOD_LGUI)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* QWERTY
+ * ,-----------------------------------------------------------------------------------.
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | A | S | D | F | G | | H | J | K | L | ; : |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Z | X | C | V | B | | N | M | , < | . > | ' " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl |NAVNUM| |Space |BspNAV| |
+ * `-----------------------------------------------------------------------------------'
+ */
+[QWERTY] = LAYOUT_2u(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT,
+ _______, KC_LCTL, MO(NAVNUM), KC_SPC, BspNAV, _______
+),
+
+[COLMAK] = LAYOUT_2u(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ KC_A, KC_R, KC_S, KC_T, KC_G, _______, _______, KC_M, KC_N, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_D, KC_V, _______, _______, KC_K, KC_H, KC_COMM, KC_DOT, KC_QUOT,
+ _______, KC_LCTL, MO(NAVNUM), KC_SPC, BspNAV, _______
+
+),
+/* NAVNUM
+ * ,-----------------------------------------------------------------------------------.
+ * |Enter | Home | Up | End | | RST | - | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |OneSFT| Left | Down |Right | ` ~ | CLMK | + | 4 | 5 | 6 |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |OneCTL|OneALT| Tab | _ |OneWIN| QWER | = | 1 | 2 | 3 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | |SpcFUN| Ctrl | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[NAVNUM] = LAYOUT_2u(
+ KC_ENT, KC_HOME, KC_UP, KC_END, _______, _______, RESET, KC_PMNS, KC_7, KC_8, KC_9, KC_0,
+ OneSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_GRV, _______, DF(COLMAK), KC_PPLS, KC_4, KC_5, KC_6, KC_ENT,
+ OneCTL, OneALT, KC_TAB, KC_UNDS, OneWIN, _______, DF(QWERTY), KC_EQL, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, SpcFUN, KC_LCTL, _______
+),
+/* FUNC: Mousekeys + F keys
+ * ,-----------------------------------------------------------------------------------.
+ * | |Rclick| MsUp |Lclick| WhUp | | | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | MsLt | MsDn | MsRt | WhDn | |OneALT| F4 | F5 | F6 | F11 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | |Mclick| | | | | F1 | F2 | F3 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[FUNC] = LAYOUT_2u(
+ _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10,
+ _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, OneALT , KC_F4, KC_F5, KC_F6, KC_F11,
+ _______, _______, KC_BTN3, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12,
+ _______, _______, _______, _______, _______, DF(STENO)
+),
+
+/* STENO
+ * ,----------------------------------------------------------------------------------------.
+ * | | # | # | # | # | # / \ # | # | # | # | # | |
+ * |------+------+------+------+------+-------- -------+------+------+------+------+------|
+ * | | S | T | P ! H ! * / \ * ! F ! P | L | T | D |
+ * |------+------+------+------+------+------- ------+------+------+------+------+------|
+ * | | S | K | W | R | * / \ * | R | B | G | S | Z |
+ * |------+------+------+------+------+------ -----+------+------+------+------+------|
+ * | | | A | O | | E | U | |QWERTY|
+ * `----------------------------------------------------------------------------------------'
+*/
+[STENO] = LAYOUT_2u(
+ STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
+ STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
+ XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
+ XXXXXXX, STN_A, STN_O, STN_E, STN_U, DF(QWERTY)
+ ),
+};
+
+
+void matrix_init_user() {
+ steno_set_mode(STENO_MODE_GEMINI);
+};
+
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/bghull/rules.mk b/keyboards/eyeohdesigns/babyv/keymaps/bghull/rules.mk
new file mode 100644
index 00000000000..db78b5957b4
--- /dev/null
+++ b/keyboards/eyeohdesigns/babyv/keymaps/bghull/rules.mk
@@ -0,0 +1,8 @@
+NKRO_ENABLE = yes
+AUTO_SHIFT_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+STENO_ENABLE = yes
+COMBO_ENABLE = yes
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+VPATH += keyboards/gboards
\ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
index 30b1b389bc9..b35ad7590df 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
@@ -90,7 +90,7 @@ enum combos {
#define KC_LINX KC_LINUX
-#define KC_RESET RESET
+#define KC_RESET QK_BOOT
#define KC_RST KC_RESET
#define OS_GIT OSL(GIT)
diff --git a/keyboards/handwired/alcor_dactyl/config.h b/keyboards/handwired/alcor_dactyl/config.h
index f8ffe4d6a32..58a4ec558ed 100644
--- a/keyboards/handwired/alcor_dactyl/config.h
+++ b/keyboards/handwired/alcor_dactyl/config.h
@@ -27,7 +27,6 @@
#define SERIAL_USART_TX_PIN GP10
#define SERIAL_USART_RX_PIN GP9
#define RGB_DI_PIN GP16
-#define DRIVER_LED_TOTAL 2
+#define RGB_MATRIX_LED_COUNT 2
#define RGB_MATRIX_SPLIT { 1, 1 }
-#define RGBLED_NUM 1
#define EE_HANDS
diff --git a/keyboards/handwired/dactyl_manuform/5x6_6/info.json b/keyboards/handwired/dactyl_manuform/5x6_6/info.json
index 2774cec1181..dc2a78f4db7 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_6/info.json
+++ b/keyboards/handwired/dactyl_manuform/5x6_6/info.json
@@ -1,4 +1,5 @@
{
+ "manufacturer": "QMK",
"keyboard_name": "Dactyl Manuform 5x6+6",
"url": "https://github.com/fgoodwin/dactyl-manuform-5x6_6/tree/main/5x6_6",
"maintainer": "fgoodwin",
diff --git a/keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c
index 74fe44702e9..013c9867386 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
KC_TRNS, KC_TRNS, KC_PSCR, KC_DOWN, KC_UP, KC_HOME, KC_END, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
MO(1), LCTL(KC_C), KC_TRNS, MO(1),
KC_TRNS, LCTL(KC_V), KC_TRNS, KC_TRNS
)
diff --git a/keyboards/handwired/twig/twig50/keymaps/default/keymap.c b/keyboards/handwired/twig/twig50/keymaps/default/keymap.c
index 3d4b29e621f..1fb29d5a4ae 100644
--- a/keyboards/handwired/twig/twig50/keymaps/default/keymap.c
+++ b/keyboards/handwired/twig/twig50/keymaps/default/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 1, Space-modifiers: Basic keys
LAYOUT_diag_4x14(
- RESET, KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, KC_BTN2, KC_INT1, KC_MINS, KC_EQL, KC_INT3, SFT_LBR, KC_TRNS,
+ QK_BOOT, KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, KC_BTN2, KC_INT1, KC_MINS, KC_EQL, KC_INT3, SFT_LBR, KC_TRNS,
KC_TRNS, KC_AGIN, KC_FIND, KC_PGUP, KC_PGDN, KC_F19, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, SFT_7, SFT_2,
KC_TRNS, KC_TRNS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_APP, KC_BSPC, KC_DEL, KC_RBRC, KC_BSLS, KC_HOME, KC_END,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCT_IN7, RGU_IN8, KC_TRNS, KC_INT2, KC_INT4, MU_MOD
diff --git a/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c b/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c
index b7043ef640d..9520a116fd8 100644
--- a/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c
+++ b/keyboards/keyboardio/model01/keymaps/pugmajere/keymap.c
@@ -179,8 +179,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case MACRO_KVM_TG:
if (record->event.pressed) {
register_code(KC_LSFT);
- tap_code(KC_NUMLOCK);
- tap_code(KC_NUMLOCK);
+ tap_code(KC_NUM);
+ tap_code(KC_NUM);
unregister_code(KC_LSFT);
tap_code(KC_LCTL);
}
diff --git a/keyboards/keychron/q6/ansi/ansi.c b/keyboards/keychron/q6/ansi/ansi.c
index dc27c9a82d0..982996d347d 100644
--- a/keyboards/keychron/q6/ansi/ansi.c
+++ b/keyboards/keychron/q6/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/ansi/config.h b/keyboards/keychron/q6/ansi/config.h
index 148f8d4c45b..703da35636f 100644
--- a/keyboards/keychron/q6/ansi/config.h
+++ b/keyboards/keychron/q6/ansi/config.h
@@ -27,7 +27,7 @@
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
#define CAPS_LOCK_LED_INDEX 61
diff --git a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
index bb1044bd09a..6cf593dd252 100644
--- a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/ansi_encoder/config.h b/keyboards/keychron/q6/ansi_encoder/config.h
index 31d801430fa..1949be399b0 100644
--- a/keyboards/keychron/q6/ansi_encoder/config.h
+++ b/keyboards/keychron/q6/ansi_encoder/config.h
@@ -28,7 +28,7 @@
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODERS_PAD_A { C14 }
diff --git a/keyboards/keychron/q6/iso/config.h b/keyboards/keychron/q6/iso/config.h
index 3c1164be6d1..46c9e1c33a2 100644
--- a/keyboards/keychron/q6/iso/config.h
+++ b/keyboards/keychron/q6/iso/config.h
@@ -27,7 +27,7 @@
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
#define CAPS_LOCK_LED_INDEX 60
diff --git a/keyboards/keychron/q6/iso/iso.c b/keyboards/keychron/q6/iso/iso.c
index 497efc2d11a..d8c4add8672 100644
--- a/keyboards/keychron/q6/iso/iso.c
+++ b/keyboards/keychron/q6/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/iso_encoder/config.h b/keyboards/keychron/q6/iso_encoder/config.h
index 442fd35efd0..63fe3a83c14 100644
--- a/keyboards/keychron/q6/iso_encoder/config.h
+++ b/keyboards/keychron/q6/iso_encoder/config.h
@@ -28,7 +28,7 @@
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODERS_PAD_A { C14 }
diff --git a/keyboards/keychron/q6/iso_encoder/iso_encoder.c b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
index 3ad47b7b0f5..c6a21a6223c 100644
--- a/keyboards/keychron/q6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/q6.c b/keyboards/keychron/q6/q6.c
index 85018004e0a..d2f9d2aa4e5 100644
--- a/keyboards/keychron/q6/q6.c
+++ b/keyboards/keychron/q6/q6.c
@@ -67,7 +67,10 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return true;
}
-__attribute__((weak)) void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) {
+ return false;
+ }
// RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);
# if defined(CAPS_LOCK_LED_INDEX)
if (host_keyboard_led_state().caps_lock) {
@@ -87,6 +90,7 @@ __attribute__((weak)) void rgb_matrix_indicators_advanced_user(uint8_t led_min,
}
}
# endif // NUM_LOCK_LED_INDEX
+ return true;
}
#endif // RGB_MATRIX_ENABLE...
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c
index f9889564514..1949eeb1505 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[_END][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef UNDERGLOW_DISABLE
void keyboard_pre_init_user(void) {
- for (int key_id = 0; key_id < DRIVER_LED_TOTAL; key_id++ ) {
+ for (int key_id = 0; key_id < RGB_MATRIX_LED_COUNT; key_id++ ) {
if (g_led_config.flags[key_id] == LED_FLAG_UNDERGLOW) {
g_led_config.flags[key_id] = LED_FLAG_NONE;
}
diff --git a/keyboards/laser_ninja/pumpkin_pad/config.h b/keyboards/laser_ninja/pumpkin_pad/config.h
index 926d8788c14..7dbd24e3413 100644
--- a/keyboards/laser_ninja/pumpkin_pad/config.h
+++ b/keyboards/laser_ninja/pumpkin_pad/config.h
@@ -20,9 +20,8 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_DI_PIN A10
-# define RGBLED_NUM 28
-# define DRIVER_LED_TOTAL RGBLED_NUM
-# define BACKLIGHT_LIMIT_VAL 200
+# define RGB_MATRIX_LED_COUNT 28
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
diff --git a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
index d4f49b209db..3412a843a22 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_iso_blocker_tsangan_split_bs(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
diff --git a/keyboards/nixkeyboards/day_off/day_off.c b/keyboards/nixkeyboards/day_off/day_off.c
old mode 100755
new mode 100644
diff --git a/keyboards/nixkeyboards/day_off/day_off.h b/keyboards/nixkeyboards/day_off/day_off.h
old mode 100755
new mode 100644
diff --git a/keyboards/nixkeyboards/day_off/info.json b/keyboards/nixkeyboards/day_off/info.json
old mode 100755
new mode 100644
diff --git a/keyboards/nixkeyboards/day_off/keymaps/default/keymap.c b/keyboards/nixkeyboards/day_off/keymaps/default/keymap.c
index 61e879eb4f9..4718f49798e 100644
--- a/keyboards/nixkeyboards/day_off/keymaps/default/keymap.c
+++ b/keyboards/nixkeyboards/day_off/keymaps/default/keymap.c
@@ -17,35 +17,35 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
- KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
+ KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, QK_BOOT
),
[1] = LAYOUT_all(
- RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
- KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
+ KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, QK_BOOT
),
[2] = LAYOUT_all(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
- KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
+ KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, QK_BOOT
),
[3] = LAYOUT_all(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_MPLY, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_MNXT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
- KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, RESET
+ KC_MPRV, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTL, QK_BOOT
),
};
diff --git a/keyboards/nixkeyboards/day_off/readme.md b/keyboards/nixkeyboards/day_off/readme.md
index 5525de91cfe..74d48ca60ec 100644
--- a/keyboards/nixkeyboards/day_off/readme.md
+++ b/keyboards/nixkeyboards/day_off/readme.md
@@ -1,4 +1,4 @@
-# Day Off Vial Support
+# Day Off Support
[More info at nixkeyboards.com](https://nixkeyboards.com/)
@@ -20,4 +20,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/nixkeyboards/day_off/rules.mk b/keyboards/nixkeyboards/day_off/rules.mk
old mode 100755
new mode 100644
diff --git a/keyboards/planck/keymaps/bghull/combos.def b/keyboards/planck/keymaps/bghull/combos.def
new file mode 100644
index 00000000000..a525113a093
--- /dev/null
+++ b/keyboards/planck/keymaps/bghull/combos.def
@@ -0,0 +1,14 @@
+// name result chord keys
+COMB(QW_ESC, KC_ESC, KC_Q, KC_W)
+COMB(CV_DEL, KC_DEL, KC_C, KC_V)
+COMB(XC_BSPC, KC_BSPC, KC_X, KC_C)
+COMB(WE_LBRC, KC_LBRC, KC_W, KC_E)
+COMB(ER_RBRC, KC_RBRC, KC_E, KC_R)
+COMB(SD_LPRN, KC_LPRN, KC_S, KC_D)
+COMB(DF_RPRN, KC_RPRN, KC_D, KC_F)
+COMB(FG_BSLS, KC_BSLS, KC_F, KC_G)
+COMB(HJ_SLSH, KC_SLSH, KC_H, KC_J)
+COMB(DQ_LGUI, KC_LGUI, KC_DOT, KC_QUOT)
+COMB(CD_LALT, KC_LALT, KC_COMM, KC_DOT)
+COMB(MC_LSFT, KC_LSFT, KC_M, KC_COMM)
+COMB(NM_LCTL, KC_LCTL, KC_N, KC_M)
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/bghull/config.h b/keyboards/planck/keymaps/bghull/config.h
new file mode 100644
index 00000000000..96a6aefb0e5
--- /dev/null
+++ b/keyboards/planck/keymaps/bghull/config.h
@@ -0,0 +1,7 @@
+// Copyright 2021 Your Name (@bghull)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#define AUTO_SHIFT_TIMEOUT 135
+#define ONESHOT_TIMEOUT 1000
+#define COMBO_TERM 20
diff --git a/keyboards/planck/keymaps/bghull/keymap.c b/keyboards/planck/keymaps/bghull/keymap.c
index 8abdc884dde..cae278e3e2f 100644
--- a/keyboards/planck/keymaps/bghull/keymap.c
+++ b/keyboards/planck/keymaps/bghull/keymap.c
@@ -16,86 +16,86 @@
#include QMK_KEYBOARD_H
#include "keymap_steno.h"
+#include "g/keymap_combo.h"
+#include "muse.h"
+
+#define COMBO_ONLY_FROM_LAYER QWERTY
enum planck_layers {
- _QWERTY,
- _STENO,
- _NUMPAD,
- _FUNC
+ QWERTY,
+ COLMAK,
+ NAVNUM,
+ FUNC
+
};
+#define BspNAV LT(NAVNUM, KC_BSPC)
+#define SpcFUN LT(FUNC, KC_SPC)
+#define OneSFT OSM(MOD_LSFT)
+#define OneALT OSM(MOD_LALT)
+#define OneCTL OSM(MOD_LCTL)
+#define OneWIN OSM(MOD_LGUI)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Qwerty
+/* QWERTY
* ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * | Q | W | E | R | T | | Y | U | I | O | P |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * |NUMPAD| A | S | D | F | G | H | J | K | L | ; : | Enter|
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , < | . > | up | / ? |
+ * | A | S | D | F | G | | H | J | K | L | ; : |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Z | X | C | V | B | | N | M | , < | . > | ' " |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Es/Ctl|MACROS|STENO | Alt | Bspc | Space | Ctrl | ' " | lt | dn | rt |
+ * | | Ctrl |NAVNUM| |Space |BspNAV| |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_planck_grid(
- LGUI_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
- MO(_NUMPAD), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
- LCTL_T(KC_ESC),MO(_FUNC),DF(_STENO), KC_LALT, KC_BSPC, KC_SPC ,_______ , KC_LCTL, KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT
+[QWERTY] = LAYOUT_planck_grid(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT,
+ _______, _______, _______, KC_LCTL, MO(NAVNUM),_______, _______, KC_SPC, BspNAV, _______, _______, _______
),
-/* Plover layer (http://opensteno.org)
- * ,-----------------------------------------------------------------------------------.
- * | # | # | # | # | # | # | # | # | # | # | # | # |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | FN | S | T | P | H | * | * | F | P | L | T | D |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | S | K | W | R | * | * | R | B | G | S | Z |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | |QWERTY| A | O | | E | U | PWR | RES1 | RES2 |
- * `-----------------------------------------------------------------------------------'
- */
-[_STENO] = LAYOUT_planck_grid(
- STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC ,
- STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
- XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
- XXXXXXX, XXXXXXX, DF(_QWERTY),STN_A,STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2
-),
+[COLMAK] = LAYOUT_planck_grid(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ KC_A, KC_R, KC_S, KC_T, KC_G, _______, _______, KC_M, KC_N, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_D, KC_V, _______, _______, KC_K, KC_H, KC_COMM, KC_DOT, KC_QUOT,
+ _______, _______, _______, KC_LCTL, MO(NAVNUM),_______, _______, KC_SPC, BspNAV, _______, _______, _______
-/*
- * ,-----------------------------------------------------------------------------------.
- * | |RClick| MsU |LClick|WheelU| ( | ) | 7 | 8 | 9 | 0 | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | MsL | MsD | MsR |WheelD| [{ | ]} | 4 | 5 | 6 | + | -_ |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | Mute | VolD | VolU | `~ | _ | = | 1 | 2 | 3 | PgUp | \ | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | |QK_BOOT | | | | | . | Home | PgDn | End |
- * `-----------------------------------------------------------------------------------'
- */
-[_NUMPAD] = LAYOUT_planck_grid(
- _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_0, _______,
- _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_PPLS, KC_MINS,
- _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_GRAVE, KC_UNDS, KC_EQL, KC_1, KC_2, KC_3, KC_PGUP, KC_BSLS,
- _______, XXXXXXX, QK_BOOT, _______, _______, _______, _______, _______, KC_PDOT, KC_HOME, KC_PGDN, KC_END
),
-
-/* Dynamic macros + Winkey combos
+/* NAVNUM
* ,-----------------------------------------------------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |Enter | Home | Up | End | | RST | - | 7 | 8 | 9 | 0 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | W2 | | | | | | | | | | | QK_BOOT|
+ * |OneSFT| Left | Down |Right | ` ~ | CLMK | + | 4 | 5 | 6 |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | W3 | | | | | | | | | | | |
+ * |OneCTL|OneALT| Tab | _ |OneWIN| QWER | = | 1 | 2 | 3 | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | W4 | | | | | | | | | | |
+ * | | | | |SpcFUN| Ctrl | |
* `-----------------------------------------------------------------------------------'
*/
-[_FUNC] = LAYOUT_planck_grid(
- KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12,
- LGUI(KC_2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
- LGUI(KC_3), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- LGUI(KC_4), _______, DM_REC1, DM_PLY1, DM_RSTP, _______, _______, _______, _______, _______, _______, _______
+[NAVNUM] = LAYOUT_planck_grid(
+ KC_ENT, KC_HOME, KC_UP, KC_END, _______, _______, RESET, KC_PMNS, KC_7, KC_8, KC_9, KC_0,
+ OneSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_GRV, _______, DF(COLMAK), KC_PPLS, KC_4, KC_5, KC_6, KC_ENT,
+ OneCTL, OneALT, KC_TAB, KC_UNDS, OneWIN, _______, DF(QWERTY), KC_EQL, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______, _______, _______, _______, SpcFUN, KC_LCTL, _______, _______, _______
+),
+/* FUNC: Mousekeys + F keys
+ * ,-----------------------------------------------------------------------------------.
+ * | |Rclick| MsUp |Lclick| WhUp | | | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | MsLt | MsDn | MsRt | WhDn | |OneALT| F4 | F5 | F6 | F11 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | |Mclick| | | | | F1 | F2 | F3 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[FUNC] = LAYOUT_planck_grid(
+ _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10,
+ _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, OneALT , KC_F4, KC_F5, KC_F6, KC_F11,
+ _______, _______, KC_BTN3, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
+
diff --git a/keyboards/planck/keymaps/bghull/rules.mk b/keyboards/planck/keymaps/bghull/rules.mk
index 9711c485d7a..664ed740781 100644
--- a/keyboards/planck/keymaps/bghull/rules.mk
+++ b/keyboards/planck/keymaps/bghull/rules.mk
@@ -1,5 +1,6 @@
SRC += muse.c
AUTO_SHIFT_ENABLE = yes
MOUSEKEY_ENABLE = yes
-STENO_ENABLE = yes
-AUDIO_ENABLE = no
\ No newline at end of file
+AUDIO_ENABLE = no
+COMBO_ENABLE = yes
+VPATH += keyboards/gboards
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/rennerom/keymap.c b/keyboards/planck/keymaps/rennerom/keymap.c
index 6423d848ab9..67394b8964b 100644
--- a/keyboards/planck/keymaps/rennerom/keymap.c
+++ b/keyboards/planck/keymaps/rennerom/keymap.c
@@ -142,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, RGB_TOG, _______, RGB_HUD, RGB_HUI, _______, DB_TOGG, RESET,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, RGB_TOG, _______, RGB_HUD, RGB_HUI, _______, DB_TOGG, QK_BOOT,
_______, KC_F5, KC_F6, KC_F7, KC_F8, RGB_RMOD, RGB_MOD, RGB_SAD, RGB_SAI, _______, _______, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/rmeli/keymap.c b/keyboards/preonic/keymaps/rmeli/keymap.c
index da6269129e8..b12dffe4b06 100644
--- a/keyboards/preonic/keymaps/rmeli/keymap.c
+++ b/keyboards/preonic/keymaps/rmeli/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_wrapper(
QK_BOOT, _________________NONE_5x___________________, ______________________NONE_6x_______________________,
XXXXXXX, MU_ON, AU_ON, MI_ON, XXXXXXX, XXXXXXX, _______________CONFIG_R1_x5________________, QWERTY,
- RESET, MU_MOD, AU_TOG, MI_TOG, XXXXXXX, XXXXXXX, _______________CONFIG_R2_x5________________, XXXXXXX,
+ QK_BOOT, MU_MOD, AU_TOG, MI_TOG, XXXXXXX, XXXXXXX, _______________CONFIG_R2_x5________________, XXXXXXX,
XXXXXXX, MU_OFF, AU_OFF, MI_OFF, XXXXXXX, XXXXXXX, _______________CONFIG_R3_x5________________, COLEMAK,
______________________BLANK_6x______________________, ______________________BLANK_6x______________________
)
diff --git a/keyboards/rocketboard_16/keycode_lookup.c b/keyboards/rocketboard_16/keycode_lookup.c
index 59de0e64f39..3b9257068f7 100644
--- a/keyboards/rocketboard_16/keycode_lookup.c
+++ b/keyboards/rocketboard_16/keycode_lookup.c
@@ -287,7 +287,7 @@ lookup_table_t lookup_table[333] =
{"KC_LT", KC_LT},
{"KC_GT", KC_GT},
{"KC_QUES", KC_QUES},
- {"RESET", QK_BOOT},
+ {"QK_BOOT", QK_BOOT},
{"DB_TOGG", DB_TOGG},
{"MAGIC_TOGGLE_NKRO", MAGIC_TOGGLE_NKRO},
{"QK_GESC", QK_GESC},
diff --git a/keyboards/synthandkeys/the_debit_card/readme.md b/keyboards/synthandkeys/the_debit_card/readme.md
index 6e1b2e0ac32..e6812bba893 100644
--- a/keyboards/synthandkeys/the_debit_card/readme.md
+++ b/keyboards/synthandkeys/the_debit_card/readme.md
@@ -2,7 +2,7 @@

-The Debit Card is a 10-key programmable mechanical keyboard that could fit in your wallet. The ultra-thin, ultra-portable macropad is powered by the XIAO RP2040 and can support KMK, QMK, or VIAL open-source keyboard firmware.
+The Debit Card is a 10-key programmable mechanical keyboard that could fit in your wallet. The ultra-thin, ultra-portable macropad is powered by the XIAO RP2040 and can support KMK, or QMK open-source keyboard firmware.
* Keyboard Maintainer: [Synth and Keys](https://github.com/Synth-and-Keys)
* Hardware Supported: The Debit Card PCB, Seeed XIAO MCU
diff --git a/keyboards/thevankeyboards/minivan/keymaps/talljoe-minivan/config.h b/keyboards/thevankeyboards/minivan/keymaps/talljoe-minivan/config.h
index 89980614e10..7ecb2353dde 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/talljoe-minivan/config.h
+++ b/keyboards/thevankeyboards/minivan/keymaps/talljoe-minivan/config.h
@@ -59,7 +59,7 @@
)
#define TEMPLATE_RESET LAYOUT_arrow( \
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, \
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET)
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT)
diff --git a/keyboards/tzarc/ghoul/config.h b/keyboards/tzarc/ghoul/config.h
index c3897e7ada3..57068ef6cb6 100644
--- a/keyboards/tzarc/ghoul/config.h
+++ b/keyboards/tzarc/ghoul/config.h
@@ -15,5 +15,4 @@
// RGB configuration
#define RGB_MATRIX_LED_COUNT 40
-#define RGBLED_NUM 40 // TBD: Once convergence with these defines occurs, remove.
-#define DRIVER_LED_TOTAL 40 // TBD: Once convergence with these defines occurs, remove.
+#define RGBLED_NUM 40
diff --git a/keyboards/work_louder/numpad/config.h b/keyboards/work_louder/numpad/config.h
index 7cf84a7d183..762e5e654b8 100644
--- a/keyboards/work_louder/numpad/config.h
+++ b/keyboards/work_louder/numpad/config.h
@@ -21,8 +21,7 @@
// #define RGB_DI_PIN D1
-#define DRIVER_LED_TOTAL 16
-#define RGB_MATRIX_LED_COUNT DRIVER_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 16
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
#define RGB_MATRIX_DISABLE_KEYCODES
#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/yandrstudio/buff67v3/config.h b/keyboards/yandrstudio/buff67v3/config.h
index 81d5654e57f..0e7392f0e68 100644
--- a/keyboards/yandrstudio/buff67v3/config.h
+++ b/keyboards/yandrstudio/buff67v3/config.h
@@ -35,7 +35,6 @@
# define RGB_DI_PIN B4
# define RGBLED_NUM 1
-# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/yandrstudio/eau_r2/config.h b/keyboards/yandrstudio/eau_r2/config.h
index 3fdb79256ec..28cb9106bc9 100644
--- a/keyboards/yandrstudio/eau_r2/config.h
+++ b/keyboards/yandrstudio/eau_r2/config.h
@@ -33,7 +33,6 @@
# define RGB_DI_PIN A8
# define RGBLED_NUM 12
-# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGBLIGHT_SLEEP
# define RGBLIGHT_VAL_STEP 5
# define RGBLIGHT_LIMIT_VAL 200
diff --git a/keyboards/yandrstudio/nightstar75/config.h b/keyboards/yandrstudio/nightstar75/config.h
index 767628fc3f4..6f2942042ae 100644
--- a/keyboards/yandrstudio/nightstar75/config.h
+++ b/keyboards/yandrstudio/nightstar75/config.h
@@ -30,7 +30,6 @@
# define RGB_DI_PIN A7
# define RGBLED_NUM 4
-# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGBLIGHT_LIMIT_VAL 180
# define RGBLIGHT_EFFECT_BREATHING
diff --git a/keyboards/yandrstudio/yr6095/config.h b/keyboards/yandrstudio/yr6095/config.h
index 3905967b9e3..1e51826d942 100644
--- a/keyboards/yandrstudio/yr6095/config.h
+++ b/keyboards/yandrstudio/yr6095/config.h
@@ -31,7 +31,6 @@
# define RGB_DI_PIN B5
# define RGBLED_NUM 1
-# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGBLIGHT_LAYERS
# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/layouts/community/ortho_4x12/trguhq/config.h b/layouts/community/ortho_4x12/trguhq/config.h
new file mode 100644
index 00000000000..476141e2321
--- /dev/null
+++ b/layouts/community/ortho_4x12/trguhq/config.h
@@ -0,0 +1,27 @@
+/* Ortho 4x12 Unicode Rune Layout
+ *
+ * Copyright 2021 trguhq
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WIN, UC_WINC
+
+// #define UNICODE_SONG_MAC AUDIO_ON_SOUND
+// #define UNICODE_SONG_LNX UNICODE_LINUX
+// #define UNICODE_SONG_BSD TERMINAL_SOUND
+// #define UNICODE_SONG_WIN UNICODE_WINDOWS
+// #define UNICODE_SONG_WINC UNICODE_WINDOWS
diff --git a/layouts/community/ortho_4x12/trguhq/keymap.c b/layouts/community/ortho_4x12/trguhq/keymap.c
new file mode 100644
index 00000000000..fecf0157b86
--- /dev/null
+++ b/layouts/community/ortho_4x12/trguhq/keymap.c
@@ -0,0 +1,29 @@
+/* Ortho 4x12 Unicode Rune Layout
+ *
+ * Copyright 2021 trguhq
+ *
+ * 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x12(KC_ESC, KC_GRV, UC(0x16A0), UC(0x16A2), UC(0x16A6), UC(0x16A8), UC(0x16B1), UC(0x16B2), UC(0x16B7), UC(0x16B9), KC_QUOT, KC_BSPC, KC_TAB, KC_SCLN, UC(0x16BA), UC(0x16BE), UC(0x16C1), UC(0x16C3), UC(0x16C7), UC(0x16C8), UC(0x16C9), UC(0x16CA), KC_COMM, KC_DOT, KC_LSFT, KC_BSLS, UC(0x16CF), UC(0x16D2), UC(0x16D6), UC(0x16D7), UC(0x16DA), UC(0x16DC), UC(0x16DF), UC(0x16DE), KC_UP, KC_ENT, BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(4), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT_ortho_4x12(KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(4), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
+ [2] = LAYOUT_ortho_4x12(KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(4), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
+ [3] = LAYOUT_ortho_4x12(KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LSFT(KC_NUHS), LSFT(KC_NUBS), KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(6), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
+ [4] = LAYOUT_ortho_4x12(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
+ [5] = LAYOUT_ortho_4x12(KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, TO(0), KC_NO, KC_NO, KC_C, KC_V, KC_NO, KC_NO, KC_N, KC_M, KC_NO, KC_NO, KC_NO),
+ [6] = LAYOUT_ortho_4x12(UNICODE_MODE_MAC, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL, UNICODE_MODE_LNX, KC_TRNS, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, DF(0), DF(1), DF(2), TO(5), KC_TRNS, UNICODE_MODE_WIN, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, /* TERM_ON */ KC_TRNS, /* TERM_OFF */ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UNICODE_MODE_WINC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/layouts/community/ortho_4x12/trguhq/readme.md b/layouts/community/ortho_4x12/trguhq/readme.md
new file mode 100644
index 00000000000..e0f5025a09b
--- /dev/null
+++ b/layouts/community/ortho_4x12/trguhq/readme.md
@@ -0,0 +1,36 @@
+# Planck Ortho 4x12 Unicode Futhark Rune layout
+
+
+
+* Layout Maintainer: [trguhq](https://github.com/trguhq)
+
+Types unicode runes on ortholinear QMK keyboard. Legacy Latin letter
+layers left for user but have been marked red as irrelevant.
+
+## OS specific
+
+With both modifiers (either side of spacebar) selected, layer 6
+lets you select which OS mode to use with the first vertical column
+of keys:
+
+1. macOS
+2. Linux
+3. Windows Unicode
+4. Windows WinCompose
+
+See [QMK docs](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_unicode.md) for details.
+
+### macOS
+
+On macOS this will have to be enabled in keyboard settings as a
+Unicode Hex Input Keyboard Source and selected under the
+keyboard layouts icon on the menu bar.
+
+### Linux
+
+Uses IBus or GTK.
+
+### Windows
+
+Either create the needed EnableHexNumpad registry key for Windows Unicode
+entry, or (recommended) install WinCompose.
diff --git a/layouts/community/ortho_4x12/trguhq/rules.mk b/layouts/community/ortho_4x12/trguhq/rules.mk
new file mode 100644
index 00000000000..039f07c8e35
--- /dev/null
+++ b/layouts/community/ortho_4x12/trguhq/rules.mk
@@ -0,0 +1 @@
+UNICODE_ENABLE = yes
diff --git a/layouts/community/ortho_4x12/trguhq/trguhq.json b/layouts/community/ortho_4x12/trguhq/trguhq.json
new file mode 100644
index 00000000000..cade25899a5
--- /dev/null
+++ b/layouts/community/ortho_4x12/trguhq/trguhq.json
@@ -0,0 +1,361 @@
+{
+ "version": 1,
+ "notes": "",
+ "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
+ "keyboard": "planck/rev6_drop",
+ "keymap": "trguhq",
+ "layout": "LAYOUT_ortho_4x12",
+ "layers": [
+ [
+ "KC_ESC",
+ "KC_GRV",
+ "ANY(UC(0x16A0))",
+ "ANY(UC(0x16A2))",
+ "ANY(UC(0x16A6))",
+ "ANY(UC(0x16A8))",
+ "ANY(UC(0x16B1))",
+ "ANY(UC(0x16B2))",
+ "ANY(UC(0x16B7))",
+ "ANY(UC(0x16B9))",
+ "KC_QUOT",
+ "KC_BSPC",
+ "KC_TAB",
+ "KC_SCLN",
+ "ANY(UC(0x16BA))",
+ "ANY(UC(0x16BE))",
+ "ANY(UC(0x16C1))",
+ "ANY(UC(0x16C3))",
+ "ANY(UC(0x16C7))",
+ "ANY(UC(0x16C8))",
+ "ANY(UC(0x16C9))",
+ "ANY(UC(0x16CA))",
+ "KC_COMM",
+ "KC_DOT",
+ "KC_LSFT",
+ "KC_BSLS",
+ "ANY(UC(0x16CF))",
+ "ANY(UC(0x16D2))",
+ "ANY(UC(0x16D6))",
+ "ANY(UC(0x16D7))",
+ "ANY(UC(0x16DA))",
+ "ANY(UC(0x16DC))",
+ "ANY(UC(0x16DF))",
+ "ANY(UC(0x16DE))",
+ "KC_UP",
+ "KC_ENT",
+ "BL_STEP",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_LGUI",
+ "MO(3)",
+ "KC_SPC",
+ "KC_SPC",
+ "MO(4)",
+ "KC_SLSH",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_RGHT"
+ ],
+ [
+ "KC_TAB",
+ "KC_Q",
+ "KC_W",
+ "KC_F",
+ "KC_P",
+ "KC_G",
+ "KC_J",
+ "KC_L",
+ "KC_U",
+ "KC_Y",
+ "KC_SCLN",
+ "KC_BSPC",
+ "KC_ESC",
+ "KC_A",
+ "KC_R",
+ "KC_S",
+ "KC_T",
+ "KC_D",
+ "KC_H",
+ "KC_N",
+ "KC_E",
+ "KC_I",
+ "KC_O",
+ "KC_QUOT",
+ "KC_LSFT",
+ "KC_Z",
+ "KC_X",
+ "KC_C",
+ "KC_V",
+ "KC_B",
+ "KC_K",
+ "KC_M",
+ "KC_COMM",
+ "KC_DOT",
+ "KC_SLSH",
+ "KC_ENT",
+ "BL_STEP",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_LGUI",
+ "MO(3)",
+ "KC_SPC",
+ "KC_SPC",
+ "MO(4)",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_UP",
+ "KC_RGHT"
+ ],
+ [
+ "KC_TAB",
+ "KC_QUOT",
+ "KC_COMM",
+ "KC_DOT",
+ "KC_P",
+ "KC_Y",
+ "KC_F",
+ "KC_G",
+ "KC_C",
+ "KC_R",
+ "KC_L",
+ "KC_BSPC",
+ "KC_ESC",
+ "KC_A",
+ "KC_O",
+ "KC_E",
+ "KC_U",
+ "KC_I",
+ "KC_D",
+ "KC_H",
+ "KC_T",
+ "KC_N",
+ "KC_S",
+ "KC_SLSH",
+ "KC_LSFT",
+ "KC_SCLN",
+ "KC_Q",
+ "KC_J",
+ "KC_K",
+ "KC_X",
+ "KC_B",
+ "KC_M",
+ "KC_W",
+ "KC_V",
+ "KC_Z",
+ "KC_ENT",
+ "BL_STEP",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_LGUI",
+ "MO(3)",
+ "KC_SPC",
+ "KC_SPC",
+ "MO(4)",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_UP",
+ "KC_RGHT"
+ ],
+ [
+ "KC_TILD",
+ "KC_EXLM",
+ "KC_AT",
+ "KC_HASH",
+ "KC_DLR",
+ "KC_PERC",
+ "KC_CIRC",
+ "KC_AMPR",
+ "KC_ASTR",
+ "KC_LPRN",
+ "KC_RPRN",
+ "KC_BSPC",
+ "KC_DEL",
+ "KC_F1",
+ "KC_F2",
+ "KC_F3",
+ "KC_F4",
+ "KC_F5",
+ "KC_F6",
+ "KC_UNDS",
+ "KC_PLUS",
+ "KC_LCBR",
+ "KC_RCBR",
+ "KC_PIPE",
+ "KC_TRNS",
+ "KC_F7",
+ "KC_F8",
+ "KC_F9",
+ "KC_F10",
+ "KC_F11",
+ "KC_F12",
+ "LSFT(KC_NUHS)",
+ "LSFT(KC_NUBS)",
+ "KC_HOME",
+ "KC_END",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "MO(6)",
+ "KC_MNXT",
+ "KC_VOLD",
+ "KC_VOLU",
+ "KC_MPLY"
+ ],
+ [
+ "KC_GRV",
+ "KC_1",
+ "KC_2",
+ "KC_3",
+ "KC_4",
+ "KC_5",
+ "KC_6",
+ "KC_7",
+ "KC_8",
+ "KC_9",
+ "KC_0",
+ "KC_BSPC",
+ "KC_DEL",
+ "KC_F1",
+ "KC_F2",
+ "KC_F3",
+ "KC_F4",
+ "KC_F5",
+ "KC_F6",
+ "KC_MINS",
+ "KC_EQL",
+ "KC_LBRC",
+ "KC_RBRC",
+ "KC_BSLS",
+ "KC_TRNS",
+ "KC_F7",
+ "KC_F8",
+ "KC_F9",
+ "KC_F10",
+ "KC_F11",
+ "KC_F12",
+ "KC_NUHS",
+ "KC_NUBS",
+ "KC_PGUP",
+ "KC_PGDN",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "MO(6)",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_MNXT",
+ "KC_VOLD",
+ "KC_VOLU",
+ "KC_MPLY"
+ ],
+ [
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_1",
+ "KC_NO",
+ "KC_Q",
+ "KC_W",
+ "KC_E",
+ "KC_R",
+ "KC_T",
+ "KC_Y",
+ "KC_U",
+ "KC_I",
+ "KC_O",
+ "KC_P",
+ "KC_LBRC",
+ "KC_NO",
+ "KC_A",
+ "KC_S",
+ "KC_D",
+ "KC_F",
+ "KC_G",
+ "KC_H",
+ "KC_J",
+ "KC_K",
+ "KC_L",
+ "KC_SCLN",
+ "KC_QUOT",
+ "TO(0)",
+ "KC_NO",
+ "KC_NO",
+ "KC_C",
+ "KC_V",
+ "KC_NO",
+ "KC_NO",
+ "KC_N",
+ "KC_M",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO"
+ ],
+ [
+ "ANY(UNICODE_MODE_MAC)",
+ "QK_BOOT",
+ "DEBUG",
+ "RGB_TOG",
+ "RGB_MOD",
+ "RGB_HUI",
+ "RGB_HUD",
+ "RGB_SAI",
+ "RGB_SAD",
+ "RGB_VAI",
+ "RGB_VAD",
+ "KC_DEL",
+ "ANY(UNICODE_MODE_LNX)",
+ "KC_TRNS",
+ "ANY(MU_MOD)",
+ "ANY(AU_ON)",
+ "ANY(AU_OFF)",
+ "AG_NORM",
+ "AG_SWAP",
+ "DF(0)",
+ "DF(1)",
+ "DF(2)",
+ "TO(5)",
+ "KC_TRNS",
+ "ANY(UNICODE_MODE_WIN)",
+ "ANY(MUV_DE)",
+ "ANY(MUV_IN)",
+ "ANY(MU_ON)",
+ "ANY(MU_OFF)",
+ "ANY(MI_ON)",
+ "ANY(MI_OFF)",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "ANY(UNICODE_MODE_WINC)",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS"
+ ]
+ ],
+ "author": ""
+}
diff --git a/platforms/chibios/boards/BONSAI_C4/board/board.mk b/platforms/chibios/boards/BONSAI_C4/board/board.mk
new file mode 100644
index 00000000000..bb00b1a2b0d
--- /dev/null
+++ b/platforms/chibios/boards/BONSAI_C4/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F411RE/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F411RE
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/BONSAI_C4/configs/board.h b/platforms/chibios/boards/BONSAI_C4/configs/board.h
new file mode 100644
index 00000000000..f1ee51c91f5
--- /dev/null
+++ b/platforms/chibios/boards/BONSAI_C4/configs/board.h
@@ -0,0 +1,20 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ * 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 3 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 .
+ */
+#pragma once
+
+#include_next "board.h"
+
+#undef STM32_HSE_BYPASS
\ No newline at end of file
diff --git a/platforms/chibios/boards/BONSAI_C4/configs/config.h b/platforms/chibios/boards/BONSAI_C4/configs/config.h
new file mode 100644
index 00000000000..e412f73d3d7
--- /dev/null
+++ b/platforms/chibios/boards/BONSAI_C4/configs/config.h
@@ -0,0 +1,92 @@
+/* Copyright 2022 David Hoelscher, customMK
+ *
+ * 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 3 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 .
+ */
+#pragma once
+
+// Bonsai C4 includes Vbus sensing; derived designs that use PA9 for other purposes
+// may disable Vbus sensing with #define BOARD_OTG_NOVBUSSENS 1
+
+#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
+# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+#endif
+
+// FRAM configuration
+#ifndef EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN
+# define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN PAL_LINE(GPIOA, 0)
+# define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // 96MHz / 8 = 12MHz; max supported by MB85R64 is 20MHz
+# define EXTERNAL_EEPROM_BYTE_COUNT 8192
+# define EXTERNAL_EEPROM_PAGE_SIZE 64 // does not matter for FRAM, just sets the RAM buffer size in STM32F chip
+# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191
+#endif
+
+// External flash configuration
+#ifndef EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN
+# define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN PAL_LINE(GPIOB, 12)
+# define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 2 // 48MHz; max supported by W25Q128JV is 133MHz
+# define EXTERNAL_FLASH_BYTE_COUNT (16 * 1024 * 1024) //128Mbit or 16MByte
+# define EXTERNAL_FLASH_PAGE_SIZE 256
+# define EXTERNAL_FLASH_SPI_TIMEOUT 200000 //datasheet max is 200 seconds for flash chip erase
+#endif
+
+// SPI Configuration (needed for FRAM and FLASH)
+#ifndef SPI_DRIVER
+# define SPI_DRIVER SPID1
+#endif
+#ifndef SPI_SCK_PIN
+# define SPI_SCK_PIN PAL_LINE(GPIOB, 3)
+#endif
+#ifndef SPI_MOSI_PIN
+# define SPI_MOSI_PIN PAL_LINE(GPIOB, 5)
+#endif
+#ifndef SPI_MISO_PIN
+# define SPI_MISO_PIN PAL_LINE(GPIOB, 4)
+#endif
+
+
+// I2C Configuration
+#ifdef CONVERT_TO_BONSAI_C4
+# ifndef I2C1_SCL_PIN
+# define I2C1_SCL_PIN PAL_LINE(GPIOB, 6)
+# endif
+# ifndef I2C1_SDA_PIN
+# define I2C1_SDA_PIN PAL_LINE(GPIOB, 9)
+# endif
+#endif
+
+// WS2812-style LED control on pin A10
+#ifdef WS2812_DRIVER_PWM
+# ifndef RGB_DI_PIN
+# define RGB_DI_PIN PAL_LINE(GPIOA, 10)
+# endif
+# ifndef WS2812_PWM_DRIVER
+# define WS2812_PWM_DRIVER PWMD1
+# endif
+# ifndef WS2812_PWM_CHANNEL
+# define WS2812_PWM_CHANNEL 3
+# endif
+# ifndef WS2812_PWM_PAL_MODE
+# define WS2812_PWM_PAL_MODE 1
+# endif
+# ifndef WS2812_DMA_STREAM
+# define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+# endif
+# ifndef WS2812_DMA_CHANNEL
+# define WS2812_DMA_CHANNEL 6
+# endif
+#endif
+
+#ifndef USB_VBUS_PIN
+# define USB_VBUS_PIN PAL_LINE(GPIOA, 9)
+#endif
\ No newline at end of file
diff --git a/platforms/chibios/boards/BONSAI_C4/configs/halconf.h b/platforms/chibios/boards/BONSAI_C4/configs/halconf.h
new file mode 100644
index 00000000000..7887e7c9ba5
--- /dev/null
+++ b/platforms/chibios/boards/BONSAI_C4/configs/halconf.h
@@ -0,0 +1,49 @@
+/* Copyright 2022 David Hoelscher, customMK
+ *
+ * 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 3 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 .
+ */
+#pragma once
+
+#ifndef HAL_USE_SPI
+# define HAL_USE_SPI TRUE
+#endif
+
+#ifndef HAL_USE_I2C
+# define HAL_USE_I2C TRUE
+#endif
+
+#ifdef SPLIT_KEYBOARD
+# ifndef HAL_USE_SERIAL
+# define HAL_USE_SERIAL TRUE
+# endif
+# ifndef SERIAL_BUFFERS_SIZE
+# define SERIAL_BUFFERS_SIZE 256
+# endif
+#endif
+
+#ifdef WS2812_DRIVER_PWM
+# ifndef HAL_USE_PWM
+# define HAL_USE_PWM TRUE
+# endif
+#endif
+
+#ifndef SPI_SELECT_MODE
+# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#endif
+
+#ifndef SPI_USE_WAIT
+# define SPI_USE_WAIT TRUE
+#endif
+
+#include_next
\ No newline at end of file
diff --git a/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h b/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h
new file mode 100644
index 00000000000..2f9e627c7e5
--- /dev/null
+++ b/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h
@@ -0,0 +1,249 @@
+/*
+ ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * STM32F4xx drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 15...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+#define STM32F4xx_MCUCONF
+#define STM32F411_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define STM32_NO_INIT FALSE
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
+#define STM32_BKPRAM_ENABLE FALSE
+#define STM32_HSI_ENABLED TRUE
+#define STM32_LSI_ENABLED TRUE
+#define STM32_HSE_ENABLED TRUE
+#define STM32_LSE_ENABLED FALSE
+#define STM32_CLOCK48_REQUIRED TRUE
+#define STM32_SW STM32_SW_PLL
+#define STM32_PLLSRC STM32_PLLSRC_HSE
+#define STM32_PLLM_VALUE 4
+#define STM32_PLLN_VALUE 96
+#define STM32_PLLP_VALUE 2
+#define STM32_PLLQ_VALUE 4
+#define STM32_HPRE STM32_HPRE_DIV1
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+#define STM32_RTCSEL STM32_RTCSEL_LSI
+#define STM32_RTCPRE_VALUE 8
+#define STM32_MCO1SEL STM32_MCO1SEL_HSI
+#define STM32_MCO1PRE STM32_MCO1PRE_DIV1
+#define STM32_MCO2SEL STM32_MCO2SEL_SYSCLK
+#define STM32_MCO2PRE STM32_MCO2PRE_DIV5
+#define STM32_I2SSRC STM32_I2SSRC_CKIN
+#define STM32_PLLI2SN_VALUE 192
+#define STM32_PLLI2SR_VALUE 5
+
+/*
+ * IRQ system settings.
+ */
+#define STM32_IRQ_EXTI0_PRIORITY 6
+#define STM32_IRQ_EXTI1_PRIORITY 6
+#define STM32_IRQ_EXTI2_PRIORITY 6
+#define STM32_IRQ_EXTI3_PRIORITY 6
+#define STM32_IRQ_EXTI4_PRIORITY 6
+#define STM32_IRQ_EXTI5_9_PRIORITY 6
+#define STM32_IRQ_EXTI10_15_PRIORITY 6
+#define STM32_IRQ_EXTI16_PRIORITY 6
+#define STM32_IRQ_EXTI17_PRIORITY 15
+#define STM32_IRQ_EXTI18_PRIORITY 6
+#define STM32_IRQ_EXTI19_PRIORITY 6
+#define STM32_IRQ_EXTI20_PRIORITY 6
+#define STM32_IRQ_EXTI21_PRIORITY 15
+#define STM32_IRQ_EXTI22_PRIORITY 15
+
+#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7
+#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7
+#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7
+#define STM32_IRQ_TIM1_CC_PRIORITY 7
+#define STM32_IRQ_TIM2_PRIORITY 7
+#define STM32_IRQ_TIM3_PRIORITY 7
+#define STM32_IRQ_TIM4_PRIORITY 7
+#define STM32_IRQ_TIM5_PRIORITY 7
+
+#define STM32_IRQ_USART1_PRIORITY 12
+#define STM32_IRQ_USART2_PRIORITY 12
+#define STM32_IRQ_USART6_PRIORITY 12
+
+/*
+ * ADC driver system settings.
+ */
+#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4
+#define STM32_ADC_USE_ADC1 FALSE
+#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4)
+#define STM32_ADC_ADC1_DMA_PRIORITY 2
+#define STM32_ADC_IRQ_PRIORITY 6
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 6
+
+/*
+ * GPT driver system settings.
+ */
+#define STM32_GPT_USE_TIM1 FALSE
+#define STM32_GPT_USE_TIM2 FALSE
+#define STM32_GPT_USE_TIM3 FALSE
+#define STM32_GPT_USE_TIM4 FALSE
+#define STM32_GPT_USE_TIM5 FALSE
+#define STM32_GPT_USE_TIM9 FALSE
+#define STM32_GPT_USE_TIM10 FALSE
+#define STM32_GPT_USE_TIM11 FALSE
+
+/*
+ * I2C driver system settings.
+ */
+#define STM32_I2C_USE_I2C1 TRUE
+#define STM32_I2C_USE_I2C2 FALSE
+#define STM32_I2C_USE_I2C3 FALSE
+#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2C_I2C1_IRQ_PRIORITY 5
+#define STM32_I2C_I2C2_IRQ_PRIORITY 5
+#define STM32_I2C_I2C3_IRQ_PRIORITY 5
+#define STM32_I2C_I2C1_DMA_PRIORITY 3
+#define STM32_I2C_I2C2_DMA_PRIORITY 3
+#define STM32_I2C_I2C3_DMA_PRIORITY 3
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * I2S driver system settings.
+ */
+#define STM32_I2S_USE_SPI2 FALSE
+#define STM32_I2S_USE_SPI3 FALSE
+#define STM32_I2S_SPI2_IRQ_PRIORITY 10
+#define STM32_I2S_SPI3_IRQ_PRIORITY 10
+#define STM32_I2S_SPI2_DMA_PRIORITY 1
+#define STM32_I2S_SPI3_DMA_PRIORITY 1
+#define STM32_I2S_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_I2S_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2S_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2S_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define STM32_ICU_USE_TIM1 FALSE
+#define STM32_ICU_USE_TIM2 FALSE
+#define STM32_ICU_USE_TIM3 FALSE
+#define STM32_ICU_USE_TIM4 FALSE
+#define STM32_ICU_USE_TIM5 FALSE
+#define STM32_ICU_USE_TIM9 FALSE
+#define STM32_ICU_USE_TIM10 FALSE
+#define STM32_ICU_USE_TIM11 FALSE
+
+/*
+ * PWM driver system settings.
+ */
+#define STM32_PWM_USE_TIM1 TRUE
+#define STM32_PWM_USE_TIM2 FALSE
+#define STM32_PWM_USE_TIM3 TRUE
+#define STM32_PWM_USE_TIM4 FALSE
+#define STM32_PWM_USE_TIM5 FALSE
+#define STM32_PWM_USE_TIM9 FALSE
+#define STM32_PWM_USE_TIM10 FALSE
+#define STM32_PWM_USE_TIM11 FALSE
+
+/*
+ * RTC driver system settings.
+ */
+#define STM32_RTC_PRESA_VALUE 32
+#define STM32_RTC_PRESS_VALUE 1024
+#define STM32_RTC_CR_INIT 0
+#define STM32_RTC_TAMPCR_INIT 0
+
+/*
+ * SERIAL driver system settings.
+ */
+#define STM32_SERIAL_USE_USART1 TRUE
+#define STM32_SERIAL_USE_USART2 FALSE
+#define STM32_SERIAL_USE_USART6 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define STM32_SPI_USE_SPI1 TRUE
+#define STM32_SPI_USE_SPI2 FALSE
+#define STM32_SPI_USE_SPI3 FALSE
+#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
+#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
+#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_SPI_SPI1_DMA_PRIORITY 1
+#define STM32_SPI_SPI2_DMA_PRIORITY 1
+#define STM32_SPI_SPI3_DMA_PRIORITY 1
+#define STM32_SPI_SPI1_IRQ_PRIORITY 10
+#define STM32_SPI_SPI2_IRQ_PRIORITY 10
+#define STM32_SPI_SPI3_IRQ_PRIORITY 10
+#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define STM32_ST_IRQ_PRIORITY 8
+#define STM32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define STM32_UART_USE_USART1 FALSE
+#define STM32_UART_USE_USART2 FALSE
+#define STM32_UART_USE_USART6 FALSE
+#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
+#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_UART_USART6_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
+#define STM32_UART_USART6_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART1_DMA_PRIORITY 0
+#define STM32_UART_USART2_DMA_PRIORITY 0
+#define STM32_UART_USART6_DMA_PRIORITY 0
+#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define STM32_USB_USE_OTG1 TRUE
+#define STM32_USB_OTG1_IRQ_PRIORITY 14
+#define STM32_USB_OTG1_RX_FIFO_SIZE 512
+#define STM32_USB_HOST_WAKEUP_DURATION 2
+
+/*
+ * WDG driver system settings.
+ */
+#define STM32_WDG_USE_IWDG FALSE
+
+#endif /* MCUCONF_H */
\ No newline at end of file
diff --git a/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk b/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk
index 7410209b670..005b7a81601 100644
--- a/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk
+++ b/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk
@@ -1,4 +1,4 @@
# Proton C MCU settings for converting AVR projects
MCU := STM32F411
-BOARD := GENERIC_STM32_F411XE
-BOOTLOADER := stm32-dfu
\ No newline at end of file
+BOARD := BONSAI_C4
+BOOTLOADER := stm32-dfu
diff --git a/platforms/chibios/converters/promicro_to_bonsai_c4/post_converter.mk b/platforms/chibios/converters/promicro_to_bonsai_c4/post_converter.mk
new file mode 100644
index 00000000000..5f49b17f8a6
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_bonsai_c4/post_converter.mk
@@ -0,0 +1,5 @@
+BACKLIGHT_DRIVER ?= pwm
+WS2812_DRIVER ?= pwm
+SERIAL_DRIVER ?= usart
+FLASH_DRIVER ?= spi
+EEPROM_DRIVER ?= spi
\ No newline at end of file
diff --git a/quantum/action_tapping.h b/quantum/action_tapping.h
index 9b64c931200..bcccc7ac45a 100644
--- a/quantum/action_tapping.h
+++ b/quantum/action_tapping.h
@@ -40,6 +40,7 @@ bool get_permissive_hold(uint16_t keycode, keyrecord_t *record);
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record);
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record);
bool get_retro_tapping(uint16_t keycode, keyrecord_t *record);
+bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record);
#ifdef DYNAMIC_TAPPING_TERM_ENABLE
extern uint16_t g_tapping_term;
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c
index 3b4d690e42c..21bcce26545 100644
--- a/quantum/eeconfig.c
+++ b/quantum/eeconfig.c
@@ -71,15 +71,11 @@ void eeconfig_init_quantum(void) {
#endif
#if (EECONFIG_KB_DATA_SIZE) > 0
- eeprom_update_dword(EECONFIG_KEYBOARD, (EECONFIG_KB_DATA_VERSION));
- uint8_t dummy_kb[(EECONFIG_KB_DATA_SIZE)] = {0};
- eeprom_update_block(EECONFIG_KB_DATABLOCK, dummy_kb, (EECONFIG_KB_DATA_SIZE));
+ eeconfig_init_kb_datablock();
#endif
#if (EECONFIG_USER_DATA_SIZE) > 0
- eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION));
- uint8_t dummy_user[(EECONFIG_USER_DATA_SIZE)] = {0};
- eeprom_update_block(EECONFIG_USER_DATABLOCK, dummy_user, (EECONFIG_USER_DATA_SIZE));
+ eeconfig_init_user_datablock();
#endif
#if defined(VIA_ENABLE)
@@ -273,12 +269,19 @@ void eeconfig_update_handedness(bool val) {
}
#if (EECONFIG_KB_DATA_SIZE) > 0
+/** \brief eeconfig assert keyboard data block version
+ *
+ * FIXME: needs doc
+ */
+bool eeconfig_is_kb_datablock_valid(void) {
+ return eeprom_read_dword(EECONFIG_KEYBOARD) == (EECONFIG_KB_DATA_VERSION);
+}
/** \brief eeconfig read keyboard data block
*
* FIXME: needs doc
*/
void eeconfig_read_kb_datablock(void *data) {
- if (eeprom_read_dword(EECONFIG_KEYBOARD) == (EECONFIG_KB_DATA_VERSION)) {
+ if (eeconfig_is_kb_datablock_valid()) {
eeprom_read_block(data, EECONFIG_KB_DATABLOCK, (EECONFIG_KB_DATA_SIZE));
} else {
memset(data, 0, (EECONFIG_KB_DATA_SIZE));
@@ -292,15 +295,30 @@ void eeconfig_update_kb_datablock(const void *data) {
eeprom_update_dword(EECONFIG_KEYBOARD, (EECONFIG_KB_DATA_VERSION));
eeprom_update_block(data, EECONFIG_KB_DATABLOCK, (EECONFIG_KB_DATA_SIZE));
}
+/** \brief eeconfig init keyboard data block
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void eeconfig_init_kb_datablock(void) {
+ uint8_t dummy_kb[(EECONFIG_KB_DATA_SIZE)] = {0};
+ eeconfig_update_kb_datablock(dummy_kb);
+}
#endif // (EECONFIG_KB_DATA_SIZE) > 0
#if (EECONFIG_USER_DATA_SIZE) > 0
+/** \brief eeconfig assert user data block version
+ *
+ * FIXME: needs doc
+ */
+bool eeconfig_is_user_datablock_valid(void) {
+ return eeprom_read_dword(EECONFIG_USER) == (EECONFIG_USER_DATA_VERSION);
+}
/** \brief eeconfig read user data block
*
* FIXME: needs doc
*/
void eeconfig_read_user_datablock(void *data) {
- if (eeprom_read_dword(EECONFIG_USER) == (EECONFIG_USER_DATA_VERSION)) {
+ if (eeconfig_is_user_datablock_valid()) {
eeprom_read_block(data, EECONFIG_USER_DATABLOCK, (EECONFIG_USER_DATA_SIZE));
} else {
memset(data, 0, (EECONFIG_USER_DATA_SIZE));
@@ -314,4 +332,12 @@ void eeconfig_update_user_datablock(const void *data) {
eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION));
eeprom_update_block(data, EECONFIG_USER_DATABLOCK, (EECONFIG_USER_DATA_SIZE));
}
+/** \brief eeconfig init user data block
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void eeconfig_init_user_datablock(void) {
+ uint8_t dummy_user[(EECONFIG_USER_DATA_SIZE)] = {0};
+ eeconfig_update_user_datablock(dummy_user);
+}
#endif // (EECONFIG_USER_DATA_SIZE) > 0
diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h
index 9fc563d09c2..ee8e9add8b1 100644
--- a/quantum/eeconfig.h
+++ b/quantum/eeconfig.h
@@ -134,13 +134,17 @@ bool eeconfig_read_handedness(void);
void eeconfig_update_handedness(bool val);
#if (EECONFIG_KB_DATA_SIZE) > 0
+bool eeconfig_is_kb_datablock_valid(void);
void eeconfig_read_kb_datablock(void *data);
void eeconfig_update_kb_datablock(const void *data);
+void eeconfig_init_kb_datablock(void);
#endif // (EECONFIG_KB_DATA_SIZE) > 0
#if (EECONFIG_USER_DATA_SIZE) > 0
+bool eeconfig_is_user_datablock_valid(void);
void eeconfig_read_user_datablock(void *data);
void eeconfig_update_user_datablock(const void *data);
+void eeconfig_init_user_datablock(void);
#endif // (EECONFIG_USER_DATA_SIZE) > 0
// Any "checked" debounce variant used requires implementation of:
diff --git a/quantum/encoder.c b/quantum/encoder.c
index 1393e34868c..3aee3402499 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -80,6 +80,10 @@ __attribute__((weak)) bool encoder_update_kb(uint8_t index, bool clockwise) {
return encoder_update_user(index, clockwise);
}
+__attribute__((weak)) bool should_process_encoder(void) {
+ return is_keyboard_master();
+}
+
void encoder_init(void) {
#ifdef SPLIT_KEYBOARD
thisHand = isLeftHand ? 0 : NUM_ENCODERS_LEFT;
@@ -179,8 +183,11 @@ static bool encoder_update(uint8_t index, uint8_t state) {
encoder_value[index]++;
changed = true;
+#ifdef SPLIT_KEYBOARD
+ if (should_process_encoder())
+#endif // SPLIT_KEYBOARD
#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, ENCODER_COUNTER_CLOCKWISE);
+ encoder_exec_mapping(index, ENCODER_COUNTER_CLOCKWISE);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, ENCODER_COUNTER_CLOCKWISE);
#endif // ENCODER_MAP_ENABLE
@@ -193,8 +200,11 @@ static bool encoder_update(uint8_t index, uint8_t state) {
#endif
encoder_value[index]--;
changed = true;
+#ifdef SPLIT_KEYBOARD
+ if (should_process_encoder())
+#endif // SPLIT_KEYBOARD
#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, ENCODER_CLOCKWISE);
+ encoder_exec_mapping(index, ENCODER_CLOCKWISE);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, ENCODER_CLOCKWISE);
#endif // ENCODER_MAP_ENABLE
diff --git a/quantum/encoder/tests/config_mock_split_role.h b/quantum/encoder/tests/config_mock_split_role.h
new file mode 100644
index 00000000000..c80ac4d5198
--- /dev/null
+++ b/quantum/encoder/tests/config_mock_split_role.h
@@ -0,0 +1,26 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 1
+
+/* Here, "pins" from 0 to 31 are allowed. */
+#define ENCODERS_PAD_A \
+ { 0, 2 }
+#define ENCODERS_PAD_B \
+ { 1, 3 }
+#define ENCODERS_PAD_A_RIGHT \
+ { 4, 6 }
+#define ENCODERS_PAD_B_RIGHT \
+ { 5, 7 }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "mock_split.h"
+
+#ifdef __cplusplus
+};
+#endif
diff --git a/quantum/encoder/tests/encoder_tests_split_role.cpp b/quantum/encoder/tests/encoder_tests_split_role.cpp
new file mode 100644
index 00000000000..02264067f4c
--- /dev/null
+++ b/quantum/encoder/tests/encoder_tests_split_role.cpp
@@ -0,0 +1,122 @@
+/* Copyright 2021 Balz Guenat
+ *
+ * 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 .
+ */
+
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include
+#include
+#include
+
+extern "C" {
+#include "encoder.h"
+#include "encoder/tests/mock_split.h"
+}
+
+struct update {
+ int8_t index;
+ bool clockwise;
+};
+
+uint8_t num_updates = 0;
+
+bool isMaster;
+bool isLeftHand;
+
+bool is_keyboard_master(void) {
+ return isMaster;
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!isMaster) {
+ ADD_FAILURE() << "We shouldn't get here.";
+ }
+ num_updates++;
+ return true;
+}
+
+bool setAndRead(pin_t pin, bool val) {
+ setPin(pin, val);
+ return encoder_read();
+}
+
+class EncoderSplitTestRole : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ num_updates = 0;
+ for (int i = 0; i < 32; i++) {
+ pinIsInputHigh[i] = 0;
+ pins[i] = 0;
+ }
+ }
+};
+
+TEST_F(EncoderSplitTestRole, TestPrimaryLeft) {
+ isMaster = true;
+ isLeftHand = true;
+ encoder_init();
+ // send 4 pulses. with resolution 4, that's one step and we should get 1 update.
+ setAndRead(0, false);
+ setAndRead(1, false);
+ setAndRead(0, true);
+ setAndRead(1, true);
+
+ EXPECT_EQ(num_updates, 1); // one update received
+}
+
+TEST_F(EncoderSplitTestRole, TestPrimaryRight) {
+ isMaster = true;
+ isLeftHand = false;
+ encoder_init();
+ // send 4 pulses. with resolution 4, that's one step and we should get 1 update.
+ setAndRead(6, false);
+ setAndRead(7, false);
+ setAndRead(6, true);
+ setAndRead(7, true);
+
+ uint8_t slave_state[32] = {0};
+ encoder_state_raw(slave_state);
+
+ EXPECT_EQ(num_updates, 1); // one update received
+}
+
+TEST_F(EncoderSplitTestRole, TestNotPrimaryLeft) {
+ isMaster = false;
+ isLeftHand = true;
+ encoder_init();
+ // send 4 pulses. with resolution 4, that's one step and we should get 1 update.
+ setAndRead(0, false);
+ setAndRead(1, false);
+ setAndRead(0, true);
+ setAndRead(1, true);
+
+ EXPECT_EQ(num_updates, 0); // zero updates received
+}
+
+TEST_F(EncoderSplitTestRole, TestNotPrimaryRight) {
+ isMaster = false;
+ isLeftHand = false;
+ encoder_init();
+ // send 4 pulses. with resolution 4, that's one step and we should get 1 update.
+ setAndRead(6, false);
+ setAndRead(7, false);
+ setAndRead(6, true);
+ setAndRead(7, true);
+
+ uint8_t slave_state[32] = {0};
+ encoder_state_raw(slave_state);
+
+ EXPECT_EQ(num_updates, 0); // zero updates received
+}
diff --git a/quantum/encoder/tests/mock.c b/quantum/encoder/tests/mock.c
index 10a00cb8f2c..61f2f8294df 100644
--- a/quantum/encoder/tests/mock.c
+++ b/quantum/encoder/tests/mock.c
@@ -34,3 +34,7 @@ bool setPin(pin_t pin, bool val) {
pins[pin] = val;
return val;
}
+
+__attribute__((weak)) bool is_keyboard_master(void) {
+ return true;
+}
diff --git a/quantum/encoder/tests/mock_split.c b/quantum/encoder/tests/mock_split.c
index dd3c26d9584..5cc6cd19e17 100644
--- a/quantum/encoder/tests/mock_split.c
+++ b/quantum/encoder/tests/mock_split.c
@@ -36,3 +36,7 @@ bool setPin(pin_t pin, bool val) {
}
void last_encoder_activity_trigger(void) {}
+
+__attribute__((weak)) bool is_keyboard_master(void) {
+ return true;
+}
diff --git a/quantum/encoder/tests/rules.mk b/quantum/encoder/tests/rules.mk
index 6a2611952cd..d01c1c66ee5 100644
--- a/quantum/encoder/tests/rules.mk
+++ b/quantum/encoder/tests/rules.mk
@@ -56,3 +56,13 @@ encoder_split_no_right_SRC := \
$(QUANTUM_PATH)/encoder/tests/mock_split.c \
$(QUANTUM_PATH)/encoder/tests/encoder_tests_split_no_right.cpp \
$(QUANTUM_PATH)/encoder.c
+
+encoder_split_role_DEFS := -DENCODER_TESTS -DENCODER_ENABLE -DENCODER_MOCK_SPLIT
+encoder_split_role_INC := $(QUANTUM_PATH)/split_common
+encoder_split_role_CONFIG := $(QUANTUM_PATH)/encoder/tests/config_mock_split_role.h
+
+encoder_split_role_SRC := \
+ platforms/test/timer.c \
+ $(QUANTUM_PATH)/encoder/tests/mock_split.c \
+ $(QUANTUM_PATH)/encoder/tests/encoder_tests_split_role.cpp \
+ $(QUANTUM_PATH)/encoder.c
diff --git a/quantum/encoder/tests/testlist.mk b/quantum/encoder/tests/testlist.mk
index 6b2fd84d966..a407f1faddf 100644
--- a/quantum/encoder/tests/testlist.mk
+++ b/quantum/encoder/tests/testlist.mk
@@ -4,4 +4,5 @@ TEST_LIST += \
encoder_split_left_gt_right \
encoder_split_left_lt_right \
encoder_split_no_left \
- encoder_split_no_right
+ encoder_split_no_right \
+ encoder_split_role \
diff --git a/quantum/mousekey.c b/quantum/mousekey.c
index b91db80de6b..703fb39fa6e 100644
--- a/quantum/mousekey.c
+++ b/quantum/mousekey.c
@@ -129,7 +129,7 @@ static int8_t move_unit(uint8_t axis) {
// x**2 acceleration (quadratic, more precise for short movements)
int16_t percent = (inertia << 8) / mk_time_to_max;
- percent = (percent * percent) >> 8;
+ percent = ((int32_t)percent * percent) >> 8;
if (inertia < 0) percent = -percent;
// unit = sign(inertia) + (percent of max speed)
diff --git a/users/callum/callum.c b/users/callum/callum.c
index b3254a9cfaa..73367e8e571 100644
--- a/users/callum/callum.c
+++ b/users/callum/callum.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[NAV] = LAYOUT_callum(
- KC_TAB, SW_WIN, TABL, TABR, KC_VOLU, RESET, HOME, KC_UP, END, KC_DEL,
+ KC_TAB, SW_WIN, TABL, TABR, KC_VOLU, QK_BOOT, HOME, KC_UP, END, KC_DEL,
OS_SHFT, OS_CTRL, OS_ALT, OS_CMD, KC_VOLD, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
SPCL, SPC_R, BACK, FWD, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, SW_LANG, KC_ENT,
_______, _______, _______, _______
diff --git a/users/curry/process_records.h b/users/curry/process_records.h
index 605abdfae20..4db25c34e19 100644
--- a/users/curry/process_records.h
+++ b/users/curry/process_records.h
@@ -62,7 +62,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
# define WORKMAN KC_WORKMAN
#endif
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#if defined(SWAP_HANDS_ENABLE)
# define KC_C1R3 SH_T(KC_TAB)
diff --git a/users/cwebster2/my_miryoku.h b/users/cwebster2/my_miryoku.h
index 8b167cd619b..c4b4b59a1dd 100644
--- a/users/cwebster2/my_miryoku.h
+++ b/users/cwebster2/my_miryoku.h
@@ -35,7 +35,7 @@
#define _______NAKED_R___T____ KC_ENT, KC_BSPC, KC_DEL
#define _______NAKED_L___T____ KC_ESC, KC_SPC, KC_TAB
-#define _______INACTIVE_R1____ KC_LOCK, KC_TRNS, KC_TRNS, KC_TRNS, RESET
+#define _______INACTIVE_R1____ KC_LOCK, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
#define _______INACTIVE_R2____ KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI
#define _______INACTIVE_R3____ KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS
diff --git a/users/ericgebhart/extensions/oneshot.c b/users/ericgebhart/extensions/oneshot.c
index 83c8a04363a..55c2fa1ae3d 100644
--- a/users/ericgebhart/extensions/oneshot.c
+++ b/users/ericgebhart/extensions/oneshot.c
@@ -125,10 +125,10 @@ int8_t update_oneshot_modifiers(uint16_t keycode, keyrecord_t *record, int8_t ke
// registers/unregisters a mod to the operating system on state change if necessary
void update_modifier(oneshot_mod osmod, oneshot_state previous_state, oneshot_state current_state) {
if (previous_state == ONESHOT_STATE_OFF) {
- register_code(KC_LCTRL + osmod);
+ register_code(KC_LCTL + osmod);
} else {
if (current_state == ONESHOT_STATE_OFF) {
- unregister_code(KC_LCTRL + osmod);
+ unregister_code(KC_LCTL + osmod);
}
}
}
diff --git a/users/ericgebhart/layers/edge_keys.h b/users/ericgebhart/layers/edge_keys.h
index 0794b91a023..107434750b5 100644
--- a/users/ericgebhart/layers/edge_keys.h
+++ b/users/ericgebhart/layers/edge_keys.h
@@ -367,13 +367,13 @@
// all others are handled through macros.
#define ___5_BOTTOM_LEFT___ ___X2___, KC_INS, KC_LEFT, KC_RIGHT
-#define ___5_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, ___X2___
+#define ___5_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLS, ___X2___
#define ___5_BOTTOM_LEFT_EN___ ___5_BOTTOM_LEFT___
#define ___5_BOTTOM_RIGHT_EN___ ___5_BOTTOM_RIGHT___
#define ___4_BOTTOM_LEFT___ LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT
-#define ___4_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, LCTL(KC_C)
+#define ___4_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLS, LCTL(KC_C)
#define ___4_BOTTOM_LEFT_EN___ ___4___ //___4_BOTTOM_LEFT___
#define ___4_BOTTOM_RIGHT_EN___ ___4___ //___4_BOTTOM_RIGHT___
diff --git a/users/ericgebhart/layers/toprows.h b/users/ericgebhart/layers/toprows.h
index 351df442ed7..3ae1c4665b8 100644
--- a/users/ericgebhart/layers/toprows.h
+++ b/users/ericgebhart/layers/toprows.h
@@ -25,8 +25,8 @@
/*******************************************************************/
// Kinesis function key row. I don't use them. but might as well define them.
#define ___KINTFUNC_L___ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8
-// #define ___KINTFUNC_RIGHT___ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET
-#define ___KINTFUNC_R___ KC_F9, KC_F10, KC_F11, KC_F12, XXX, XXX, XXX, XXX, RESET
+// #define ___KINTFUNC_RIGHT___ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_FN0, QK_BOOT
+#define ___KINTFUNC_R___ KC_F9, KC_F10, KC_F11, KC_F12, XXX, XXX, XXX, XXX, QK_BOOT
// A TOPROWS Layer.
// set it how you like it, if you like it.
diff --git a/users/ericgebhart/layers/utility.h b/users/ericgebhart/layers/utility.h
index a688f8196d9..dab0bb4f416 100644
--- a/users/ericgebhart/layers/utility.h
+++ b/users/ericgebhart/layers/utility.h
@@ -74,7 +74,7 @@
#define ___ADJUST_L3___ ___RGB_HUE_SAT_INT_DN___, KC_RGB_T
#define ___ADJUST_R1___ ___, KC_MAKE, VRSN, MG_NKRO, KC_RESET
-#define ___ADJUST_R2___ EEP_RST, ___PRV_PLAY_NXT_STOP___,
+#define ___ADJUST_R2___ EE_CLR, ___PRV_PLAY_NXT_STOP___,
#define ___ADJUST_R3___ MG_NKRO, ___VDN_MUTE_VUP___, RGB_IDL
/********************************************************************************/
/* The Adjust LAYER Chunks */
diff --git a/users/gary/gary.h b/users/gary/gary.h
index ce920cf7767..adf25b9a75c 100644
--- a/users/gary/gary.h
+++ b/users/gary/gary.h
@@ -16,7 +16,7 @@ enum custom_keycodes {
RAISE,
};
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_ KC_TRNS
#define KC_LOWR MO(_LOWER) // Lower layer
diff --git a/users/jarred/jarred.h b/users/jarred/jarred.h
index 49b1253be5f..cec407da7fc 100644
--- a/users/jarred/jarred.h
+++ b/users/jarred/jarred.h
@@ -110,7 +110,7 @@ enum {
#define NUMPAD_L3 _______, _______, _______, _______, RGB_VAD, RGB_VAI
#define NUMPAD_L4 _______, _______, _______, _______, RGB_SPD, RGB_SPI
-#define NUMPAD_R1 DF(_QW),DF(_GAME), _______, _______, _______, RESET
+#define NUMPAD_R1 DF(_QW),DF(_GAME), _______, _______, _______, QK_BOOT
#define NUMPAD_R2 _______, _______, _______, _______, _______, _______
#define NUMPAD_R3 VRSN, _______, _______, _______, _______, _______
#define NUMPAD_R4 _______, _______, _______, _______, _______, _______
diff --git a/users/jjerrell/wrappers.h b/users/jjerrell/wrappers.h
index 87aa8e250f3..39e579cbfa9 100644
--- a/users/jjerrell/wrappers.h
+++ b/users/jjerrell/wrappers.h
@@ -319,7 +319,7 @@
#define __________________RAISE_R3___________________ KC_AT, KC_QUOT, KC_DQUO, KC_PLUS, KC_CIRC
// Adjust
-#define __________________ADJUST_L1__________________ KC_MAKE, DB_TOGG, RESET, XXXXXXX, XXXXXXX
+#define __________________ADJUST_L1__________________ KC_MAKE, DB_TOGG, QK_BOOT, XXXXXXX, XXXXXXX
#define __________________ADJUST_L2__________________ KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MNXT
#define __________________ADJUST_L3__________________ KC_VRSN, AU_ON, AU_OFF, CG_SWAP, CG_NORM
diff --git a/users/kageurufu/layouts.h b/users/kageurufu/layouts.h
index eccfa0700ed..edf64c0b398 100644
--- a/users/kageurufu/layouts.h
+++ b/users/kageurufu/layouts.h
@@ -46,7 +46,7 @@
#define _________________ADJUST_L1_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
-#define _________________ADJUST_L2_________________ _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______
+#define _________________ADJUST_L2_________________ _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______
#define _________________ADJUST_L3_________________ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______
#define _________________ADJUST_L4_________________ _______, _______, _______, _______, _______, _______
#define _________________ADJUST_L5_________________ _______, _______, _______, _______, _______, _______
diff --git a/users/kuchosauronad0/process_records.h b/users/kuchosauronad0/process_records.h
index d3d4c4fe83c..0e1c1ceadd8 100644
--- a/users/kuchosauronad0/process_records.h
+++ b/users/kuchosauronad0/process_records.h
@@ -84,7 +84,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#define WORKMAN KC_WORKMAN
#define PLOVER KC_PLOVER
-#define KC_RESET RESET
+#define KC_RESET QK_BOOT
#define KC_RST KC_RESET
#define UC_IRNY UC(0x2E2E)
diff --git a/users/mattly/mattly.c b/users/mattly/mattly.c
index d097c8cd7b0..eb6536a7f1f 100644
--- a/users/mattly/mattly.c
+++ b/users/mattly/mattly.c
@@ -57,7 +57,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
set_lights_default();
#endif
return true;
- case RESET:
+ case QK_BOOT:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(HSV_RESET);
#endif
diff --git a/users/miles2go/milestogo.h b/users/miles2go/milestogo.h
index 81fc02ded12..c57c0cf7a2c 100644
--- a/users/miles2go/milestogo.h
+++ b/users/miles2go/milestogo.h
@@ -69,7 +69,7 @@ enum userspace_custom_keycodes {
#define QWERTY KC_QWERTY
#define COLEMAK KC_CDH
-#define KC_RESET RESET
+#define KC_RESET QK_BOOT
#if (!defined(LAYOUT) && defined(KEYMAP))
# define LAYOUT KEYMAP
diff --git a/users/muppetjones/wrappers.h b/users/muppetjones/wrappers.h
index 7a6d702dad6..9bcf81857ce 100644
--- a/users/muppetjones/wrappers.h
+++ b/users/muppetjones/wrappers.h
@@ -65,7 +65,7 @@
* `----------------------------------' `----------------------------------'
*/
// NOTE: The "BACKLIT" keycode is planck specific
-#define __ADJUST_L1________________________________ RESET, DB_TOGG, XXXXXXX, XXXXXXX, XXXXXXX
+#define __ADJUST_L1________________________________ QK_BOOT, DB_TOGG, XXXXXXX, XXXXXXX, XXXXXXX
#define __ADJUST_L2________________________________ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD
#define __ADJUST_L3________________________________ XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX
diff --git a/users/pdl/pdl.h b/users/pdl/pdl.h
index 394f79f2f3f..4079ba9d339 100644
--- a/users/pdl/pdl.h
+++ b/users/pdl/pdl.h
@@ -128,7 +128,7 @@ enum userspace_layers {
#define _________________FUNCTN_L1_________________ KC_ESC, KC_F1, KC_F2, KC_F3, MY_AF4
#define _________________FUNCTN_L2_________________ KC_APP, KC_F4, KC_F5, KC_F6, MY_CF5
-#define _________________FUNCTN_L3_________________ RESET, KC_F7, KC_F8, KC_F9, MY_CF4
+#define _________________FUNCTN_L3_________________ QK_BOOT, KC_F7, KC_F8, KC_F9, MY_CF4
#define _________________FUNCTN_R1_________________ KC_VOLU, KC_F10, KC_F11, KC_F12, KC_INS
#define _________________FUNCTN_R2_________________ KC_VOLD, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT
diff --git a/users/ridingqwerty/wrappers.h b/users/ridingqwerty/wrappers.h
index f4f3de91f13..dbfd8ea0501 100644
--- a/users/ridingqwerty/wrappers.h
+++ b/users/ridingqwerty/wrappers.h
@@ -98,7 +98,7 @@
#define ________________DEBUG_L3___________________ _______, _______, _______, VERSION, _______
#define ________________DEBUG_R1___________________ VPRWAVE, STRAYA, _______, TESTING, _______
-#define ________________DEBUG_R2___________________ _______, _______, EE_CLR, RESET, MAKE
+#define ________________DEBUG_R2___________________ _______, _______, EE_CLR, QK_BOOT, MAKE
#define ________________DEBUG_R3___________________ QWERTY, DVORAK, COLEMAK, _______, _______
diff --git a/users/rmeli/config.h b/users/rmeli/config.h
index 1a6db91d1b4..5c31462d359 100644
--- a/users/rmeli/config.h
+++ b/users/rmeli/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see .
#define TAPPING_TERM 200
#ifdef UNICODEMAP_ENABLE
-# define UNICODE_SELECTED_MODES UC_MAC, UC_LNX
+# define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
#endif
#ifdef AUTO_SHIFT_ENABLED
diff --git a/users/romus/romus.h b/users/romus/romus.h
index f79777d91b1..a3d6db95235 100644
--- a/users/romus/romus.h
+++ b/users/romus/romus.h
@@ -231,7 +231,7 @@ enum {
* |Musir| | | | |Vol +||Vol -| Prev| Stop|TogMu| Next| |
* `------------------------------------------------------------------------' */
#define SETTINGS \
- BL_STEP,KC_F1, KC_F2, KC_F3, KC_F4, UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,RESET , \
+ BL_STEP,KC_F1, KC_F2, KC_F3, KC_F4, UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,QK_BOOT, \
_______,KC_F5, KC_F6, KC_F7, KC_F8, _______,KC_MUTE,_______,RGB_TOG,RGB_SAD,RGB_SAI,_______, \
K_GAMES,KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE,_______,KC_PSCR,RGB_MOD,RGB_VAD,RGB_VAI,_______, \
MU_TOG, _______,_______,_______,_______,KC_VOLU,KC_VOLD,KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT,_______
diff --git a/users/rs/rs.h b/users/rs/rs.h
index d19b887f487..ecd9a06de67 100644
--- a/users/rs/rs.h
+++ b/users/rs/rs.h
@@ -27,7 +27,7 @@ enum custom_keycodes {
#define KC_CODE MO(_CODE)
#define KC_BCOD LT(_CODE, KC_BSPC)
#define KC_FN MO(_FN)
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_CTRA LCTL(KC_A)
#define KC_CTRE LCTL(KC_E)
#define KC_BLTG BL_TOGG
diff --git a/users/rupa/wrappers.h b/users/rupa/wrappers.h
index b5794c8fadc..dfc00b51200 100644
--- a/users/rupa/wrappers.h
+++ b/users/rupa/wrappers.h
@@ -109,14 +109,14 @@ along with this program. If not, see .
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
#define ____65_ADJUST______________ROW1 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______
-#define ____65_ADJUST______________ROW2 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______
+#define ____65_ADJUST______________ROW2 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
#define ____65_ADJUST______________ROW3 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, _______
#define ____65_ADJUST______________ROW4 _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, UC_NEXT, _______, _______
#define ____65_ADJUST______________ROW5 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-#define ____65_ADJUST__________RGB_ROW2 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, RESET, _______
+#define ____65_ADJUST__________RGB_ROW2 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, QK_BOOT, _______
#define ____65_ADJUST__________RGB_ROW3 _______, RGB_M_P, RGB_M_B, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, _______
-#define ____65_ADJUST___________BL_ROW2 _______, BL_TOGG, BL_BRTG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______
+#define ____65_ADJUST___________BL_ROW2 _______, BL_TOGG, BL_BRTG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
// clang-format on
diff --git a/users/talljoe/talljoe.h b/users/talljoe/talljoe.h
index cdb01a97449..23dabdd8834 100644
--- a/users/talljoe/talljoe.h
+++ b/users/talljoe/talljoe.h
@@ -176,9 +176,9 @@ enum layers {
#ifndef TEMPLATE_RESET
#define TEMPLATE_RESET TEMPLATE_ALT( \
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , \
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX)
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX)
#endif
diff --git a/users/tominabox1/wrappers.h b/users/tominabox1/wrappers.h
index c5aeadae389..f7f4c7fd237 100644
--- a/users/tominabox1/wrappers.h
+++ b/users/tominabox1/wrappers.h
@@ -49,7 +49,7 @@ expanded before being used as arguments to the LAYOUT_xxx macro.
#define ___________________FKEY4___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
// Dimple Adjust layer
-#define ___________________ADJST1__________________ RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________ADJST1__________________ QK_BOOT,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___________________ADJST2__________________ RGB_M_P, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___________________ADJST3__________________ RGB_MOD, RGB_HUI, RGB_HUD, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___________________ADJST4__________________ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
diff --git a/users/wanleg/wanleg.c b/users/wanleg/wanleg.c
index b056f5dd960..c8ca77676b5 100644
--- a/users/wanleg/wanleg.c
+++ b/users/wanleg/wanleg.c
@@ -124,7 +124,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
break;
//on RESET, underglow red if present
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
#if defined(RGBLIGHT_ENABLE)
rgblight_enable_noeeprom(); // enables Rgb, without saving settings
diff --git a/users/wanleg/wanleg.h b/users/wanleg/wanleg.h
index 3c5901de41e..a9d1bbf6a61 100644
--- a/users/wanleg/wanleg.h
+++ b/users/wanleg/wanleg.h
@@ -169,7 +169,7 @@ enum {
* | Sft//Cp| CAPS | | | | C-A-D | mScrL | mScrR | ALT | DEL |
* '-----------------------------------------------------------------------------------------'
*/
-#define _______________Gherkin_ETC_0_______________ KC_GRV, KC_MS_U, _______,KC_ESC, RESET, KC_RSFT, KC_WH_D, KC_WH_U, _______, KC_BSLS
+#define _______________Gherkin_ETC_0_______________ KC_GRV, KC_MS_U, _______,KC_ESC, QK_BOOT, KC_RSFT, KC_WH_D, KC_WH_U, _______, KC_BSLS
#define _______________Gherkin_ETC_1_______________ KC_MS_L, KC_MS_D, KC_MS_R,_______, KC_LSFT, KC_BTN3, KC_BTN1, KC_BTN2, KC_SCLN, KC_QUOT
#define _______________Gherkin_ETC_2_______________ TD(TD_SFT_CAPS),KC_CAPS, _______,_______, _______, LALT(LCTL(KC_DEL)), KC_WH_L, KC_WH_R, KC_LALT, KC_DEL
@@ -219,7 +219,7 @@ enum {
* | | | | | | | | | | | | |
* '-----------------------------------------------------------------------------------------------------------'
*/
-#define ________________SUPRA_Row_0________________ RESET, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL
+#define ________________SUPRA_Row_0________________ QK_BOOT, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_RSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL
#define ________________SUPRA_Row_1________________ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_RCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, KC_BSLS
#define ________________SUPRA_Row_2________________ _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______
#define ________________SUPRA_Row_3________________ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/users/xulkal/layouts.h b/users/xulkal/layouts.h
index ccf466166ea..9eec97ac6ee 100644
--- a/users/xulkal/layouts.h
+++ b/users/xulkal/layouts.h
@@ -81,7 +81,7 @@
*/
#define __________________LOWER_L1_________________ _______, RGB_RMOD, RGB_MOD, RGB_TOG, _______, _______
-#define __________________LOWER_L2_________________ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, _______
+#define __________________LOWER_L2_________________ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, QK_BOOT, _______
#define __________________LOWER_L3_________________ RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, _______
#define __________________LOWER_L4_________________ _______, _______, _______, _______, _______, _______
#define __________________LOWER_L5_________________ _______, _______, _______, _______, _______, _______
@@ -107,7 +107,7 @@
*/
#define _________________ADJUST_L1_________________ _______, _______, _______, _______, _______, _______
-#define _________________ADJUST_L2_________________ _______, RESET, DB_TOGG, _______, _______, _______
+#define _________________ADJUST_L2_________________ _______, QK_BOOT, DB_TOGG, _______, _______, _______
#define _________________ADJUST_L3_________________ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM
#define _________________ADJUST_L4_________________ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON
#define _________________ADJUST_L5_________________ _______, _______, _______, _______, _______, _______
diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c
index 47996110bbf..804dd4677ad 100644
--- a/users/xulkal/process_records.c
+++ b/users/xulkal/process_records.c
@@ -29,7 +29,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record)
rgb_reset();
#endif
return false;
- case RESET:
+ case QK_BOOT:
{
if (record->event.pressed)
reset_timer = timer_read() + 500;
diff --git a/users/yet-another-developer/process_records.h b/users/yet-another-developer/process_records.h
index d4576f541e0..d4b9e213262 100644
--- a/users/yet-another-developer/process_records.h
+++ b/users/yet-another-developer/process_records.h
@@ -80,7 +80,7 @@ bool process_record_keymap( uint16_t keycode, keyrecord_t *record);
#define WORKMAN KC_WORKMAN
#define UNICODE KC_UNICODE
-#define KC_RESET RESET
+#define KC_RESET QK_BOOT
#define KC_RST KC_RESET
#define BK_LWER LT(_LOWER, KC_BSPC)