From a07cda8019aab630faebb24bbb38decd562a7a1b Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Sun, 17 Jun 2018 11:26:23 +0200 Subject: [PATCH] Override onSetup when using a compatibility layer The default `onSetup` will call `.begin`, to support initializing plugins using the V1 plugins while using `KALEIDOSCOPE_INIT_PLUGINS`. However, plugins that implement a compatibility layer so that they can be used with both the new API, and with `Kaleidoscope.use()` will have a `.begin` method too. Which the default `onSetup` will call, and we'll register the compatibility layer too, in addition to the new-style event handlers. This results in many things running twice, which leads to all kinds of problems. For this reason, override `onSetup`, so that it does not call `begin`. When used with `Kaleidoscope.use()`, the plugin will still work, so compatibility is maintained. But the bug is now gone. Signed-off-by: Gergely Nagy --- src/Kaleidoscope/TopsyTurvy.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Kaleidoscope/TopsyTurvy.h b/src/Kaleidoscope/TopsyTurvy.h index 9402b6cc..b75e942a 100644 --- a/src/Kaleidoscope/TopsyTurvy.h +++ b/src/Kaleidoscope/TopsyTurvy.h @@ -32,6 +32,10 @@ class TopsyTurvy: public KaleidoscopePlugin { EventHandlerResult onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state); #if KALEIDOSCOPE_ENABLE_V1_PLUGIN_API + kaleidoscope::EventHandlerResult onSetup() { + return kaleidoscope::EventHandlerResult::OK; + } + protected: void begin(); static Key legacyEventHandler(Key mapped_key, byte row, byte col, uint8_t key_state);