// -*- mode: c++ -*- #pragma once #include "kaleidoscope/plugin/Macros.h" #include "keymap-layers.h" enum { MACRO_VERSION_INFO, MACRO_ANY, MACRO_NUMLOCK, }; #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); } } } 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; } return MACRO_NONE; }