diff --git a/src/Kaleidoscope-Numlock.cpp b/src/Kaleidoscope-Numlock.cpp index 1fc5ba7f..e5e19f4b 100644 --- a/src/Kaleidoscope-Numlock.cpp +++ b/src/Kaleidoscope-Numlock.cpp @@ -3,31 +3,22 @@ #include "Kaleidoscope.h" #include "layers.h" -uint8_t NumLock_::previousLEDMode; -uint8_t NumLock_::us; bool NumLock_::isActive; byte NumLock_::row = 255, NumLock_::col = 255; -cRGB numpad_color; +cRGB numpad_color = CRGB(255, 0, 0); NumLock_::NumLock_(void) { } -void -NumLock_::begin(void) { - us = LEDControl.mode_add(this); - numpad_color.r = 255; +void NumLock_::begin(void) { + loop_hook_use(loopHook); } -void -NumLock_::init(void) { - if (!isActive) { - LEDControl.next_mode(); - } -} +void NumLock_::loopHook(bool postClear) { + if (!postClear || !isActive) + return; -void -NumLock_::update(void) { for (uint8_t r = 0; r < ROWS; r++) { for (uint8_t c = 0; c < COLS; c++) { Key k = Layer.lookup(r, c); @@ -46,21 +37,17 @@ NumLock_::update(void) { LEDControl.led_set_crgb_at(row, col, color); } -const macro_t * -NumLock_::toggle(byte row_, byte col_, uint8_t numPadLayer) { +const macro_t *NumLock_::toggle(byte row_, byte col_, uint8_t numPadLayer) { row = row_; col = col_; if (Layer.isOn(numPadLayer)) { - isActive = false; - LEDControl.set_mode(previousLEDMode); Layer.off(numPadLayer); + LEDControl.init_mode(); } else { - isActive = true; - previousLEDMode = LEDControl.get_mode(); - LEDControl.set_mode(us); Layer.on(numPadLayer); } + isActive = Layer.isOn(numPadLayer); return MACRO(T(KeypadNumLock), END); } diff --git a/src/Kaleidoscope-Numlock.h b/src/Kaleidoscope-Numlock.h index eaa448b4..47b2a77e 100644 --- a/src/Kaleidoscope-Numlock.h +++ b/src/Kaleidoscope-Numlock.h @@ -7,20 +7,16 @@ #define TOGGLENUMLOCK 0 #define Key_ToggleNumlock M(TOGGLENUMLOCK) -class NumLock_ : public LEDMode { +class NumLock_ : public KaleidoscopePlugin { public: NumLock_(void); void begin(void) final; - void update(void) final; - void init(void) final; - static const macro_t *toggle(byte row, byte col, uint8_t numPadLayer); + static void loopHook(const bool postClear); private: - static uint8_t previousLEDMode; - static uint8_t us; static bool isActive; static byte row, col; };