comment much of the default sketch
This commit is contained in:
parent
0e670bc7ab
commit
a10ddeaa50
@ -7,26 +7,68 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These #include directives pull in the Kaleidoscope firmware core,
|
||||||
|
* as well as the Kaleidoscope plugins we use in the Model 01's firmware
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// The Kaleidoscope core
|
||||||
#include "Kaleidoscope.h"
|
#include "Kaleidoscope.h"
|
||||||
|
|
||||||
|
// Support for keys that move the mouse
|
||||||
#include "Kaleidoscope-MouseKeys.h"
|
#include "Kaleidoscope-MouseKeys.h"
|
||||||
|
|
||||||
|
// Support for macros
|
||||||
#include "Kaleidoscope-Macros.h"
|
#include "Kaleidoscope-Macros.h"
|
||||||
|
|
||||||
|
// Support for controlling the keyboard's LEDs
|
||||||
#include "Kaleidoscope-LEDControl.h"
|
#include "Kaleidoscope-LEDControl.h"
|
||||||
|
|
||||||
|
// Support for "Numlock" mode, which is mostly just the Numlock specific LED mode
|
||||||
#include "Kaleidoscope-Numlock.h"
|
#include "Kaleidoscope-Numlock.h"
|
||||||
|
|
||||||
|
// Support for an "LED off mode"
|
||||||
#include "LED-Off.h"
|
#include "LED-Off.h"
|
||||||
|
|
||||||
|
// Support for the "Boot greeting" effect, which pulses the 'LED' button for 10s on boot
|
||||||
#include "Kaleidoscope-LEDEffect-BootGreeting.h"
|
#include "Kaleidoscope-LEDEffect-BootGreeting.h"
|
||||||
|
|
||||||
|
// Support for LED modes that set all LEDs to a single color
|
||||||
#include "Kaleidoscope-LEDEffect-SolidColor.h"
|
#include "Kaleidoscope-LEDEffect-SolidColor.h"
|
||||||
|
|
||||||
|
// Support for an LED mode that makes all the LEDs 'breathe'
|
||||||
#include "Kaleidoscope-LEDEffect-Breathe.h"
|
#include "Kaleidoscope-LEDEffect-Breathe.h"
|
||||||
|
|
||||||
|
// Support for an LED mode that makes a red pixel chase a blue pixel across the keyboard
|
||||||
#include "Kaleidoscope-LEDEffect-Chase.h"
|
#include "Kaleidoscope-LEDEffect-Chase.h"
|
||||||
|
|
||||||
|
// Support for LED modes that pulse the keyboard's LED in a rainbow pattern
|
||||||
#include "Kaleidoscope-LEDEffect-Rainbow.h"
|
#include "Kaleidoscope-LEDEffect-Rainbow.h"
|
||||||
|
|
||||||
|
// Support for an LED mode that lights up the keys as you press them
|
||||||
#include "Kaleidoscope-LED-Stalker.h"
|
#include "Kaleidoscope-LED-Stalker.h"
|
||||||
|
|
||||||
|
// Support for an LED mode that prints the keys you press in letters 4px high
|
||||||
#include "Kaleidoscope-LED-AlphaSquare.h"
|
#include "Kaleidoscope-LED-AlphaSquare.h"
|
||||||
|
|
||||||
|
// Support for Keyboardio's internal keyboard testing mode
|
||||||
#include "Kaleidoscope-Model01-TestMode.h"
|
#include "Kaleidoscope-Model01-TestMode.h"
|
||||||
|
|
||||||
|
|
||||||
|
/** This 'enum' is a list of all the macros used by the Model 01's firmware
|
||||||
|
* The names aren't particularly important. What is important is that each
|
||||||
|
* is unique.
|
||||||
|
*
|
||||||
|
* These are the names of your macros. They'll be used in two places.
|
||||||
|
* The first is in your keymap definitions. There, you'll use the syntax
|
||||||
|
* `M(MACRO_NAME)` to mark a specific keymap position as triggering `MACRO_NAME`
|
||||||
|
*
|
||||||
|
* The second usage is in the 'switch' statement in the `macroAction` function.
|
||||||
|
* That switch statment is where the firmware dispatches a macro to the function
|
||||||
|
* handling that macro
|
||||||
|
*/
|
||||||
|
|
||||||
enum { MACRO_VERSION_INFO,
|
enum { MACRO_VERSION_INFO,
|
||||||
MACRO_ANY
|
MACRO_ANY
|
||||||
};
|
};
|
||||||
@ -92,6 +134,12 @@ const Key keymaps[][ROWS][COLS] PROGMEM = {
|
|||||||
|
|
||||||
#define NUMPAD_KEYMAP_ID 2
|
#define NUMPAD_KEYMAP_ID 2
|
||||||
|
|
||||||
|
|
||||||
|
/** versionInfoMacro handles the 'firmware version info' macro
|
||||||
|
* When a key bound to the macro is pressed, this macro
|
||||||
|
* prints out the firmware build information as virtual keystrokes
|
||||||
|
*/
|
||||||
|
|
||||||
static void versionInfoMacro(uint8_t keyState) {
|
static void versionInfoMacro(uint8_t keyState) {
|
||||||
if (keyToggledOn(keyState)) {
|
if (keyToggledOn(keyState)) {
|
||||||
Macros.type(PSTR("Keyboardio Model 01 - Kaleidoscope "));
|
Macros.type(PSTR("Keyboardio Model 01 - Kaleidoscope "));
|
||||||
@ -99,6 +147,14 @@ static void versionInfoMacro(uint8_t keyState) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** anyKeyMacro is used to provide the functionality of the 'Any' key.
|
||||||
|
*
|
||||||
|
* When the 'any key' macro is toggled on, a random alphanumeric key is
|
||||||
|
* selected. While the key is held, the function generates a synthetic
|
||||||
|
* keypress event repeating that randomly selected key.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void anyKeyMacro(uint8_t keyState) {
|
static void anyKeyMacro(uint8_t keyState) {
|
||||||
static Key lastKey;
|
static Key lastKey;
|
||||||
if (keyToggledOn(keyState))
|
if (keyToggledOn(keyState))
|
||||||
@ -109,6 +165,18 @@ static void anyKeyMacro(uint8_t keyState) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** macroAction dispatches keymap events that are tied to a macro
|
||||||
|
to that macro. It takes two uint8_t parameters.
|
||||||
|
|
||||||
|
The first is the macro being called (the entry in the 'enum' earlier in this file).
|
||||||
|
The second is the state of the keyswitch. You can use the keyswitch state to figure out
|
||||||
|
if the key has just been toggled on, is currently pressed or if it's just been released.
|
||||||
|
|
||||||
|
The 'switch' statement should have a 'case' for each entry of the macro enum.
|
||||||
|
Each 'case' statement should call out to a function to handle the macro in question.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
|
const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
|
||||||
switch (macroIndex) {
|
switch (macroIndex) {
|
||||||
|
|
||||||
@ -125,6 +193,10 @@ const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// These 'solid' color effect definitions define a rainbow of
|
||||||
|
// LED color modes calibrated to draw 500mA or less on the
|
||||||
|
// Keyboardio Model 01.
|
||||||
|
|
||||||
|
|
||||||
static kaleidoscope::LEDSolidColor solidRed(160, 0, 0);
|
static kaleidoscope::LEDSolidColor solidRed(160, 0, 0);
|
||||||
static kaleidoscope::LEDSolidColor solidOrange(140, 70, 0);
|
static kaleidoscope::LEDSolidColor solidOrange(140, 70, 0);
|
||||||
@ -136,31 +208,96 @@ static kaleidoscope::LEDSolidColor solidViolet(130, 0, 120);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** The 'setup' function is one of the two standard Arduino sketch functions.
|
||||||
|
* It's called when your keyboard boots up. This is where you set up Kaleidoscope
|
||||||
|
* and any plugins.
|
||||||
|
*/
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
// First, call Kaleidoscope's internal setup function
|
||||||
Kaleidoscope.setup();
|
Kaleidoscope.setup();
|
||||||
|
|
||||||
|
// Next, tell Kaleidoscope which plugins you want to use.
|
||||||
|
// The order can be important. For example, LED effects are
|
||||||
|
// added in the order they're listed here.
|
||||||
Kaleidoscope.use(
|
Kaleidoscope.use(
|
||||||
|
// The boot greeting effect pulses the LED button for 10 seconds after the keyboard boots up
|
||||||
&BootGreetingEffect,
|
&BootGreetingEffect,
|
||||||
|
|
||||||
|
// The hardware test mode, which can be invoked by tapping Prog, LED and the left Fn button at the same time.
|
||||||
&TestMode,
|
&TestMode,
|
||||||
&LEDControl, &LEDOff,
|
|
||||||
&LEDRainbowEffect, &LEDRainbowWaveEffect, &LEDChaseEffect,
|
// LEDControl provides support for other LED modes
|
||||||
|
&LEDControl,
|
||||||
|
|
||||||
|
// We start with the LED effect that turns off all the LEDs.
|
||||||
|
&LEDOff,
|
||||||
|
|
||||||
|
// The rainbow effect changes the color of all of the keyboard's keys at the same time
|
||||||
|
// running through all the colors of the rainbow.
|
||||||
|
&LEDRainbowEffect,
|
||||||
|
|
||||||
|
// The rainbow wave effect lights up your keyboard with all the colors of a rainbow
|
||||||
|
// and slowly moves the rainbow across your keyboard
|
||||||
|
&LEDRainbowWaveEffect,
|
||||||
|
|
||||||
|
// The chase effect follows the adventure of a blue pixel which chases a red pixel across
|
||||||
|
// your keyboard. Spoiler: the blue pixel never catches the red pixel
|
||||||
|
&LEDChaseEffect,
|
||||||
|
|
||||||
|
// These static effects turn your keyboard's LEDs a variety of colors
|
||||||
&solidRed, &solidOrange, &solidYellow, &solidGreen, &solidBlue, &solidIndigo, &solidViolet,
|
&solidRed, &solidOrange, &solidYellow, &solidGreen, &solidBlue, &solidIndigo, &solidViolet,
|
||||||
|
|
||||||
|
// The breathe effect slowly pulses all of the LEDs on your keyboard
|
||||||
&LEDBreatheEffect,
|
&LEDBreatheEffect,
|
||||||
|
|
||||||
|
// The AlphaSquare effect prints each character you type, using your
|
||||||
|
// keyboard's LEDs as a display
|
||||||
&AlphaSquareEffect,
|
&AlphaSquareEffect,
|
||||||
|
|
||||||
|
// The stalker effect lights up the keys you've pressed recently
|
||||||
&StalkerEffect,
|
&StalkerEffect,
|
||||||
|
|
||||||
|
// The numlock plugin is responsible for lighting up the 'numpad' mode
|
||||||
|
// with a custom LED effect
|
||||||
&NumLock,
|
&NumLock,
|
||||||
|
|
||||||
|
// The macros plugin adds support for macros
|
||||||
&Macros,
|
&Macros,
|
||||||
|
|
||||||
|
// The MouseKeys plugin lets you add keys to your keymap which move the mouse.
|
||||||
&MouseKeys,
|
&MouseKeys,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
// While we hope to improve this in the future, the NumLock plugin
|
||||||
|
// needs to be explicitly told which keymap layer is your numpad layer
|
||||||
NumLock.numPadLayer = NUMPAD_KEYMAP_ID;
|
NumLock.numPadLayer = NUMPAD_KEYMAP_ID;
|
||||||
|
|
||||||
|
// We configure the AlphaSquare effect to use RED letters
|
||||||
AlphaSquare.color = { 255, 0, 0 };
|
AlphaSquare.color = { 255, 0, 0 };
|
||||||
|
|
||||||
|
// We set the brightness of the rainbow effects to 150 (on a scale of 0-255)
|
||||||
|
// This draws more than 500mA, but looks much nicer than a dimmer effect
|
||||||
LEDRainbowEffect.brightness(150);
|
LEDRainbowEffect.brightness(150);
|
||||||
LEDRainbowWaveEffect.brightness(150);
|
LEDRainbowWaveEffect.brightness(150);
|
||||||
|
|
||||||
|
// The LED Stalker mode has a few effects. The one we like is
|
||||||
|
// called 'BlazingTrail'. For details on other options,
|
||||||
|
// see https://github.com/keyboardio/Kaleidoscope-LED-Stalker
|
||||||
StalkerEffect.variant = STALKER(BlazingTrail);
|
StalkerEffect.variant = STALKER(BlazingTrail);
|
||||||
|
|
||||||
|
// We want to make sure that the firmware starts with LED effects off
|
||||||
|
// This avoids over-taxing devices that don't have a lot of power to share
|
||||||
|
// with USB devices
|
||||||
LEDOff.activate();
|
LEDOff.activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** loop is the second of the standard Arduino sketch functions.
|
||||||
|
* As you might expect, it runs in a loop, never exiting.
|
||||||
|
*
|
||||||
|
* For Kaleidoscope-based keyboard firmware, you usually just want to
|
||||||
|
* call Kaleidoscope.loop(); and not do anything custom here.
|
||||||
|
*/
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
Kaleidoscope.loop();
|
Kaleidoscope.loop();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user