feat(RGB Matrix)
* add more RGB features * improve keyboardlayout
This commit is contained in:
parent
b87a3e3088
commit
35f2976ab2
|
|
@ -633,10 +633,56 @@
|
|||
"driver": "ws2812",
|
||||
"split_count": [34,34],
|
||||
"animations": {
|
||||
"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},
|
||||
|
|
|
|||
|
|
@ -11,9 +11,7 @@ enum custom_layers {
|
|||
_EXTRA, // Ebene 5: Media & Boot
|
||||
};
|
||||
|
||||
enum {
|
||||
TD_NEO_QWERTY
|
||||
};
|
||||
enum { TD_NEO_QWERTY };
|
||||
|
||||
// Aliase für bessere Lesbarkeit
|
||||
#define LOWER LT(_LOWER, KC_SPC)
|
||||
|
|
@ -37,22 +35,22 @@ 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, 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,
|
||||
RM_TOGG, RM_NEXT, KC_NUBS, EXTRA, 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
|
||||
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_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, KC_BSPC, RAISE, KC_SPC,
|
||||
KC_LGUI, KC_DEL, KC_RGUI, KC_ENTER,
|
||||
KC_PGUP, NEO, KC_RGUI, KC_PGDN
|
||||
LOWER, RAISE, RAISE, LOWER,
|
||||
KC_TAB, KC_CAPS, KC_NO, KC_ENTER,
|
||||
KC_ESC, NEO, KC_NO, KC_DEL
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
|
|
@ -72,26 +70,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
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_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,
|
||||
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, EXTRA, KC_TRNS, 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),
|
||||
|
|
@ -122,31 +117,92 @@ void keyboard_post_init_user(void) {
|
|||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
||||
// --- 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 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;
|
||||
case 2:
|
||||
rgb_matrix_set_color(i, 255, 0, 0); // Rot
|
||||
break;
|
||||
case 2: // Wenn Layer 2 aktiv ist
|
||||
rgb_matrix_set_color_all( 255, 0, 0); // Rot
|
||||
return true;
|
||||
case 3:
|
||||
rgb_matrix_set_color(i, 0, 255, 0); // Grün
|
||||
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;
|
||||
case 4:
|
||||
rgb_matrix_set_color(i, 0, 0, 255); // Blau
|
||||
break;
|
||||
// Ebene 0: Keine Farbe (standard Effekt läuft weiter)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// --- 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;
|
||||
// }
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue