From a8b19aba7d750c0580a3d7dda51fcce7e24a18d5 Mon Sep 17 00:00:00 2001 From: "Peter J. A. Cock" Date: Fri, 18 Jul 2025 17:05:36 +0100 Subject: [PATCH 01/17] Try using the controller's built-in WS2812 RGB LED on GP23 --- keyboards/tutte_coxeter_36k/config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index cec78e4..ef77e7d 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -1 +1,4 @@ #define LED_CAPS_LOCK_PIN GP25 + +#define WS2812_DI_PIN GP23 +#define WS2812_LED_COUNT 1 From 7fce5a0c1748203149e504e386438bc988608aa9 Mon Sep 17 00:00:00 2001 From: "Peter J. A. Cock" Date: Fri, 18 Jul 2025 17:12:29 +0100 Subject: [PATCH 02/17] Explicitly enable RGB in Vial --- keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk b/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk index 4f7618e..7a030d4 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk +++ b/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk @@ -1,2 +1,4 @@ VIA_ENABLE = yes VIAL_ENABLE = yes + +RGBLIGHT_ENABLE = yes From bc5e9b4ea2e049cd2960dbc3f5ab846dfbfb3730 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 17:18:27 +0100 Subject: [PATCH 03/17] try alternative definition Was failing to compile with: ``` Compiling: quantum/rgblight/rgblight_drivers.c In file included from quantum/rgblight/rgblight_drivers.c:7: drivers/led/ws2812.h:60: error: "WS2812_LED_COUNT" redefined [-Werror] # define WS2812_LED_COUNT RGBLIGHT_LED_COUNT In file included from : ./keyboards/tutte_coxeter_36k/config.h:4: note: this is the location of the previous definition #define WS2812_LED_COUNT 1 ``` --- keyboards/tutte_coxeter_36k/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index ef77e7d..7eac215 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -1,4 +1,4 @@ #define LED_CAPS_LOCK_PIN GP25 #define WS2812_DI_PIN GP23 -#define WS2812_LED_COUNT 1 +#define RGBLIGHT_LED_COUNT 1 From 8d6d2be1ce2b9dadf20a701e4ba526eabb55429d Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 17:45:47 +0100 Subject: [PATCH 04/17] WS2812_DRIVER = vendor --- keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk b/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk index 7a030d4..813101a 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk +++ b/keyboards/tutte_coxeter_36k/keymaps/vial/rules.mk @@ -2,3 +2,4 @@ VIA_ENABLE = yes VIAL_ENABLE = yes RGBLIGHT_ENABLE = yes +WS2812_DRIVER = vendor From a27ddbe204ab28250bac4fbdf66933a6bd6f1bd2 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 18:03:17 +0100 Subject: [PATCH 05/17] RGBLIGHT_EFFECT_BREATHING --- keyboards/tutte_coxeter_36k/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 7eac215..de18472 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -2,3 +2,4 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 +#define RGBLIGHT_EFFECT_BREATHING From 0a63d281104d520396f404726de4f543c6482d04 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 18:15:54 +0100 Subject: [PATCH 06/17] #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING --- keyboards/tutte_coxeter_36k/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index de18472..08e3da4 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,3 +3,4 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING From 4fd0568aeb922b4c82558025bb3efddf31537776 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 19:19:53 +0100 Subject: [PATCH 07/17] try this --- keyboards/tutte_coxeter_36k/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 08e3da4..d6f97b4 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,4 +3,5 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_EFFECT_BREATHING +#undef RGBLIGHT_DEFAULT_MODE #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING From 0f697492c86e95c790efb5c42ef551b9f756d0c9 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 19:21:12 +0100 Subject: [PATCH 08/17] #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING --- keyboards/tutte_coxeter_36k/config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index d6f97b4..37046a0 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,5 +3,4 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_EFFECT_BREATHING -#undef RGBLIGHT_DEFAULT_MODE -#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING From d73affcf80543f73ceba1a3a00d3b53d999652be Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 22:58:20 +0100 Subject: [PATCH 09/17] Try purple start and rainbow --- keyboards/tutte_coxeter_36k/config.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 37046a0..8a1f13b 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -2,5 +2,6 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING +#define RGBLIGHT_DEFAULT_HUE 180 +#define RGBLIGHT_RAINBOW_MOOD +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD From 89e5dc55d405fb08293984ea0e7cddaa827be27f Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 23:03:36 +0100 Subject: [PATCH 10/17] fix RGBLIGHT_EFFECT_RAINBOW_MOOD --- keyboards/tutte_coxeter_36k/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 8a1f13b..3a0c0b9 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,5 +3,5 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_DEFAULT_HUE 180 -#define RGBLIGHT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_MOOD #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD From 318b4c8e87db8fb42e957e7df3a90626970603a9 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Fri, 18 Jul 2025 23:09:38 +0100 Subject: [PATCH 11/17] Try just non-red hue --- keyboards/tutte_coxeter_36k/config.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 3a0c0b9..319273a 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,5 +3,3 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_DEFAULT_HUE 180 -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD From 67cdbfc2a3f755a066a02a9384d77afd71ca247c Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 11:38:18 +0100 Subject: [PATCH 12/17] Setup Lighting Layers in keymap.c https://docs.qmk.fm/features/rgblight#lighting-layers --- .../keymaps/default/keymap.c | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c index 6503e33..99096dd 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c +++ b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c @@ -28,3 +28,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DEL, KC_TAB, KC_SPC, KC_ENT, KC_ESC, KC_BSPC ) }; + +// Light our single RGB LED blue when caps lock is active. +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_BLUE} // Light 1 LEDs, starting with LED 1 +); +// Light our single RGB LED cyan when keyboard layer 1 is active +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_CYAN} +); +// Light our single RGB LED purple when keyboard layer 2 is active +const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_PURPLE} +); +// Light our single RGB LED green when keyboard layer 3 is active +const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_GREEN} +); +// etc... + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_layer1_layer, // Overrides caps lock layer + my_layer2_layer, // Overrides other layers + my_layer3_layer // Overrides other layers +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} From a466d9f90c59e469709e5d9392a07bbb6b135e4c Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 16:00:33 +0100 Subject: [PATCH 13/17] #define RGBLIGHT_LAYERS in config.h --- keyboards/tutte_coxeter_36k/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/tutte_coxeter_36k/config.h b/keyboards/tutte_coxeter_36k/config.h index 319273a..fa1e741 100644 --- a/keyboards/tutte_coxeter_36k/config.h +++ b/keyboards/tutte_coxeter_36k/config.h @@ -3,3 +3,4 @@ #define WS2812_DI_PIN GP23 #define RGBLIGHT_LED_COUNT 1 #define RGBLIGHT_DEFAULT_HUE 180 +#define RGBLIGHT_LAYERS From b9ddcdd7d4c30c9676457b15b3e0d66b43a428d5 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 16:10:59 +0100 Subject: [PATCH 14/17] Create rules.mk for default keymap (for RGB) --- keyboards/tutte_coxeter_36k/keymaps/default/rules.mk | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 keyboards/tutte_coxeter_36k/keymaps/default/rules.mk diff --git a/keyboards/tutte_coxeter_36k/keymaps/default/rules.mk b/keyboards/tutte_coxeter_36k/keymaps/default/rules.mk new file mode 100644 index 0000000..fccaeff --- /dev/null +++ b/keyboards/tutte_coxeter_36k/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes +WS2812_DRIVER = vendor From 25751b1b127b8a7f41e716150e253b1955b65361 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 16:16:02 +0100 Subject: [PATCH 15/17] Are the LEDs counted from zero? --- keyboards/tutte_coxeter_36k/keymaps/default/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c index 99096dd..c313552 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c +++ b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c @@ -31,19 +31,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Light our single RGB LED blue when caps lock is active. const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 1, HSV_BLUE} // Light 1 LEDs, starting with LED 1 + {0, 1, HSV_BLUE} // Light 1 LEDs, starting with LED 1 ); // Light our single RGB LED cyan when keyboard layer 1 is active const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 1, HSV_CYAN} + {0, 1, HSV_CYAN} ); // Light our single RGB LED purple when keyboard layer 2 is active const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 1, HSV_PURPLE} + {0, 1, HSV_PURPLE} ); // Light our single RGB LED green when keyboard layer 3 is active const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 1, HSV_GREEN} + {0, 1, HSV_GREEN} ); // etc... From 4d9f5489f38d6a74e9c6324fd8288d898a66849a Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 16:47:37 +0100 Subject: [PATCH 16/17] Add RGB for layer 0; add RGB switching --- .../keymaps/default/keymap.c | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c index c313552..a2a7403 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c +++ b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c @@ -33,10 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 1, HSV_BLUE} // Light 1 LEDs, starting with LED 1 ); -// Light our single RGB LED cyan when keyboard layer 1 is active -const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( +// Light our single RGB LED cyan when keyboard layer 0 is active +const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 1, HSV_CYAN} ); +// Light our single RGB LED red when keyboard layer 1 is active +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_RED} +); // Light our single RGB LED purple when keyboard layer 2 is active const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 1, HSV_PURPLE} @@ -50,7 +54,8 @@ const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( // Now define the array of layers. Later layers take precedence const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( my_capslock_layer, - my_layer1_layer, // Overrides caps lock layer + my_layer0_layer, // Overrides caps lock layer + my_layer2_layer, // Overrides other layers my_layer2_layer, // Overrides other layers my_layer3_layer // Overrides other layers ); @@ -59,3 +64,18 @@ void keyboard_post_init_user(void) { // Enable the LED layers rgblight_layers = my_rgb_layers; } + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + + +layer_state_t default_layer_state_set_user(layer_state_t state) { + // Light up based on the layer + rgblight_set_layer_state(1, layer_state_cmp(state, 0)); // Layer 0 active + rgblight_set_layer_state(2, layer_state_cmp(state, 1)); // Layer 1 active + rgblight_set_layer_state(3, layer_state_cmp(state, 2)); // Layer 2 active + rgblight_set_layer_state(4, layer_state_cmp(state, 3)); // Layer 3 active + return state; +} From f40a176fe635ec85887a823dce40235a8e8bf5b9 Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 19 Jul 2025 16:57:01 +0100 Subject: [PATCH 17/17] Take out layer 0 which was overiding CAPS LOCK --- keyboards/tutte_coxeter_36k/keymaps/default/keymap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c index a2a7403..04a177b 100644 --- a/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c +++ b/keyboards/tutte_coxeter_36k/keymaps/default/keymap.c @@ -54,8 +54,7 @@ const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( // Now define the array of layers. Later layers take precedence const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( my_capslock_layer, - my_layer0_layer, // Overrides caps lock layer - my_layer2_layer, // Overrides other layers + my_layer1_layer, // Overrides caps lock layer my_layer2_layer, // Overrides other layers my_layer3_layer // Overrides other layers ); @@ -73,7 +72,6 @@ bool led_update_user(led_t led_state) { layer_state_t default_layer_state_set_user(layer_state_t state) { // Light up based on the layer - rgblight_set_layer_state(1, layer_state_cmp(state, 0)); // Layer 0 active rgblight_set_layer_state(2, layer_state_cmp(state, 1)); // Layer 1 active rgblight_set_layer_state(3, layer_state_cmp(state, 2)); // Layer 2 active rgblight_set_layer_state(4, layer_state_cmp(state, 3)); // Layer 3 active