We’re using RGB LEDS, where each small package contains 3 separate LEDs: one for red, blue, and green.
Each key has an LED and there are 68 keys on the ANSI layout and 69 keys on the ISO layout.
The underglow has 63 LEDs and they point downward on each side. This makes 132 RGBs for 396 LEDs in total.
Controlling that many LEDs uses a lot of pins!
A common method to make this easier is to use ‘clever’ LEDs that contain some processing power inside (like the WS2812), this makes it easier to drive long chains of LEDs, but the downside is cost. To keep the cost low we’re using plain RGB LEDs with a special driver that can drive a matrix of up to 75 RGB LEDs. It handles the hard parts like current control and refresh rate so we only need to update what color we want and where over an SPI interface.