diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h index 64b5158698b0..0bbf4a83a954 100644 --- a/keyboards/bastardkb/charybdis/4x6/config.h +++ b/keyboards/bastardkb/charybdis/4x6/config.h @@ -21,6 +21,9 @@ /* Trackball angle adjustment. */ #define ROTATIONAL_TRANSFORM_ANGLE -25 +/* Reverse dragscroll */ +#define CHARYBDIS_DRAGSCROLL_REVERSE_Y + /* RGB settings. */ #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_LED_COUNT 58 diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h index 1d29f9559d6a..388d92e8bf05 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h @@ -18,7 +18,7 @@ #ifdef VIA_ENABLE /* VIA configuration. */ -# define DYNAMIC_KEYMAP_LAYER_COUNT 4 +# define DYNAMIC_KEYMAP_LAYER_COUNT 5 #endif // VIA_ENABLE #ifndef __arm__ @@ -34,3 +34,8 @@ // - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD` // #define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE #endif // POINTING_DEVICE_ENABLE + + +/* TAPDANCE */ +#define TAPPING_TERM 200 + diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c index 5e1cf8c2254b..935c1ea5b3f2 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c @@ -22,9 +22,10 @@ enum charybdis_keymap_layers { LAYER_BASE = 0, + LAYER_POINTER, LAYER_LOWER, LAYER_RAISE, - LAYER_POINTER, + LAYER_SYMBOLS, }; /** \brief Automatically enable sniping-mode on the pointer layer. */ @@ -54,65 +55,95 @@ static uint16_t auto_pointer_layer_timer = 0; # define SNIPING KC_NO #endif // !POINTING_DEVICE_ENABLE +//Tap Dance Declarations +enum { + TD_ESC_CAPS = 0, + TD_LGUI_CTRLB +}; + +//Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + //Tap once for Esc, twice for Caps Lock + [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), + // Other declarations would go here, separated by commas, if you have them + [TD_LGUI_CTRLB] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LCTL(KC_B)) +}; + + // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LAYER_BASE] = LAYOUT( // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_LCTL | MOD_RCTL, KC_QUOT), // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_LCTL, PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH, KC_LALT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT, - KC_LALT, KC_BSPC, KC_DEL + MO(LAYER_POINTER), TD(TD_LGUI_CTRLB), KC_LALT, LT(3, KC_BSPC), LT(LAYER_SYMBOLS, KC_SPACE), + KC_RCTL, MO(LAYER_LOWER), LT(LAYER_LOWER, KC_ENTER) // ╰───────────────────────────╯ ╰──────────────────╯ ), - [LAYER_LOWER] = LAYOUT( + [LAYER_POINTER] = LAYOUT( // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX, + A(KC_TAB),KC_LGUI,KC_LALT, SNIPING, KC_BTN4, KC_BTN5, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_F11, KC_F12, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL, + KC_RCTL, G(KC_A), S(KC_BTN3),KC_BTN2,KC_BTN1,KC_BTN3, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT,KC_MINUS,KC_EQUAL, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, + KC_LSFT, G(KC_Z), G(KC_X), G(KC_C), G(KC_V), DRGSCRL, RCS(KC_TAB), C(KC_TAB), KC_INS, KC_INS, KC_LBRC, KC_RBRC, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, - XXXXXXX, XXXXXXX, KC_P0 + _______, _______, _______, _______, _______, + _______, _______, _______ // ╰───────────────────────────╯ ╰──────────────────╯ +), + + [LAYER_LOWER] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_ESC, LCAG(KC_F1),LCAG(KC_F2),LCAG(KC_F3),LCAG(KC_F4), LCAG(KC_F5), LCAG(KC_F6), LCAG(KC_F7), LCAG(KC_F8), LCAG(KC_F9), LCAG(KC_F10), _______, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + XXXXXXX,LCA(KC_Q),LCA(KC_W),LCA(KC_E),LCA(KC_R),LCA(KC_T),LCA(KC_Y), LCA(KC_U), LCA(KC_I), LCA(KC_O), LCAG(KC_F11),LCAG(KC_F12), + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_CAPS,LCA(KC_A),LCA(KC_S),LCA(KC_D),LCA(KC_F),LCA(KC_G),LCA(KC_H), LCA(KC_J), LCA(KC_K), LCA(KC_L), LCA(KC_SCLN),LCA(KC_QUOT), + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + _______,LCA(KC_Z),LCA(KC_X),LCA(KC_C),LCA(KC_V),MEH(KC_F1),LCA(KC_N),LCA(KC_M), LCA(KC_COMMA), LCA(KC_DOT), LCA(KC_SLSH), _______, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + _______, _______, _______, _______, _______, + _______, _______, _______ + // ╰─────────────────────── ────╯ ╰──────────────────╯ ), [LAYER_RAISE] = LAYOUT( // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, + _______, QK_RBT, LCAG(KC_W), KC_VOLU, G(KC_MINS),G(KC_EQL), RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, KC_F11, KC_F12, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE, + _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_0), XXXXXXX, RGB_RMOD,RGB_TOG, RGB_MOD, XXXXXXX, EE_CLR, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, + _______, XXXXXXX, XXXXXXX, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, XXXXXXX, DPI_RMOD, DPI_MOD, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - _______, _______, XXXXXXX, _______, XXXXXXX, - _______, _______, XXXXXXX + _______, _______, _______, _______, _______, + _______, _______, _______ // ╰───────────────────────────╯ ╰──────────────────╯ ), - [LAYER_POINTER] = LAYOUT( + [LAYER_SYMBOLS] = LAYOUT( // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_GRV , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + S(KC_GRV), KC_QUOT, KC_LT, KC_GT, KC_DQT, KC_DOT, KC_COMM, KC_AMPR, KC_LBRC, KC_RBRC, KC_PERC, _______, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX, + _______, KC_EXLM, KC_MINS, KC_PLUS, KC_EQL, KC_UNDS, KC_PIPE, KC_COLN, KC_LPRN, KC_RPRN, KC_QUES, _______, // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, _______, DRGSCRL, SNIPING, EE_CLR, QK_BOOT, QK_BOOT, EE_CLR, SNIPING, DRGSCRL, _______, XXXXXXX, + _______, KC_CIRC, KC_SLSH, KC_ASTR, KC_BSLS, KC_HASH, KC_TILD, KC_DLR, KC_LCBR, KC_RCBR, KC_AT, _______, // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1, - XXXXXXX, KC_BTN2, KC_BTN2 + _______, _______, _______, _______, _______, + _______, _______, _______ // ╰───────────────────────────╯ ╰──────────────────╯ ), }; @@ -146,10 +177,11 @@ void matrix_scan_user(void) { # endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE # ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER -layer_state_t layer_state_set_user(layer_state_t state) { - charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER)); - return state; -} +// HACK: Using it in below for custon colors +// layer_state_t layer_state_set_user(layer_state_t state) { +// charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER)); +// return state; +// } # endif // CHARYBDIS_AUTO_SNIPING_ON_LAYER #endif // POINTING_DEVICE_ENABLE @@ -157,3 +189,45 @@ layer_state_t layer_state_set_user(layer_state_t state) { // Forward-declare this helper function since it is defined in rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif + +// // Fancy simple layer colors +// layer_state_t layer_state_set_user(layer_state_t state) { +// uint8_t layer = get_highest_layer(state); // layer ID +// uint8_t saturation = rgblight_get_sat(); // Current saturated color +// uint8_t value = rgblight_get_val(); // Current brightness value + +// if (layer == 1) { +// rgblight_sethsv_noeeprom(180, saturation, value); // violet +// } else if (layer == 2) { +// rgblight_sethsv_noeeprom(0, saturation, value); // red +// } else if (layer == 3) { +// rgblight_sethsv_noeeprom(240, saturation, value); // pink +// } else if (layer == 4) { +// rgblight_sethsv_noeeprom(60, saturation, value); // green +// } else { +// // default layer +// rgblight_sethsv_noeeprom(120, saturation, value); // aqua +// } + +// return state; +// } + +layer_state_t layer_state_set_user(layer_state_t state) { + uint8_t layer = get_highest_layer(state); // layer ID + //uint8_t saturation = rgblight_get_sat(); // Current saturated color + //uint8_t value = rgblight_get_val(); // Current brightness value + + if (layer == 1) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_layer_1_effect); + } else if (layer == 2) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_layer_2_effect); + } else if (layer == 3) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_layer_3_effect); + } else if (layer == 4) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_layer_4_effect); + } else { + // default layer + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_base_effect); + } + return state; +} diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/rgb_matrix_user.inc b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rgb_matrix_user.inc new file mode 100644 index 000000000000..238a95f4d054 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rgb_matrix_user.inc @@ -0,0 +1,219 @@ +// !!! DO NOT ADD #pragma once !!! // + +RGB_MATRIX_EFFECT(base_effect) +RGB_MATRIX_EFFECT(layer_1_effect) +RGB_MATRIX_EFFECT(layer_2_effect) +RGB_MATRIX_EFFECT(layer_3_effect) +RGB_MATRIX_EFFECT(layer_4_effect) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +/* shorthand MYRGB_ colors */ +#define RED 0xFF, 0x00, 0x00 // Red +#define ORA 0xFF, 0x7F, 0x00 // Orange +#define YEL 0xFF, 0xFF, 0x00 // Yellow ** +#define LIM 0x7F, 0xFF, 0x00 // Lime +#define GRN 0x00, 0xFF, 0x00 // Green ** +#define SPR 0x00, 0xFF, 0x7F // Spring Green * +#define CYA 0x00, 0xFF, 0xFF // Cyan * +#define AZU 0x00, 0x7F, 0xFF // Azure ** +#define BLU 0x00, 0x00, 0xFF // Blue * +#define IND 0x7F, 0x00, 0xFF // Indigo ** +#define MAG 0xFF, 0x00, 0xFF // Magenta * +#define PIN 0xFF, 0x00, 0x7F // Pink ** +#define WHI 0xFF, 0xFF, 0xFF // White ** +#define BLK 0x00, 0x00, 0x00 // Black + + +struct RGB_key { + uint8_t r; + uint8_t g; + uint8_t b; +}; + +struct RGB_key base_rgb[56] = { + // Left half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [0]={WHI}, [7]={CYA}, [8]={CYA}, [15]={CYA}, [16]={CYA}, [20]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [1]={BLU}, [6]={AZU}, [9]={AZU}, [14]={AZU}, [17]={AZU}, [21]={AZU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [2]={RED}, [5]={AZU}, [10]={AZU}, [13]={AZU}, [18]={AZU}, [22]={AZU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [3]={GRN}, [4]={AZU}, [11]={AZU}, [12]={AZU}, [19]={AZU}, [23]={AZU}, + // Right half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [49]={CYA}, [45]={CYA}, [44]={CYA}, [37]={CYA}, [36]={CYA}, [29]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [50]={AZU}, [46]={AZU}, [43]={AZU}, [38]={AZU}, [35]={AZU}, [30]={BLU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [51]={AZU}, [47]={AZU}, [42]={AZU}, [39]={AZU}, [34]={BLU}, [31]={BLU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [52]={AZU}, [48]={AZU}, [41]={BLU}, [40]={BLU}, [33]={BLU}, [32]={GRN}, + // Thumb cluster left and right + // ╰─────────────────────────────────────────────────────────────────────────────────╯ + [26]={AZU}, [27]={BLU}, [28]={YEL},/**/[53]={WHI}, [54]={AZU}, + [25]={RED}, [24]={CYA},/**/[55]={CYA}, +}; + +// Mouse/mod layer +struct RGB_key layer_1_rgb[56] = { + // Left half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [0]={CYA}, [7]={MAG}, [8]={MAG}, [15]={MAG}, [16]={MAG}, [20]={MAG}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [1]={BLU}, [6]={BLU}, [9]={YEL}, [14]={ORA}, [17]={WHI}, [21]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [2]={RED}, [5]={IND}, [10]={IND}, [13]={BLU}, [18]={BLU}, [22]={BLU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [3]={GRN}, [4]={IND}, [11]={IND}, [12]={IND}, [19]={IND}, [23]={YEL}, + // Right half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [49]={MAG}, [45]={MAG}, [44]={MAG}, [37]={MAG}, [36]={MAG}, [29]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [50]={BLU}, [46]={BLU}, [43]={WHI}, [38]={BLU}, [35]={MAG}, [30]={MAG}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [51]={BLU}, [47]={WHI}, [42]={WHI}, [39]={WHI}, [34]={BLU}, [31]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [52]={GRN}, [48]={GRN}, [41]={BLU}, [40]={BLU}, [33]={GRN}, [32]={GRN}, + // Thumb cluster left and right + // ╰─────────────────────────────────────────────────────────────────────────────────╯ + [26]={AZU}, [27]={BLU}, [28]={YEL},/**/[53]={WHI}, [54]={AZU}, + [25]={RED}, [24]={CYA},/**/[55]={CYA}, +}; + +//Macros layer +struct RGB_key layer_2_rgb[56] = { + // Left half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [0]={CYA}, [7]={GRN}, [8]={GRN}, [15]={GRN}, [16]={GRN}, [20]={GRN}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [1]={BLK}, [6]={WHI}, [9]={WHI}, [14]={WHI}, [17]={WHI}, [21]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [2]={BLU}, [5]={WHI}, [10]={WHI}, [13]={WHI}, [18]={WHI}, [22]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [3]={GRN}, [4]={WHI}, [11]={WHI}, [12]={WHI}, [19]={WHI}, [23]={RED}, + // Right half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [49]={GRN}, [45]={GRN}, [44]={GRN}, [37]={GRN}, [36]={GRN}, [29]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [50]={PIN}, [46]={YEL}, [43]={BLU}, [38]={YEL}, [35]={GRN}, [30]={GRN}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [51]={PIN}, [47]={BLU}, [42]={BLU}, [39]={BLU}, [34]={WHI}, [31]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [52]={WHI}, [48]={WHI}, [41]={WHI}, [40]={WHI}, [33]={WHI}, [32]={GRN}, + // Thumb cluster left and right + // ╰─────────────────────────────────────────────────────────────────────────────────╯ + [26]={AZU}, [27]={BLU}, [28]={YEL},/**/[53]={WHI}, [54]={AZU}, + [25]={RED}, [24]={CYA},/**/[55]={CYA}, +}; + +// Configuration layer +struct RGB_key layer_3_rgb[56] = { + // Left half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [0]={CYA}, [7]={MAG}, [8]={MAG}, [15]={MAG}, [16]={MAG}, [20]={MAG}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [1]={BLU}, [6]={RED}, [9]={GRN}, [14]={BLU}, [17]={WHI}, [21]={WHI}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [2]={RED}, [5]={BLK}, [10]={YEL}, [13]={AZU}, [18]={YEL}, [22]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [3]={GRN}, [4]={BLK}, [11]={BLK}, [12]={BLU}, [19]={GRN}, [23]={GRN}, + // Right half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [49]={MAG}, [45]={MAG}, [44]={MAG}, [37]={MAG}, [36]={MAG}, [29]={CYA}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [50]={BLU}, [46]={MAG}, [43]={CYA}, [38]={WHI}, [35]={MAG}, [30]={MAG}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [51]={GRN}, [47]={PIN}, [42]={RED}, [39]={PIN}, [34]={BLK}, [31]={RED}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [52]={GRN}, [48]={BLK}, [41]={GRN}, [40]={ORA}, [33]={YEL}, [32]={YEL}, + // Thumb cluster left and right + // ╰─────────────────────────────────────────────────────────────────────────────────╯ + [26]={AZU}, [27]={BLU}, [28]={YEL},/**/[53]={WHI}, [54]={AZU}, + [25]={RED}, [24]={CYA},/**/[55]={CYA}, +}; + + +//Symbols layer +struct RGB_key layer_4_rgb[56] = { + // Left half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [0]={BLK}, [7]={BLK}, [8]={BLK}, [15]={BLK}, [16]={BLK}, [20]={BLK}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [1]={BLK}, [6]={YEL}, [9]={GRN}, [14]={GRN}, [17]={YEL}, [21]={IND}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [2]={BLK}, [5]={PIN}, [10]={BLU}, [13]={BLU}, [18]={AZU}, [22]={AZU}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [3]={BLK}, [4]={PIN}, [11]={BLU}, [12]={BLU}, [19]={PIN}, [23]={PIN}, + // Right half + // ╭─────────────────────────────────────────────────────────────────────────────────╮ + [49]={BLK}, [45]={BLK}, [44]={BLK}, [37]={BLK}, [36]={BLK}, [29]={BLK}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [50]={IND}, [46]={PIN}, [43]={GRN}, [38]={GRN}, [35]={PIN}, [30]={BLK}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [51]={PIN}, [47]={PIN}, [42]={GRN}, [39]={GRN}, [34]={PIN}, [31]={BLK}, + // ├─────────────────────────────────────────────────────────────────────────────────┤ + [52]={PIN}, [48]={PIN}, [41]={GRN}, [40]={GRN}, [33]={PIN}, [32]={BLK}, + // Thumb cluster left and right + // ╰─────────────────────────────────────────────────────────────────────────────────╯ + [26]={AZU}, [27]={BLU}, [28]={YEL},/**/[53]={WHI}, [54]={AZU}, + [25]={RED}, [24]={CYA},/**/[55]={CYA}, +}; + +static bool base_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t value = rgblight_get_val(); + float scale = value / 255.0; + + for(uint8_t i = 0; i < 56; i++) { + rgb_matrix_set_color(i, base_rgb[i].r*scale, base_rgb[i].g*scale, base_rgb[i].b*scale); + } + return rgb_matrix_check_finished_leds(led_max); +} + +static bool layer_1_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t value = rgblight_get_val(); + float scale = value / 255.0; + + for(uint8_t i = 0; i < 56; i++) { + rgb_matrix_set_color(i, layer_1_rgb[i].r*scale, layer_1_rgb[i].g*scale, layer_1_rgb[i].b*scale); + } + return rgb_matrix_check_finished_leds(led_max); +} + +static bool layer_2_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t value = rgblight_get_val(); + float scale = value / 255.0; + + for(uint8_t i = 0; i < 56; i++) { + rgb_matrix_set_color(i, layer_2_rgb[i].r*scale, layer_2_rgb[i].g*scale, layer_2_rgb[i].b*scale); + } + return rgb_matrix_check_finished_leds(led_max); +} + +static bool layer_3_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t value = rgblight_get_val(); + float scale = value / 255.0; + + for(uint8_t i = 0; i < 56; i++) { + rgb_matrix_set_color(i, layer_3_rgb[i].r*scale, layer_3_rgb[i].g*scale, layer_3_rgb[i].b*scale); + } + return rgb_matrix_check_finished_leds(led_max); +} + +static bool layer_4_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + uint8_t value = rgblight_get_val(); + float scale = value / 255.0; + + for(uint8_t i = 0; i < 56; i++) { + rgb_matrix_set_color(i, layer_4_rgb[i].r*scale, layer_4_rgb[i].g*scale, layer_4_rgb[i].b*scale); + } + return rgb_matrix_check_finished_leds(led_max); +} + +#endif diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk index 1e5b99807cb7..0119dbd60d8e 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk @@ -1 +1,3 @@ VIA_ENABLE = yes +RGB_MATRIX_CUSTOM_USER = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/bastardkb/charybdis/config.h b/keyboards/bastardkb/charybdis/config.h index 24a6edfd3d3e..9a3d2008ee5b 100644 --- a/keyboards/bastardkb/charybdis/config.h +++ b/keyboards/bastardkb/charybdis/config.h @@ -44,8 +44,11 @@ # define RGB_MATRIX_DEFAULT_VAL 64 // Rainbow swirl as startup mode. -# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT +//# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +//# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT + +// Custom colors base as startup mode. +# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_base_effect // Slow swirl at startup. # define RGB_MATRIX_DEFAULT_SPD 32