LED Custom Palette - GUI tool for an easy configuration of your color layout

Hey there!

I’m excited to announce my latest project hacked during the last two days (extremely hot days in the Czech Republic!). It was crafted basically for my own needs but I hope you might find it useful too.

LED Custom Palette on GitHub

All you need to do is download the binary from release (currently supported Mac and Windows) and apply the mandatory plugin in your keyboard’s firmware. All the information you need is in the readme. I hope you like it.

A screenshot is always worth it more than thousands of words.

I’m really exicted about your feedback!

UPDATE: There is already a new version supporting multiple layers! :rocket:




This looks like exactly what I was looking for. The only problem I am having is I am not an arduino programmer. I don’t know how or where to add what lines of code to update the firmware. I know how to flash the firmware and I see in your documentation how to download and put the files in. I just don’t know where to put the code in the setup window in the firmware. Any help you could give would be helpful. I am a complete noob at this type of programming. :frowning: Thanks,


Hey, great, I hope you’ll find it useful – I have already some ideas in my mind, for example, support multiple layers. But I’d love still hear more feedback. :rocket:

The minimal example is indeed this. https://github.com/jukben/Kaleidoscope-LEDCustomPalette/blob/master/examples/LEDCustomPalette/LEDCustomPalette.ino, you can also check it out my firmware what I’m using (almost the default one https://github.com/jukben/Model01-Firmware).

Basically what you need to do:

  1. Install the plugin https://github.com/jukben/Kaleidoscope-LEDCustomPalette#installing-this-plugin
  2. Add those lines (import plugins) at the top of the firmware
#include "Kaleidoscope-Focus.h"
#include "Kaleidoscope-EEPROM-Settings.h"
#include "Kaleidoscope-LED-Palette-Theme.h"
#include "Kaleidoscope-LEDCustomPalette.h"
  1. register plugins
    // ... 
  1. Setup plugins (in setup phase)

Does it make a sense to you? Let me know.



1 Like

FYI, the Colormap plugin does just that. One of the things I wanted to talk with you about (once I got there on my TODO list) was if you’d be up for figuring out a way how we can merge your LEDCustomPalette and Colormap. The overlap is quite big, the goal very similar…

1 Like

Ok… With your explanation above and your firmware I was able to figure this out and have it running. I only found 1 small problem that you need to fix and everything would be awesome. When I try to add a color to the 6 key it changes both 6 and 7 on the GUI. But it only actually changes the color on 7. 6 is white for some reason no matter what color I actually change it to. I just think in your programming you have the 6 key actually pointing to 7. Other than that small quirk I didn’t find any problems. Thanks so much for this utility.


1 Like

Oh! You are right. I’m going to fix this ASAP. Thank you.

I’m currently working on setting color layout per layer. So it will be even better. Stay tuned.


@algernon: Yeah, you’re right, I haven’t known it actually so I’m about to deprecate my own plugin and use Colormap because that’s exactly what I want. Thanks for the tip – I’ve actually got the inspiration from the Chrysalis. It’s a shame that I haven’t discovered earlier. :smiley:

I just have an issue with Colormap that after you call the command for setting the layout the layer won’t get repainted automatically and you have to trigger it manually – is there something that we can do about it?

1 Like

At some point, that bug should be fixed. If you can patch it, I’m more than happy to merge the fix. I’ll get around to it myself too at some point, but it’s sadly not near the top of my TODO list at the moment :confused:

The trick is going to be there I guess https://github.com/keyboardio/Kaleidoscope-Colormap/blob/master/src/Kaleidoscope/Colormap.cpp#L69 So if I’m calling colormap.layer it seems to work correctly. I’ve also discovered another interesting anomaly – especially when I’m trying to send colormap.map it takes a very long time to get a response. Have you noticed something similar?

1 Like

Hmm… yeah, somewhere there. If we set dirty_, update() will call onActivate(), and that’s where it goes wrong: it doesn’t check dirty_, and only updates when the layer changed. It doesn’t help that we clear dirty_ prior to calling onActivate(). We should probably add a dirty check there, and clear it in onActivate(), rather than update().

Hm… no, I haven’t. I do see long response times when using kaleidoscope-focus.py, but that’s the fault of the script. Other than that I haven’t experienced any unreasonably slow responses yet.

1 Like

Hey everybody I have a great news.

LED Custom Palette is supporting multiple layers.

I’ve refactored the code a bit so I dropped the support of my own C plugin for the firmware and now I’m using only the standard set. That means that you have to edit your firmware once more (check it out the Readme on GitHub for more information). On the other hand I’ve included the example firmware so I guess it should be even more easy than before.

@Jjonesiii The bug you have found was also fixed. :muscle:




Hi @jukben,

I just fetched the latest Model01 firmware from the keyboardio repo, and your instructions from the README don’t work anymore.

Focus.addHook() doesn’t exist anymore it seems… Can you help me figure out what the proper calls should be to use the latest keyboardio firmware? (I read it was supposed to be compatible since you now use the Colormap plugin)


Hi @Goeland86,

yeah, I’ve just seen similar issue, check this out https://github.com/jukben/keyboardio-led-custom-palette/issues/5

My firmware is actually deprecated, wouldn’t you mind to send a PR fixing that? – I actually sold my keyboard, it didn’t fit into my workflow.

Try this one please: https://github.com/bjarkegosvig/Model01-Firmware/blob/ledPalette/Model01-Firmware.ino If it works, let’s add it into the repo. :+1:

Related PR: https://github.com/jukben/keyboardio-led-custom-palette/pull/7


1 Like

@jukben I confirm - the .ino model you point me to works.

I adapted his to what I wanted in the default plugins list, and I’m happy to say it’s quite nice figuring out that it was only a USB port that crashed, and not the Model01 that went on the fritz :sweat_smile: