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