With this plugin, any active modifier on the keyboard will have the LED under it highlighted. No matter how the modifier got activated (a key press, a macro, anything else), the coloring will apply. Layer shift keys and OneShot layer keys count as modifiers as far as the plugin is concerned.

Using the plugin

To use the plugin, one needs to include the header, and activate the effect. It is also possible to use a custom color instead of the white default.

#include <Kaleidoscope.h>
#include <Kaleidoscope-LEDControl.h>
#include <Kaleidoscope-LED-ActiveModColor.h>


void setup () {
  Kaleidoscope.setup ();

  ActiveModColorEffect.highlight_color = CRGB(0x00, 0xff, 0xff);

It is recommended to place the activation (the KALEIDOSCOPE_INIT_PLUGINS parameter) of the plugin last, so that it can reliably override any other plugins that may work with the LEDs, and apply the highlight over those.

Plugin properties

The plugin provides the ActiveModColorEffect object, which has the following configuration methods. These methods all take a cRGB object, which can be written as CRGB(r, g, b), where r, g, and b are all 8-bit integers (0-255). For example, CRGB(50, 0, 50) would be a purple-ish color.


Sets the color (a cRGB object) to use for highlighting normal modifier keys and layer-shift keys. Defaults to a white color.


Sets the color (a cRGB object) to use for highlighting active one-shot keys. These are the keys that will time out or deactivate when a subsequent key is pressed. Defaults to a yellow color.


Sets the color (a cRGB object) to use for highlighting “sticky” one-shot keys. These keys will remain active until they are pressed again. Defaults to a red color.

Plugin methods

The ActiveModColorEffect object provides the following methods:


Can be used to enable or disable the highlighting of normal modifiers. Defaults to true.


The ActiveModColorEffect plugin doesn’t require that either OneShot or OneShotMetaKeys plugins are registered with KALEIDOSCOPE_INIT_PLUGINS() in order to work, but it does depend on their header files.

Further reading

Starting from the example is the recommended way of getting started with the plugin.