Gergely Nagy
8e4bfac703
|
7 years ago | |
---|---|---|
examples/Colormap | 7 years ago | |
src | 7 years ago | |
.gitignore | 8 years ago | |
.travis.yml | 8 years ago | |
COPYING | 8 years ago | |
Makefile | 7 years ago | |
README.md | 7 years ago | |
library.properties | 8 years ago |
README.md
Kaleidoscope-Colormap
The Colormap
extension provides an easier way to set up a different - static -
color map per-layer. This means that we can set up a map of colors for each key,
on a per-layer basis, and whenever a layer becomes active, the color map for
that layer is applied. Colors are picked from a 16-color palette, provided by
the LED-Palette-Theme plugin. The color map is stored in
EEPROM
, and can be easily changed via the Focus plugin, which
also provides palette editing capabilities.
Using the extension
To use the extension, include the header, tell it the number of layers you have,
register the Focus
hooks, and it will do the rest.
#include <Kaleidoscope.h>
#include <Kaleidoscope-EEPROM-Settings.h>
#include <Kaleidoscope-Colormap.h>
#include <Kaleidoscope-Focus.h>
#include <Kaleidoscope-LED-Palette-Theme.h>
KALEIDOSCOPE_INIT_PLUGINS(EEPROMSettings,
LEDPaletteTheme,
ColormapEffect,
Focus);
void setup(void) {
Kaleidoscope.setup();
ColormapEffect.max_layers(1);
Focus.addHook(FOCUS_HOOK_LEDPALETTETHEME);
Focus.addHook(FOCUS_HOOK_COLORMAP);
EEPROMSettings.seal();
}
Plugin methods
The extension provides an ColormapEffect
singleton object, with a single method:
.max_layers(max)
Tells the extension to reserve space in EEPROM for up to
max
layers. Can only be called once, any subsequent call will be a no-op.
Focus commands
The plugin provides a single Focus
hook, FOCUS_HOOK_COLORMAP
, implementing
the following command:
colormap.map
Without arguments, prints the color map: palette indexes for all layers.
With arguments, updates the color map with new indexes. One does not need to give the full map, the plugin will process as many arguments as available, and ignore anything past the last key on the last layer (as set by the
.max_layers()
method).
Dependencies
Further reading
Starting from the example is the recommended way of getting started with the plugin.