Or ws2812b leds.With max7219 you will get a choice of 6 colours. With ws2812B you can mix many colours and shades, and wire them in one long chain back to a single Arduino pin. No extra chips, because each led has its own built-in driver chip.
Actually, a MAX7219 can control basic RGB LEDs quite well - with the constraint that you do not have individual intensity control. For keyboard lighting, this will be no concern as you only want basic colours.Now unless you use six-wire RGB LEDs - that is, with both connections separate for each colour - you can only use two LEDs per row or column as you are using 6 of the 8 lines for the colours and the other two cannot partly power the RGB LED, so the MAX7219 can control just 16 RGB LEDs. So it seems that six of them would be fine for your 6 x 16 array, each MAX7219 controlling an entirely separate array of 16 LEDs.
with the constraint that you do not have individual intensity control. For keyboard lighting, this will be no concern as you only want basic colours.