diff --git a/keyboards/handwired/dactyl_manuform/5x6_68_1/keyboard.json b/keyboards/handwired/dactyl_manuform/5x6_68_1/keyboard.json index 09c3e1a390..279c30a694 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_68_1/keyboard.json +++ b/keyboards/handwired/dactyl_manuform/5x6_68_1/keyboard.json @@ -633,10 +633,56 @@ "driver": "ws2812", "split_count": [34,34], "animations": { - "breathing": false, - "cycle_all": false, - "solid_reactive_nexus": false, - "splash": true, + "solid_color" : false, + "alphas_mods" : false, + "gradient_up_down" : false, + "gradient_left_right" : false, + "breathing" : false, + "band_sat" : false, + "band_val" : false, + "band_pinwheel_sat" : false, + "band_pinwheel_val" : false, + "band_spiral_sat" : false, + "band_spiral_val" : false, + "cycle_all" : false, + "cycle_left_right" : false, + "cycle_up_down" : false, + "cycle_out_in" : true, + "cycle_out_in_dual" : false, + "rainbow_moving_chevron" : false, + "cycle_pinwheel" : false, + "cycle_spiral" : false, + "dual_beacon" : false, + "rainbow_beacon" : false, + "rainbow_pinwheels" : false, + "flower_blooming" : false, + "raindrops" : false, + "jellybean_raindrops" : false, + "hue_breathing" : false, + "hue_pendulum" : false, + "hue_wave" : false, + "pixel_fractal" : false, + "pixel_flow" : false, + "pixel_rain" : false, + "typing_heatmap" : false, + "digital_rain" : false, + "solid_reactive_simple" : false, + "solid_reactive" : false, + "solid_reactive_wide" : false, + "solid_reactive_multiwide" : false, + "solid_reactive_cross" : false, + "solid_reactive_multicross" : false, + "solid_reactive_nexus" : false, + "solid_reactive_multinexus" : false, + "splash" : true, + "multisplash" : true, + "solid_splash" : false, + "solid_multisplash" : false, + "starlight" : false, + "starlight_smooth" : false, + "starlight_dual_hue" : false, + "starlight_dual_sat" : false, + "riverflow" : false, }, "default": { "animation": "splash", @@ -644,12 +690,12 @@ }, "react_on_keyup": false, "layout": [ - {"matrix": [0, 5], "x": 95, "y": 0, "flags": 4}, - {"matrix": [0, 4], "x": 76, "y": 0, "flags": 4}, - {"matrix": [0, 3], "x": 57, "y": 0, "flags": 4}, - {"matrix": [0, 2], "x": 38, "y": 0, "flags": 4}, - {"matrix": [0, 1], "x": 19, "y": 0, "flags": 4}, - {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 95, "y": 0, "flags": 5}, + {"matrix": [0, 4], "x": 76, "y": 0, "flags": 5}, + {"matrix": [0, 3], "x": 57, "y": 0, "flags": 5}, + {"matrix": [0, 2], "x": 38, "y": 0, "flags": 5}, + {"matrix": [0, 1], "x": 19, "y": 0, "flags": 5}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 5}, {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, {"matrix": [1, 1], "x": 19, "y": 16, "flags": 4}, {"matrix": [1, 2], "x": 38, "y": 16, "flags": 4}, @@ -668,12 +714,12 @@ {"matrix": [3, 3], "x": 57, "y": 48, "flags": 4}, {"matrix": [3, 4], "x": 76, "y": 48, "flags": 4}, {"matrix": [3, 5], "x": 95, "y": 48, "flags": 4}, - {"matrix": [4, 5], "x": 95, "y": 64, "flags": 4}, - {"matrix": [5, 5], "x": 114, "y": 64, "flags": 4}, - {"matrix": [5, 3], "x": 133, "y": 64, "flags": 4}, - {"matrix": [5, 2], "x": 152, "y": 64, "flags": 4}, - {"matrix": [5, 4], "x": 171, "y": 64, "flags": 4}, - {"matrix": [4, 4], "x": 76, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 95, "y": 64, "flags": 12}, + {"matrix": [5, 5], "x": 114, "y": 64, "flags": 12}, + {"matrix": [5, 3], "x": 133, "y": 64, "flags": 12}, + {"matrix": [5, 2], "x": 152, "y": 64, "flags": 12}, + {"matrix": [5, 4], "x": 171, "y": 64, "flags": 12}, + {"matrix": [4, 4], "x": 76, "y": 64, "flags": 12}, {"matrix": [4, 3], "x": 57, "y": 64, "flags": 4}, {"matrix": [4, 2], "x": 38, "y": 64, "flags": 4}, {"matrix": [4, 1], "x": 19, "y": 64, "flags": 4}, @@ -681,7 +727,7 @@ /* Reihe 6: Von links nach rechts (Col 0 bis 5) */ - {"matrix": [6, 0], "x": 128, "y": 0, "flags": 4}, {"matrix": [6, 1], "x": 147, "y": 0, "flags": 4}, {"matrix": [6, 2], "x": 166, "y": 0, "flags": 4}, {"matrix": [6, 3], "x": 185, "y": 0, "flags": 4}, {"matrix": [6, 4], "x": 204, "y": 0, "flags": 4}, {"matrix": [6, 5], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 128, "y": 0, "flags": 5}, {"matrix": [6, 1], "x": 147, "y": 0, "flags": 5}, {"matrix": [6, 2], "x": 166, "y": 0, "flags": 5}, {"matrix": [6, 3], "x": 185, "y": 0, "flags": 5}, {"matrix": [6, 4], "x": 204, "y": 0, "flags": 5}, {"matrix": [6, 5], "x": 224, "y": 0, "flags": 5}, /* Reihe 7: Rückwärts von rechts nach links (Col 5 bis 0) */ {"matrix": [7, 5], "x": 224, "y": 16, "flags": 4}, {"matrix": [7, 4], "x": 204, "y": 16, "flags": 4}, {"matrix": [7, 3], "x": 185, "y": 16, "flags": 4}, {"matrix": [7, 2], "x": 166, "y": 16, "flags": 4}, {"matrix": [7, 1], "x": 147, "y": 16, "flags": 4}, {"matrix": [7, 0], "x": 128, "y": 16, "flags": 4}, @@ -693,12 +739,12 @@ {"matrix": [9, 5], "x": 224, "y": 48, "flags": 4}, {"matrix": [9, 4], "x": 204, "y": 48, "flags": 4}, {"matrix": [9, 3], "x": 185, "y": 48, "flags": 4}, {"matrix": [9, 2], "x": 166, "y": 48, "flags": 4}, {"matrix": [9, 1], "x": 147, "y": 48, "flags": 4}, {"matrix": [9, 0], "x": 128, "y": 48, "flags": 4}, /* Thumb Cluster & Sonderpfad (Deine spezifische Reihenfolge) */ - {"matrix": [10, 0], "x": 128, "y": 80, "flags": 4}, - {"matrix": [11, 0], "x": 140, "y": 96, "flags": 4}, - {"matrix": [11, 2], "x": 140, "y": 112, "flags": 4}, - {"matrix": [11, 3], "x": 150, "y": 112, "flags": 4}, - {"matrix": [11, 1], "x": 150, "y": 96, "flags": 4}, - {"matrix": [10, 1], "x": 147, "y": 80, "flags": 4}, + {"matrix": [10, 0], "x": 128, "y": 80, "flags": 12}, + {"matrix": [11, 0], "x": 140, "y": 96, "flags": 12}, + {"matrix": [11, 2], "x": 140, "y": 112, "flags": 12}, + {"matrix": [11, 3], "x": 150, "y": 112, "flags": 12}, + {"matrix": [11, 1], "x": 150, "y": 96, "flags": 12}, + {"matrix": [10, 1], "x": 147, "y": 80, "flags": 12}, {"matrix": [10, 2], "x": 166, "y": 64, "flags": 4}, {"matrix": [10, 3], "x": 185, "y": 64, "flags": 4}, {"matrix": [10, 4], "x": 204, "y": 64, "flags": 4}, diff --git a/keyboards/handwired/dactyl_manuform/5x6_68_1/keymaps/crimsen/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_68_1/keymaps/crimsen/keymap.c index ef129cea55..bc7025a8cb 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_68_1/keymaps/crimsen/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6_68_1/keymaps/crimsen/keymap.c @@ -4,16 +4,14 @@ #include QMK_KEYBOARD_H enum custom_layers { - _NEO, // Ebene 0: Basis 1: Neo2 Hauptlayout + _NEO, // Ebene 0: Basis 1: Neo2 Hauptlayout _QWERTY, // Ebene 1: Basis 2: QWERTY/QWERTZ - _LOWER, // Ebene 3: Sonderzeichen - _RAISE, // Ebene 4: Navigation & Nummernblock - _EXTRA, // Ebene 5: Media & Boot + _LOWER, // Ebene 3: Sonderzeichen + _RAISE, // Ebene 4: Navigation & Nummernblock + _EXTRA, // Ebene 5: Media & Boot }; -enum { - TD_NEO_QWERTY -}; +enum { TD_NEO_QWERTY }; // Aliase für bessere Lesbarkeit #define LOWER LT(_LOWER, KC_SPC) @@ -24,74 +22,72 @@ enum { #define HOME_U LCTL_T(KC_U) #define HOME_I LALT_T(KC_I) -#define HOME_A LGUI_T(KC_A) // Super/Win für Hyprland +#define HOME_A LGUI_T(KC_A) // Super/Win für Hyprland #define HOME_E LSFT_T(KC_E) #define HOME_N LSFT_T(KC_N) -#define HOME_R RGUI_T(KC_R) // Super/Win für Hyprland +#define HOME_R RGUI_T(KC_R) // Super/Win für Hyprland #define HOME_T LALT_T(KC_T) #define HOME_D LCTL_T(KC_D) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_NEO] = LAYOUT( - KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, - KC_NO, KC_X, KC_V, KC_L, KC_C, KC_W, KC_K, KC_H, KC_G, KC_F, KC_Q, KC_MINS, - KC_CAPS, HOME_U, HOME_I, HOME_A, HOME_E, KC_O, KC_S, HOME_N, HOME_R, HOME_T, HOME_D, KC_Z, - KC_NO, KC_LBRC, KC_SCLN, KC_QUOT, KC_P, KC_Y, KC_B, KC_M, KC_COMM, KC_DOT, KC_J, KC_NO, - RM_TOGG, RM_NEXT, KC_NUBS, KC_NO, TD(TD_NEO_QWERTY), EXTRA, RM_NEXT, RM_TOGG, - LOWER, RAISE, RAISE, LOWER, - KC_TAB, KC_NO, KC_NO, KC_ENTER, - KC_ESC, QK_BOOT, QK_BOOT, KC_DEL + [_NEO] = LAYOUT( + KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, + KC_NO, KC_X, KC_V, KC_L, KC_C, KC_W, KC_K, KC_H, KC_G, KC_F, KC_Q, KC_MINS, + KC_NO, HOME_U, HOME_I, HOME_A, HOME_E, KC_O, KC_S, HOME_N, HOME_R, HOME_T, HOME_D, KC_Z, + KC_NO, KC_LBRC, KC_SCLN, KC_QUOT, KC_P, KC_Y, KC_B, KC_M, KC_COMM, KC_DOT, KC_J, KC_NO, + RM_TOGG, RM_NEXT, KC_NUBS, EXTRA, TD(TD_NEO_QWERTY), EXTRA, RM_NEXT, RM_TOGG, + LOWER, RAISE, RAISE, LOWER, + KC_TAB, KC_CAPS, KC_NO, KC_ENTER, + KC_ESC, KC_NO, KC_NO, KC_DEL ), [_QWERTY] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, - 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - 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_LCTL, KC_LALT, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_RALT, KC_RCTL, - LOWER, KC_BSPC, RAISE, KC_SPC, - KC_LGUI, KC_DEL, KC_RGUI, KC_ENTER, - KC_PGUP, NEO, KC_RGUI, KC_PGDN + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + 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_CAPS, LCTL_T(KC_A), LALT_T(KC_S), LGUI_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN), KC_QUOT, + 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_LCTL, KC_LALT, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_RALT, KC_RCTL, + LOWER, RAISE, RAISE, LOWER, + KC_TAB, KC_CAPS, KC_NO, KC_ENTER, + KC_ESC, NEO, KC_NO, KC_DEL ), [_LOWER] = LAYOUT( - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, LSFT(KC_SLSH), RALT(KC_8), RALT(KC_9), KC_GRV, KC_EXLM, KC_NUBS, LSFT(KC_NUBS), LSFT(KC_0), LSFT(KC_6), KC_TRNS, - KC_TRNS, RALT(KC_MINS), KC_AMPR, RALT(KC_7), RALT(KC_0), LSFT(KC_RBRC), KC_UNDS, KC_ASTR, KC_LPRN, KC_SLSH, KC_GT, RALT(KC_Q), - KC_TRNS, KC_BSLS, KC_DLR, RALT(KC_NUBS), RALT(KC_RBRC), KC_PLUS, KC_RBRC, KC_PERC, KC_AT, KC_PIPE, KC_LT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LOWER, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, LSFT(KC_SLSH), RALT(KC_8), RALT(KC_9), KC_GRV, KC_EXLM, KC_NUBS, LSFT(KC_NUBS), LSFT(KC_0), LSFT(KC_6), KC_TRNS, + KC_TRNS, RALT(KC_MINS), KC_AMPR, RALT(KC_7), RALT(KC_0), LSFT(KC_RBRC), KC_UNDS, KC_ASTR, KC_LPRN, KC_SLSH, KC_GT, RALT(KC_Q), + KC_TRNS, KC_BSLS, KC_DLR, RALT(KC_NUBS), RALT(KC_RBRC), KC_PLUS, KC_RBRC, KC_PERC, KC_AT, KC_PIPE, KC_LT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LOWER, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_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_TRNS, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NUM, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PAST, - KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, KC_INS, KC_TRNS, KC_DOT, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PEQL, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT + 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_TRNS, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NUM, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PAST, + KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, KC_INS, KC_TRNS, KC_DOT, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PEQL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT ), [_EXTRA] = LAYOUT( - QK_BOOT, QK_RBT, KC_TRNS, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_BRIU, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_BRID, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, MS_WHLL, MS_WHLD, MS_WHLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EXTRA, KC_TRNS, KC_TRNS, KC_TRNS, - KC_LGUI, KC_TRNS, KC_TRNS, MS_BTN1, - KC_TRNS, MS_BTN3, KC_TRNS, MS_BTN2, - MS_BTN2, MS_BTN1, KC_TRNS, MS_BTN3 + QK_BOOT, QK_RBT, KC_TRNS, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_BRIU, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_BRID, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_WHLL, MS_WHLD, MS_WHLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LGUI, KC_TRNS, KC_TRNS, MS_BTN1, + KC_TRNS, MS_BTN3, KC_TRNS, MS_BTN2, + MS_BTN2, MS_BTN1, KC_TRNS, MS_BTN3 ), - }; - void dance_qwerty_fn(tap_dance_state_t *state, void *user_data) { if (state->count >= 2) { default_layer_set(1UL << _QWERTY); @@ -99,7 +95,6 @@ void dance_qwerty_fn(tap_dance_state_t *state, void *user_data) { } } - tap_dance_action_t tap_dance_actions[] = { // [TD_NEO_QWERTY] = ACTION_TAP_DANCE_DOUBLE(KC_TRNS, DF(_QWERTY)) [TD_NEO_QWERTY] = ACTION_TAP_DANCE_FN(dance_qwerty_fn), @@ -107,8 +102,8 @@ tap_dance_action_t tap_dance_actions[] = { uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case LOWER: // Deine Definition für LT(_LOWER, KC_SPC) - case RAISE: // Deine Definition für LT(_RAISE, KC_BSPC) + case LOWER: // Deine Definition für LT(_LOWER, KC_SPC) + case RAISE: // Deine Definition für LT(_RAISE, KC_BSPC) return 175; // Viel kürzerer Wert für den Daumen default: return 250; // Deine sicheren 250ms für die Home Row Mods @@ -116,37 +111,98 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { } void keyboard_post_init_user(void) { - // Schaltet Num Lock ein, falls es beim Start aus ist - if (!host_keyboard_led_state().num_lock) { - tap_code(KC_NUM); - } + // Schaltet Num Lock ein, falls es beim Start aus ist + if (!host_keyboard_led_state().num_lock) { + tap_code(KC_NUM); + } } +// bool rgb_matrix_indicators_user(void) { +// uint8_t layer = get_highest_layer(layer_state); +// +// switch (layer) { +// case 1: // Wenn Layer 1 aktiv ist +// // Setze LED an Index 0 auf Blau (RGB: 0, 0, 255) +// rgb_matrix_set_color_all(0, 0, 255); +// return true; +// break; +// case 2: // Wenn Layer 2 aktiv ist +// rgb_matrix_set_color_all(255, 0, 0); // Rot +// return true; +// break; +// case 3: // Wenn Layer 2 aktiv ist +// rgb_matrix_set_color_all(0, 255, 0); // Rot +// return true; +// break; +// case 4: // Wenn Layer 2 aktiv ist +// rgb_matrix_set_color_all(0, 0, 255); // Rot +// return true; +// break; +// } +// return false; +// } +uint8_t safe_add(uint8_t a, uint8_t b) { + uint16_t res = a + b; + return (res > 255) ? 255 : (uint8_t)res; +} bool rgb_matrix_indicators_user(void) { + + // --- 2. MODIFIER ADDITION --- + // Wir definieren Grundfarben für die Modifier + // Shift = Rot (255,0,0), Ctrl = Blau (0,0,255), Alt = Grün (0,255,0) + uint8_t r = 0, g = 0, b = 0; + uint8_t mods = get_mods(); + + if (mods & MOD_MASK_SHIFT) { r = safe_add(r, 255); } + if (mods & MOD_MASK_CTRL) { b = safe_add(b, 255); } + if (mods & MOD_MASK_ALT) { g = safe_add(g, 255); } + + // Wenn irgendein Mod gedrückt ist, färben wir alle MODIFIER-LEDs (Flag 2) + if (r > 0 || g > 0 || b > 0) { + for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + if (g_led_config.flags[i] & LED_FLAG_MODIFIER) { + rgb_matrix_set_color(i, r, g, b); + } + } + } + uint8_t layer = get_highest_layer(layer_state); - switch (layer) { - case 1: // Wenn Layer 1 aktiv ist - // Setze LED an Index 0 auf Blau (RGB: 0, 0, 255) - rgb_matrix_set_color_all( 0, 0, 255); - return true; - break; - case 2: // Wenn Layer 2 aktiv ist - rgb_matrix_set_color_all( 255, 0, 0); // Rot - return true; - break; - case 3: // Wenn Layer 2 aktiv ist - rgb_matrix_set_color_all( 0, 255, 0); // Rot - return true; - break; - case 4: // Wenn Layer 2 aktiv ist - rgb_matrix_set_color_all( 0, 0, 255); // Rot - return true; - break; + // --- 1. LAYER INDICATORS --- + // Wir färben alle LEDs, die als KEYLIGHT (Flag 4) markiert sind + for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + if (g_led_config.flags[i] & LED_FLAG_INDICATOR) { + switch (layer) { + case 2: + rgb_matrix_set_color(i, 255, 0, 0); // Rot + break; + case 3: + rgb_matrix_set_color(i, 0, 255, 0); // Grün + break; + case 4: + rgb_matrix_set_color(i, 0, 0, 255); // Blau + break; + // Ebene 0: Keine Farbe (standard Effekt läuft weiter) + } + } } + // --- 3. STATUS INDICATORS (LOCK KEYS) --- + // Diese haben höchste Priorität und überschreiben einzelne LEDs + + // NumLock (wenn NICHT aktiv -> Violett) + if (!host_keyboard_led_state().num_lock) { + // Hier musst du den Index deiner NumLock LED einsetzen (Beispiel: 10) + rgb_matrix_set_color(0, 255, 0, 255); + } + + // CapsLock (wenn aktiv -> Türkis) + if (host_keyboard_led_state().caps_lock) { + // Hier musst du den Index deiner CapsLock LED einsetzen (Beispiel: 11) + rgb_matrix_set_color(34, 0, 255, 255); + } + return false; } - // #ifdef QUANTUM_PAINTER_ENABLE // static painter_device_t display; // @@ -202,3 +258,4 @@ bool rgb_matrix_indicators_user(void) { // } // return true; // } +