diff options
Diffstat (limited to 'keyboards/giabalanai/keymaps/giabarinaix2led')
5 files changed, 640 insertions, 0 deletions
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h new file mode 100644 index 0000000000..684287ba98 --- /dev/null +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h @@ -0,0 +1,26 @@ +#pragma once + +#define GIABARINAIX2 +#ifdef GIABARINAIX2 +# undef MATRIX_ROW_PINS_RIGHT +# undef MATRIX_COL_PINS_RIGHT + +# ifdef RGBLIGHT_ENABLE +# undef RGBLED_NUM +# define RGBLED_NUM 120 +# undef RGBLIGHT_LED_MAP +# define RGBLIGHT_LED_MAP { \ + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \ + 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, \ + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \ + 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \ + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, \ + \ + 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \ + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, \ + 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \ + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \ + 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48 \ + } +# endif +#endif diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/info.json b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json new file mode 100644 index 0000000000..20a52326dd --- /dev/null +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json @@ -0,0 +1,146 @@ +{ + "keyboard_name": "giabarinaix2", + "manufacturer": "3araht", + "url": "https://github.com/3araht", + "maintainer": "3araht", + "usb": { + "vid": "0xFEED", + "pid": "0xF4B2", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT": { + "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": "l05", "x": 5, "y": 0}, + {"label": "l06", "x": 6, "y": 0}, + {"label": "l07", "x": 7, "y": 0}, + {"label": "l08", "x": 8, "y": 0}, + {"label": "l09", "x": 9, "y": 0}, + {"label": "l0a", "x": 10, "y": 0}, + {"label": "l0b", "x": 11, "y": 0}, + + {"label": "r00", "x": 14.5, "y": 0}, + {"label": "r01", "x": 15.5, "y": 0}, + {"label": "r02", "x": 16.5, "y": 0}, + {"label": "r03", "x": 17.5, "y": 0}, + {"label": "r04", "x": 18.5, "y": 0}, + {"label": "r05", "x": 19.5, "y": 0}, + {"label": "r06", "x": 20.5, "y": 0}, + {"label": "r07", "x": 21.5, "y": 0}, + {"label": "r08", "x": 22.5, "y": 0}, + {"label": "r09", "x": 23.5, "y": 0}, + {"label": "r0a", "x": 24.5, "y": 0}, + {"label": "r0b", "x": 25.5, "y": 0}, + + {"label": "l10", "x": 0.5, "y": 1}, + {"label": "l11", "x": 1.5, "y": 1}, + {"label": "l12", "x": 2.5, "y": 1}, + {"label": "l13", "x": 3.5, "y": 1}, + {"label": "l14", "x": 4.5, "y": 1}, + {"label": "l15", "x": 5.5, "y": 1}, + {"label": "l16", "x": 6.5, "y": 1}, + {"label": "l17", "x": 7.5, "y": 1}, + {"label": "l18", "x": 8.5, "y": 1}, + {"label": "l19", "x": 9.5, "y": 1}, + {"label": "l1a", "x": 10.5, "y": 1}, + {"label": "l1b", "x": 11.5, "y": 1}, + + {"label": "r10", "x": 15, "y": 1}, + {"label": "r11", "x": 16, "y": 1}, + {"label": "r12", "x": 17, "y": 1}, + {"label": "r13", "x": 18, "y": 1}, + {"label": "r14", "x": 19, "y": 1}, + {"label": "r15", "x": 20, "y": 1}, + {"label": "r16", "x": 21, "y": 1}, + {"label": "r17", "x": 22, "y": 1}, + {"label": "r18", "x": 23, "y": 1}, + {"label": "r19", "x": 24, "y": 1}, + {"label": "r1a", "x": 25, "y": 1}, + {"label": "r1b", "x": 26, "y": 1}, + + {"label": "l20", "x": 1, "y": 2}, + {"label": "l21", "x": 2, "y": 2}, + {"label": "l22", "x": 3, "y": 2}, + {"label": "l23", "x": 4, "y": 2}, + {"label": "l24", "x": 5, "y": 2}, + {"label": "l25", "x": 6, "y": 2}, + {"label": "l26", "x": 7, "y": 2}, + {"label": "l27", "x": 8, "y": 2}, + {"label": "l28", "x": 9, "y": 2}, + {"label": "l29", "x": 10, "y": 2}, + {"label": "l2a", "x": 11, "y": 2}, + {"label": "l2b", "x": 12, "y": 2}, + + {"label": "r20", "x": 15.5, "y": 2}, + {"label": "r21", "x": 16.5, "y": 2}, + {"label": "r22", "x": 17.5, "y": 2}, + {"label": "r23", "x": 18.5, "y": 2}, + {"label": "r24", "x": 19.5, "y": 2}, + {"label": "r25", "x": 20.5, "y": 2}, + {"label": "r26", "x": 21.5, "y": 2}, + {"label": "r27", "x": 22.5, "y": 2}, + {"label": "r28", "x": 23.5, "y": 2}, + {"label": "r29", "x": 24.5, "y": 2}, + {"label": "r2a", "x": 25.5, "y": 2}, + {"label": "r2b", "x": 26.5, "y": 2}, + + {"label": "l30", "x": 1.5, "y": 3}, + {"label": "l31", "x": 2.5, "y": 3}, + {"label": "l32", "x": 3.5, "y": 3}, + {"label": "l33", "x": 4.5, "y": 3}, + {"label": "l34", "x": 5.5, "y": 3}, + {"label": "l35", "x": 6.5, "y": 3}, + {"label": "l36", "x": 7.5, "y": 3}, + {"label": "l37", "x": 8.5, "y": 3}, + {"label": "l38", "x": 9.5, "y": 3}, + {"label": "l39", "x": 10.5, "y": 3}, + {"label": "l3a", "x": 11.5, "y": 3}, + {"label": "l3b", "x": 12.5, "y": 3}, + + {"label": "r30", "x": 16, "y": 3}, + {"label": "r31", "x": 17, "y": 3}, + {"label": "r32", "x": 18, "y": 3}, + {"label": "r33", "x": 19, "y": 3}, + {"label": "r34", "x": 20, "y": 3}, + {"label": "r35", "x": 21, "y": 3}, + {"label": "r36", "x": 22, "y": 3}, + {"label": "r37", "x": 23, "y": 3}, + {"label": "r38", "x": 24, "y": 3}, + {"label": "r39", "x": 25, "y": 3}, + {"label": "r3a", "x": 26, "y": 3}, + {"label": "r3b", "x": 27, "y": 3}, + + {"label": "l40", "x": 2, "y": 4}, + {"label": "l41", "x": 3, "y": 4}, + {"label": "l42", "x": 4, "y": 4}, + {"label": "l43", "x": 5, "y": 4}, + {"label": "l44", "x": 6, "y": 4}, + {"label": "l45", "x": 7, "y": 4}, + {"label": "l46", "x": 8, "y": 4}, + {"label": "l47", "x": 9, "y": 4}, + {"label": "l48", "x": 10, "y": 4}, + {"label": "l49", "x": 11, "y": 4}, + {"label": "l4a", "x": 12, "y": 4}, + {"label": "l4b", "x": 13, "y": 4}, + + {"label": "r40", "x": 16.5, "y": 4}, + {"label": "r41", "x": 17.5, "y": 4}, + {"label": "r42", "x": 18.5, "y": 4}, + {"label": "r43", "x": 19.5, "y": 4}, + {"label": "r44", "x": 20.5, "y": 4}, + {"label": "r45", "x": 21.5, "y": 4}, + {"label": "r46", "x": 22.5, "y": 4}, + {"label": "r47", "x": 23.5, "y": 4}, + {"label": "r48", "x": 24.5, "y": 4}, + {"label": "r49", "x": 25.5, "y": 4}, + {"label": "r4a", "x": 26.5, "y": 4}, + {"label": "r4b", "x": 27.5, "y": 4} + ] + } + } +} diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c new file mode 100644 index 0000000000..1e773bd233 --- /dev/null +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c @@ -0,0 +1,464 @@ +/* Copyright 2020 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H +#include "version.h" + +// Alias layout macros that expand groups of keys. +#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__) + +#define DFCBASE DF(_C_SYSTEM_BASE) +#define DF_QWER DF(_QWERTY) +// Long press: go to _FN layer, tap: MUTE +#define FN_MUTE LT(_FN, KC_MUTE) + +// Used to set octave to MI_OCT_0 +extern midi_config_t midi_config; +uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel. + +#ifdef RGBLIGHT_ENABLE +/* used to specify there is no LED on the keylocation. */ +# define NO_LED 255 +#endif // RGBLIGHT_ENABLE +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _C_SYSTEM_BASE, // MIDI C-system + _C_SYSTEM_BASS2ROW, // counter bass system + _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. + _CHROMATONE, + _QWERTY, // just in case + _FN +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + + // MIDI Chord Keycodes - Root notes + MY_CHORD_MIN = SAFE_RANGE, + + MI_CH_Cr = MY_CHORD_MIN, + MI_CH_Csr, + MI_CH_Dbr = MI_CH_Csr, + MI_CH_Dr, + MI_CH_Dsr, + MI_CH_Ebr = MI_CH_Dsr, + MI_CH_Er, + MI_CH_Fr, + MI_CH_Fsr, + MI_CH_Gbr = MI_CH_Fsr, + MI_CH_Gr, + MI_CH_Gsr, + MI_CH_Abr = MI_CH_Gsr, + MI_CH_Ar, + MI_CH_Asr, + MI_CH_Bbr = MI_CH_Asr, + MI_CH_Br, + + // MIDI Chord Keycodes - Major + + MI_CH_C, + MI_CH_Cs, + MI_CH_Db = MI_CH_Cs, + MI_CH_D, + MI_CH_Ds, + MI_CH_Eb = MI_CH_Ds, + MI_CH_E, + MI_CH_F, + MI_CH_Fs, + MI_CH_Gb = MI_CH_Fs, + MI_CH_G, + MI_CH_Gs, + MI_CH_Ab = MI_CH_Gs, + MI_CH_A, + MI_CH_As, + MI_CH_Bb = MI_CH_As, + MI_CH_B, + + // MIDI Chord Keycodes Minor + + MI_CH_Cm, + MI_CH_Csm, + MI_CH_Dbm = MI_CH_Csm, + MI_CH_Dm, + MI_CH_Dsm, + MI_CH_Ebm = MI_CH_Dsm, + MI_CH_Em, + MI_CH_Fm, + MI_CH_Fsm, + MI_CH_Gbm = MI_CH_Fsm, + MI_CH_Gm, + MI_CH_Gsm, + MI_CH_Abm = MI_CH_Gsm, + MI_CH_Am, + MI_CH_Asm, + MI_CH_Bbm = MI_CH_Asm, + MI_CH_Bm, + + //MIDI Chord Keycodes Dominant Seventh + + MI_CH_CDom7, + MI_CH_CsDom7, + MI_CH_DbDom7 = MI_CH_CsDom7, + MI_CH_DDom7, + MI_CH_DsDom7, + MI_CH_EbDom7 = MI_CH_DsDom7, + MI_CH_EDom7, + MI_CH_FDom7, + MI_CH_FsDom7, + MI_CH_GbDom7 = MI_CH_FsDom7, + MI_CH_GDom7, + MI_CH_GsDom7, + MI_CH_AbDom7 = MI_CH_GsDom7, + MI_CH_ADom7, + MI_CH_AsDom7, + MI_CH_BbDom7 = MI_CH_AsDom7, + MI_CH_BDom7, + + // MIDI Chord Keycodes Diminished Seventh + + MI_CH_CDim7, + MI_CH_CsDim7, + MI_CH_DbDim7 = MI_CH_CsDim7, + MI_CH_DDim7, + MI_CH_DsDim7, + MI_CH_EbDim7 = MI_CH_DsDim7, + MI_CH_EDim7, + MI_CH_FDim7, + MI_CH_FsDim7, + MI_CH_GbDim7 = MI_CH_FsDim7, + MI_CH_GDim7, + MI_CH_GsDim7, + MI_CH_AbDim7 = MI_CH_GsDim7, + MI_CH_ADim7, + MI_CH_AsDim7, + MI_CH_BbDim7 = MI_CH_AsDim7, + MI_CH_BDim7, + + MY_CHORD_MAX = MI_CH_BDim7, + + VERSION, + CSYSTEM, // C-SYSTEM layout + CNTBASC, // CouNTer BASs C-system layout + CSYSALL, // C-SYStem ALL layout + CHRTONE, // CHRomaTONE layout + TGLMICH // ToGgLe MIdi CHannel separation +}; + +#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1) +static uint8_t chord_status[MY_CHORD_COUNT]; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* C-system Base */ + [_C_SYSTEM_BASE] = LAYOUT_giabarinaix2( + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7, + + MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, + MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, + MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, + MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, + MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE + ), + + /* BASS2row */ + [_C_SYSTEM_BASS2ROW] = LAYOUT_giabarinaix2( + MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr, + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + + + MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, + MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, + MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, + MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, + MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE + ), + + /* C-system entirely */ + [_C_SYSTEM_ENTIRELY] = LAYOUT_giabarinaix2( + XXXXXXX, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, + XXXXXXX, XXXXXXX, MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, + XXXXXXX, XXXXXXX, MI_D, MI_F, MI_Ab, MI_B, MI_D_1, MI_F_1, MI_Ab_1, MI_B_1, MI_D_2, MI_F_2, + XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, MI_E_2, MI_G_2, + MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, MI_Fs_2, MI_A_2, + + MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, + MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, + MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, + MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5, + MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5, FN_MUTE + ), + + /* Chromatone */ + [_CHROMATONE] = LAYOUT_giabarinaix2( + XXXXXXX, XXXXXXX, MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, + XXXXXXX, MI_C, MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, + XXXXXXX, MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, + MI_C, MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, + MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, + + MI_A_1, MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, + MI_Bb_1, MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, + MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, + MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, MI_Bb_3, + MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, FN_MUTE + ), + + /* QWERTY */ + [_QWERTY] = LAYOUT_wrapper_giabarinaix2( + KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC, + KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL, + KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT, + KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL, + + KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC, + KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL, + KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT, + KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, _______ + ), + + /* Fn */ + [_FN] = LAYOUT_giabarinaix2( + CSYSTEM, CNTBASC, CSYSALL, CHRTONE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, + DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + CSYSTEM, CNTBASC, CSYSALL, CHRTONE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, + DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, TGLMICH, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, + [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, + [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, + [_FN] = { ENCODER_CCW_CW(_______, _______) }, +}; +#endif + +#ifdef RGBLIGHT_ENABLE + +// Light up fn layer keys +const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard + {0, 4, HSV_ORANGE}, // MIDI layouts + {11, 1, HSV_RED}, // RGB_TOG + {12, 1, HSV_WHITE}, // DF_QWER + {35, 1, HSV_TEAL}, // TGLMICH + + // right keyboard + {60, 4, HSV_ORANGE}, // MIDI layouts + {71 , 1, HSV_RED}, // RGB_TOG + {72, 1, HSV_WHITE}, // DF_QWER + {83, 1, HSV_TEAL} // TGLMICH +); + + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_fn_layer); + +layer_state_t layer_state_set_user(layer_state_t state) { + // Both layers will light up if both kb layers are active + rgblight_set_layer_state(0, layer_state_cmp(state, _FN)); + return state; +}; + +#endif // RGBLIGHT_ENABLE +void keyboard_post_init_user(void) { + // Set otave to MI_OCT_0 + midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + + // avoid using 127 since it is used as a special number in some sound sources. + midi_config.velocity = MIDI_INITIAL_VELOCITY; + + for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) { + chord_status[i] = MIDI_INVALID_NOTE; + } + +#ifdef RGBLIGHT_ENABLE + + rgblight_layers = my_rgb_layers; + + // Reset LED off + rgblight_sethsv(HSV_BLACK); +# if defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE) + rgblight_sethsv(30, 50, 40); +# ifdef RGBLIGHT_EFFECT_KNIGHT + rgblight_mode(RGBLIGHT_MODE_KNIGHT); +# elif defined(RGBLIGHT_EFFECT_TWINKLE) + rgblight_mode(RGBLIGHT_MODE_TWINKLE+3); +# endif +# endif +#endif // RGBLIGHT_ENABLE +}; + +void toggle_MIDI_channel_separation(void) { + if (midi_chord_ch > 0) { + midi_chord_ch = 0; + midi_bass_ch = 0; + } else { + midi_chord_ch = 1; + midi_bass_ch = 2; + } +} + +#ifdef RGBLIGHT_ENABLE +void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){ + switch (biton32(default_layer_state)) { + case _C_SYSTEM_BASE: + keylight_manager(record, HSV_GREEN, keylocation); + break; + case _C_SYSTEM_BASS2ROW: + keylight_manager(record, HSV_YELLOW, keylocation); + break; + } +} +void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){ + switch (biton32(default_layer_state)) { + case _C_SYSTEM_BASE: + keylight_manager(record, HSV_SPRINGGREEN, keylocation); + break; + case _C_SYSTEM_BASS2ROW: + keylight_manager(record, HSV_GOLDENROD, keylocation); + break; + } +} +#endif // RGBLIGHT_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord + + #ifdef RGBLIGHT_ENABLE + /* prepare for turning on LEDs when keys are pressed. */ + uint8_t r = record->event.key.row; + uint8_t c = record->event.key.col; + uint8_t keylocation = pgm_read_byte(&convert_key_to_led[MATRIX_COLS * r + c]); + #endif // RGBLIGHT_ENABLE + + uint8_t chord = keycode - MY_CHORD_MIN; + + switch (keycode) { + case VERSION: // Output firmware info. + if (record->event.pressed) { + SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE); + } + break; + + // set default layer and save it to EEPROM when MIDI key layers are selected. + case CSYSTEM: + if (record->event.pressed) { + set_single_persistent_default_layer(_C_SYSTEM_BASE); + } + break; + + case CNTBASC: + if (record->event.pressed) { + set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW); + } + break; + + case CSYSALL: + if (record->event.pressed) { + set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY); + } + break; + + case CHRTONE: + if (record->event.pressed) { + set_single_persistent_default_layer(_CHROMATONE); + } + break; + + case TGLMICH: + if (record->event.pressed) { + toggle_MIDI_channel_separation(); + }; + break; + + + // MIDI Chord Keycodes, on the left side. + case MI_CH_Cr ... MI_CH_Br: // Root Notes + root_note = keycode - MI_CH_Cr + MI_C_1; + my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false); +#ifdef RGBLIGHT_ENABLE + switch_keylight_color4bass(record, keylocation); +#endif + break; + case MI_CH_C ... MI_CH_B: // Major Chords + root_note = keycode - MI_CH_C + MI_C_2; + // Root, Major Third, and Fifth Notes + my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7); +#ifdef RGBLIGHT_ENABLE + switch_keylight_color4chords(record, keylocation); +#endif + break; + case MI_CH_Cm ... MI_CH_Bm: // Minor Chord + root_note = keycode - MI_CH_Cm + MI_C_2; + // Root, Minor Third, and Fifth Notes + my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7); +#ifdef RGBLIGHT_ENABLE + switch_keylight_color4chords(record, keylocation); +#endif + break; + case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord + root_note = keycode - MI_CH_CDom7 + MI_C_2; + // Major Third, Major Fifth, and Minor Seventh Notes + my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10); +#ifdef RGBLIGHT_ENABLE + switch_keylight_color4chords(record, keylocation); +#endif + break; + case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord + root_note = keycode - MI_CH_CDim7 + MI_C_2; + // Root, Minor Third, and Diminished 5th Note + my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6); +#ifdef RGBLIGHT_ENABLE + switch_keylight_color4chords(record, keylocation); +#endif + break; + +#ifdef RGBLIGHT_ENABLE + case KC_A ... KC_RGUI: // for QWERTY + case KC_GESC: + keylight_manager(record, HSV_GOLDENROD, keylocation); + break; +#endif + // Keycodes on the right side. +#ifdef RGBLIGHT_ENABLE + case MIDI_TONE_MIN ... MIDI_TONE_MAX: // notes on the right side. + keylight_manager(record, HSV_GOLDENROD, keylocation); + break; + // case KC_MUTE: + case FN_MUTE: + keylight_manager(record, HSV_GOLDENROD, keylocation); + break; +#endif + } + return true; +} diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md new file mode 100644 index 0000000000..89139ec1b3 --- /dev/null +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md @@ -0,0 +1 @@ +# A keymap for giabarinaix2 with LEDs. diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk new file mode 100644 index 0000000000..d8dc6a10e7 --- /dev/null +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31. |