#pragma once
#include "kaleidoscope/plugin/Macros.h"
#include "keymap-layers.h"
enum { MACRO_VERSION_INFO,
MACRO_ANY,
MACRO_NUMLOCK,
MACRO_FVWM,
};
#ifndef BUILD_INFORMATION
#define BUILD_INFORMATION "locally built"
#endif
static void versionInfoMacro(uint8_t keyState) {
if (keyToggledOn(keyState)) {
Macros.type(PSTR("Keyboardio Model 01 - Kaleidoscope "));
Macros.type(PSTR(BUILD_INFORMATION));
}
}
static void anyKeyMacro(uint8_t keyState) {
static Key lastKey;
bool toggledOn = false;
if (keyToggledOn(keyState)) {
lastKey.keyCode = Key_A.keyCode + (uint8_t)(millis() % 36);
toggledOn = true;
}
if (keyIsPressed(keyState))
kaleidoscope::hid::pressKey(lastKey, toggledOn);
}
static void numLockMacro(uint8_t keyState) {
if (keyToggledOn(keyState)) {
kaleidoscope::hid::pressKey(Key_KeypadNumLock);
if (Layer.isActive(NUMPAD)) {
Layer.deactivate(NUMPAD);
}
else {
Layer.activate(NUMPAD);
}
}
}
static const macro_t *fvwmMacro(uint8_t keyState) {
if (keyIsPressed(keyState)) {
return MACRO(D(LeftAlt),Dr(ShiftToLayer(FVWM)));
}
else if (keyWasPressed(keyState)) {
return MACRO(Ur(ShiftToLayer(FVWM)),U(LeftAlt));
}
return MACRO_NONE;
}
const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
switch (macroIndex) {
case MACRO_VERSION_INFO:
versionInfoMacro(keyState);
break;
case MACRO_ANY:
anyKeyMacro(keyState);
break;
case MACRO_NUMLOCK:
numLockMacro(keyState);
break;
case MACRO_FVWM:
return fvwmMacro(keyState);
break;
}
return MACRO_NONE;
}