There are surface mount leds that can easily fit inside keys or besides keys, and they're not expensive (well, they're a bit more expensive compared to those aliexpress but not by much)
TME.EU - White surface mount leds Digikey - White surface mount leds0603 are a bit difficult to solder wires to but with a bit of patience and maybe a magnifying glass it's possible. 0805 is fairly easy. Bigger sizes are super easy. You can just tin solid core wire and the terminals of the led and then place the solid core wire on the terminals and tap with a soldering iron to make the connection and that's it, you have through hole leds.
Here's a couple examples:
0603 : 3.8 cents each in packs of 50:
https://www.tme.eu/en/details/ll-s194pw-w2-1c/smd-white-leds/lucky-light/ LUCKY LIGHT LL-S194PW-W2-1C
LED; SMD; 0603; white cold; 200÷250mcd; 130°; 20mA; 2.8÷3.8V
2216 : 3 cents each in packs of 50:
https://www.tme.eu/en/details/rf-k30ti16ds-ee-y/smd-white-leds/refond/ REFOND RF-K30TI16DS-EE-Y
LED; SMD; PLCC2,2216; white warm; 6÷10lm; 2850-3050K; 90; 120°; 20mA, 2.7v..3.3v
As for how to get most efficiency, your best bet would be to boost the voltage to around 16-24v using a step-up (boost) switching regulator, and then use led driver ICs to control the current.
For example, let's say you go with the 2216 leds above, with a maximum forward voltage of 3.3v
You could go with 2 or 3 8 channel led drivers. This gives you 16 or 24 channels to play with.
With 16 channels, you could have 6 leds per channel for a total of 96 leds but you would need a voltage of minimum 6 x 3.3v = ~20v
With 24 channels, you could have 4 leds per channel for a total of 96 leds, and the voltage is lower at 4 x 3.3v = 13.2v
With 32 channels, you could have 3 leds per channel for a total of 96 leds, and the voltage is lower at 3 x 3.3v = 10v
Most LED drivers will need at least 0.5v..1v above the sum of forward voltages to work properly.
Led drivers with lots of channels are super cheap and super easy to use, basically shift registers. They can be chained together so you send data to just one chip and it's very easy to turn on and off leds individually if you so desire.
You can set the maximum current using a single resistor (for example 10mA) and then some shift registers allow you to send a command to adjust the brightness in either 0..100% or 256 levels ... basically, they reduce the current from maximum set through the resistor.
Here's some examples of such chips :
STP08DP05TTR :
https://www.digikey.com/product-detail/en/stmicroelectronics/STP08DP05TTR/497-6029-1-ND/16320588 channels, up to 100mA per channel and 20v per channel , set max current through a resistor and can adjust "brightness" through a pin.
STP16CPC26PTR
https://www.digikey.com/product-detail/en/stmicroelectronics/STP16CPC26PTR/497-11923-1-ND/2757659STP08DP05TTR
https://www.digikey.com/product-detail/en/stmicroelectronics/STP08DP05TTR/497-6029-1-ND/163205816 channels, up to 90mA per channel and 20v per channel , set max current through a resistor and can adjust "brightness" through a pin.
Here's loads of others with 8, 16 or 24 channels .. most of them can be chained together, or in the case of i2c drivers you can give each a unique i2c address :
link to digikey led drivers[u/url]
Now you need a voltage regulator that would boost the 5v to 11v (for 3 leds per channel) or 14v for (4 leds per channel)
For example, here's a there are step-up (boost) led drivers, which you can power from 5v and can produce up to 12-16v
MIC2295 : [url=https://www.digikey.com/product-detail/en/microchip-technology/MIC2295YD5-TR/576-1080-6-ND/1858303]https://www.digikey.com/product-detail/en/microchip-technology/MIC2295YD5-TR/576-1080-6-ND/1858303(
datasheet)
MP1541 :
https://www.digikey.com/product-detail/en/monolithic-power-systems-inc/MP1541DJ-LF-Z/1589-1858-6-ND/9555235(
datasheet)
MP1542 :
https://www.digikey.com/product-detail/en/monolithic-power-systems-inc/MP1542DK-LF-P/1589-1043-1-ND/5298130(
datasheet)
MP3209 :
https://www.digikey.com/product-detail/en/monolithic-power-systems-inc/MP3209DJ-LF-Z/1589-1906-1-ND/5292266 (
datasheet)
LMR62014 :
https://www.digikey.com/product-detail/en/texas-instruments/LMR62014XMF-NOPB/LMR62014XMF-NOPBDKR-ND/3528062 (
datasheet)
LM2731 (X or Y version) :
https://www.digikey.com/products/en/integrated-circuits-ics/pmic-voltage-regulators-dc-dc-switching-regulators/739?k=lm2731 (
datasheet)
x version is 1.6 mhz, y version is 600 kHz ... lower frequency is more efficient.