diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c index 148f02674006..aa7f1bb329ce 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/v2/splinky/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h index 433752687ac6..ad4edb4cfaee 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h +++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h @@ -59,3 +59,68 @@ #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/dilemma/3x5_2/3x5_2.h b/keyboards/bastardkb/dilemma/3x5_2/3x5_2.h new file mode 100644 index 000000000000..7deb32d91734 --- /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/assembled/config.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h similarity index 100% rename from keyboards/bastardkb/dilemma/assembled/config.h rename to keyboards/bastardkb/dilemma/3x5_2/assembled/config.h diff --git a/keyboards/bastardkb/dilemma/assembled/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h similarity index 100% rename from keyboards/bastardkb/dilemma/assembled/halconf.h rename to keyboards/bastardkb/dilemma/3x5_2/assembled/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 000000000000..841136c73476 --- /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/assembled/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h similarity index 100% rename from keyboards/bastardkb/dilemma/assembled/mcuconf.h rename to keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h 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 000000000000..df2f94792de4 --- /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/splinky/splinky.c b/keyboards/bastardkb/dilemma/3x5_2/config.h similarity index 58% rename from keyboards/bastardkb/dilemma/splinky/splinky.c rename to keyboards/bastardkb/dilemma/3x5_2/config.h index 0100ae06ae4a..664006645f4c 100644 --- a/keyboards/bastardkb/dilemma/splinky/splinky.c +++ b/keyboards/bastardkb/dilemma/3x5_2/config.h @@ -1,4 +1,5 @@ /* + * Copyright 2021 Quentin LEBASTARD * Copyright 2022 Charly Delay (@0xcharly) * * This program is free software: you can redistribute it and/or modify @@ -15,19 +16,6 @@ * along with this program. If not, see . */ -#include "quantum.h" +#pragma once -// 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(); -} +#include "dilemma/config.h" diff --git a/keyboards/bastardkb/dilemma/3x5_2/info.json b/keyboards/bastardkb/dilemma/3x5_2/info.json new file mode 100644 index 000000000000..3180d770987c --- /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/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/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/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/keymaps/via/config.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/config.h similarity index 100% rename from keyboards/bastardkb/dilemma/keymaps/via/config.h rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/via/config.h diff --git a/keyboards/bastardkb/dilemma/keymaps/via/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/keymap.c similarity index 100% rename from keyboards/bastardkb/dilemma/keymaps/via/keymap.c rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/via/keymap.c diff --git a/keyboards/bastardkb/dilemma/keymaps/via/readme.md b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/readme.md similarity index 100% rename from keyboards/bastardkb/dilemma/keymaps/via/readme.md rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/via/readme.md diff --git a/keyboards/bastardkb/dilemma/keymaps/via/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/keymaps/via/rules.mk similarity index 100% rename from keyboards/bastardkb/dilemma/keymaps/via/rules.mk rename to keyboards/bastardkb/dilemma/3x5_2/keymaps/via/rules.mk diff --git a/keyboards/bastardkb/dilemma/splinky/config.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h similarity index 100% rename from keyboards/bastardkb/dilemma/splinky/config.h rename to keyboards/bastardkb/dilemma/3x5_2/splinky/config.h 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 000000000000..e69f8ab65c79 --- /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 94% rename from keyboards/bastardkb/dilemma/rules.mk rename to keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk index aae8cbf56e8a..292b71fe8b43 100644 --- a/keyboards/bastardkb/dilemma/rules.mk +++ b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk @@ -22,13 +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 -POINTING_DEVICE_ENABLE = yes SERIAL_DRIVER = vendor +POINTING_DEVICE_ENABLE = yes +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 000000000000..0b6c657fdae1 --- /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 000000000000..db52b8e3f566 --- /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, \ + k30, k31, k32, k72, k71, k70 \ +) \ +{ \ + { 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 000000000000..060cf312715c --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_3/config.h @@ -0,0 +1,72 @@ +/** + * 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/config.h" + +/* 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 + +/* 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 CIRQUE_PINNACLE_SPI_CS_PIN GP21 + +/* OLED over i2c. */ +#define I2C1_CLOCK_SPEED 400000 +#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 +#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 DRIVER_LED_TOTAL 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/assembled/assembled.c b/keyboards/bastardkb/dilemma/3x5_3/halconf.h similarity index 60% rename from keyboards/bastardkb/dilemma/assembled/assembled.c rename to keyboards/bastardkb/dilemma/3x5_3/halconf.h index fa00085ce569..a3774605a8f7 100644 --- a/keyboards/bastardkb/dilemma/assembled/assembled.c +++ b/keyboards/bastardkb/dilemma/3x5_3/halconf.h @@ -15,18 +15,9 @@ * along with this program. If not, see . */ -#include "quantum.h" +#pragma once -// Forward declare RP2040 SDK declaration. -void gpio_init(uint gpio); +#define HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE -void keyboard_pre_init_user(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); -} +#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 000000000000..2c1a68888b4d --- /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/README.md b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/README.md new file mode 100644 index 000000000000..df1f43cbcb38 --- /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/bstiq/config.h b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/config.h new file mode 100644 index 000000000000..b2e49c8c6e96 --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/config.h @@ -0,0 +1,153 @@ +/** + * 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. + * + * See docs.qmk.fm/using-qmk/software-features/tap_hold#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. + * + * 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. + */ + +/** + * 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 + +/** + * 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 + +/** 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 000000000000..c8a241c3b15b --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c @@ -0,0 +1,224 @@ +/** + * 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_SLCK, ______________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_kb(layer_state_t state) { + state = layer_state_set_user(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/default/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c new file mode 100644 index 000000000000..cbee085f261f --- /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, EEP_RST, 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 000000000000..f9aa8946657f --- /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 000000000000..bfddbc9efc38 --- /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 000000000000..73ee4ab1e001 --- /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/assembled/info.json b/keyboards/bastardkb/dilemma/assembled/info.json deleted file mode 100644 index 26db604554ea..000000000000 --- a/keyboards/bastardkb/dilemma/assembled/info.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "keyboard_name": "Dilemma Assembled", - "usb": { - "device_version": "1.0.0", - }, -} - diff --git a/keyboards/bastardkb/dilemma/assembled/rules.mk b/keyboards/bastardkb/dilemma/assembled/rules.mk deleted file mode 100644 index 962625fe9535..000000000000 --- a/keyboards/bastardkb/dilemma/assembled/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -# Assembled version uses SPI. -POINTING_DEVICE_DRIVER = cirque_pinnacle_spi diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c index acc1a3f99501..3082a01fd784 100644 --- a/keyboards/bastardkb/dilemma/dilemma.c +++ b/keyboards/bastardkb/dilemma/dilemma.c @@ -17,6 +17,7 @@ * along with this program. If not, see . */ +#include "quantum.h" #include "dilemma.h" #ifdef CONSOLE_ENABLE @@ -327,3 +328,17 @@ 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_user(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); +} diff --git a/keyboards/bastardkb/dilemma/dilemma.h b/keyboards/bastardkb/dilemma/dilemma.h index fbf54c804bbe..68d86b03ce9e 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/info.json b/keyboards/bastardkb/dilemma/info.json index 676421996910..989d66a177c4 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 ecd1f9f1c91c..ac3c818bd6f1 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 07ee320bb905..000000000000 --- 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 421f11dbc796..000000000000 --- a/keyboards/bastardkb/dilemma/splinky/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -# Assembled version uses I2C. -POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c