Skip to content

Commit

Permalink
Merge PR qmk/qmk_firmware#15333: bastardkb/charybdis: add support for…
Browse files Browse the repository at this point in the history
… Charybdis (4x6 and 3x5) (#15333)
  • Loading branch information
0xcharly committed Feb 27, 2022
1 parent a977deb commit a83ec94
Show file tree
Hide file tree
Showing 31 changed files with 2,505 additions and 0 deletions.
83 changes: 83 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/3x5.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*
* Copyright 2020 Christopher Courtney <[email protected]> (@drashna)
* Copyright 2021 Quentin LEBASTARD <[email protected]>
* Copyright 2021 Charly Delay <[email protected]> (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Publicw License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http:https://www.gnu.org/licenses/>.
*/

#include "3x5.h"

// clang-format off
#ifdef RGB_MATRIX_ENABLE
/**
* \brief 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 33 34 XX
* ╰────────────╯ ╰────────────╯
*/
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
{ 33, NO_LED, 34, NO_LED, 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 },
}, {
/* 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_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
} };
#endif
// clang-format on
67 changes: 67 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/3x5.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
* Copyright 2021 Charly Delay <[email protected]> (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http:https://www.gnu.org/licenses/>.
*/

#pragma once

#include "charybdis.h"

// clang-format off
#define LAYOUT_charybdis_3x5( \
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, k33, k30, k70, k72 \
) \
{ \
{ k00, k01, k02, k03, k04 }, \
{ k10, k11, k12, k13, k14 }, \
{ k20, k21, k22, k23, k24 }, \
{ k30, KC_NO, k32, k33, 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 }, \
}

/**
* \brief Compatibility layout with the split_3x5_3 community layout.
*
* This effectively renders the Charbdis Nano compatible with existing layout
* implementations relying on the `split_3x5_3` layout, which includes, among
* others, Manna-Harbour's (@manna_harbour) Miryoku layout.
*
* The last key on the layout is ignored, to transform the input 36-keys layout
* into the Charybdis Nano's 35-keys layout.
*/
#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, k33, k30, k70, k72, ___ \
) \
{ \
{ k00, k01, k02, k03, k04 }, \
{ k10, k11, k12, k13, k14 }, \
{ k20, k21, k22, k23, k24 }, \
{ k30, KC_NO, k32, k33, 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
87 changes: 87 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
* Copyright 2021 Charly Delay <[email protected]> (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http:https://www.gnu.org/licenses/>.
*/

#pragma once

#define VENDOR_ID 0xA8F8
#define PRODUCT_ID 0x1832
#define DEVICE_VER 0x0001
#define MANUFACTURER Bastard Keyboards
#define PRODUCT Charybdis Nano

/* Key matrix configuration. */

// Rows are doubled-up.
#define MATRIX_ROWS 8
#define MATRIX_COLS 5

// Wiring configuration for each half.
#define MATRIX_ROW_PINS \
{ B7, C6, D4, B5 }
#define MATRIX_COL_PINS \
{ C7, F0, D7, E6, B4 }

#define MATRIX_ROW_PINS_RIGHT \
{ F0, C6, D4, B5 }
#define MATRIX_COL_PINS_RIGHT \
{ C7, B7, D7, E6, B4 }

#define DIODE_DIRECTION ROW2COL

/* Handedness. */
#define MASTER_RIGHT

/* Bootmagic Lite configuration. */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 0

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

/* Set 0 if debouncing isn't needed. */
#define DEBOUNCE 5

/* Disable action features. */
#define NO_ACTION_MACRO // Disable old-style macro handling.
#define NO_ACTION_FUNCTION // Disable old-style function handling.

/* PMW3360 settings. */
#define PMW3360_CS_PIN B0

// Trackball angle adjustment.
#define ROTATIONAL_TRANSFORM_ANGLE -25

/* RGB settings. */

#define RGB_DI_PIN D3
#define RGBLED_NUM 35
#define RGBLED_SPLIT \
{ 18, 17 }

/* 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
86 changes: 86 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"keyboard_name": "Charybdis Nano",
"url": "https://www.bastardkb.com",
"maintainer": "Quentin Lebastard",
"layouts": {
"LAYOUT_charybdis_3x5": {
"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": "L31", "x": 5, "y": 3 },
{ "label": "L32", "x": 6, "y": 3 },
{ "label": "R30", "x": 9, "y": 3 },
{ "label": "R31", "x": 10, "y": 3 }
]
},
"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": "L30", "x": 4, "y": 3 },
{ "label": "L31", "x": 5, "y": 3 },
{ "label": "L32", "x": 6, "y": 3 },
{ "label": "R30", "x": 9, "y": 3 },
{ "label": "R31", "x": 10, "y": 3 },
{ "label": "R32", "x": 11, "y": 3 }
]
}
}
}
54 changes: 54 additions & 0 deletions keyboards/bastardkb/charybdis/3x5/keymaps/default/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* Copyright 2021 Charly Delay <[email protected]> (@0xcharly)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http:https://www.gnu.org/licenses/>.
*/
#pragma once

#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

/* RGB Matrix. */

#ifdef RGB_MATRIX_ENABLE
// Disable control of RGB matrix by keycodes (must use firmware implementation
// to control the feature).
# define RGB_MATRIX_DISABLE_KEYCODES

// 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
Loading

0 comments on commit a83ec94

Please sign in to comment.