diff --git a/src/Kaleidoscope/SpaceCadet.cpp b/src/Kaleidoscope/SpaceCadet.cpp index d6945a94..dcb246f9 100644 --- a/src/Kaleidoscope/SpaceCadet.cpp +++ b/src/Kaleidoscope/SpaceCadet.cpp @@ -21,7 +21,6 @@ namespace kaleidoscope { - //Constructor with input and output, and assume default timeout SpaceCadet::KeyBinding::KeyBinding(Key input_, Key output_) { input = input_; @@ -36,19 +35,26 @@ SpaceCadet::KeyBinding::KeyBinding(Key input_, Key output_, uint16_t timeout_) { } //Space Cadet -KeyBinding * SpaceCadet::map = { - //By default, respect the default timeout - {Key_LeftShift, Key_LeftParen, 0} - , {Key_RightShift, Key_RightParen, 0} - //These may be uncommented, added, or set in the main sketch - /*,{Key_LeftGui,Key_LeftCurlyBracket, 250} - ,{Key_RightAlt,Key_RightCurlyBracket, 250} - ,{Key_LeftControl,Key_LeftBracket, 250} - ,{Key_RightControl,Key_RightBracket, 250}*/ - , SPACECADET_MAP_END -}; +SpaceCadet::KeyBinding * SpaceCadet::map; uint16_t SpaceCadet::time_out = 1000; +//Empty Constructor +SpaceCadet::SpaceCadet() { + SpaceCadet::KeyBinding initialmap[] = { + //By default, respect the default timeout + {Key_LeftShift, Key_LeftParen, 0} + , {Key_RightShift, Key_RightParen, 0} + //These may be uncommented, added, or set in the main sketch + /*,{Key_LeftGui,Key_LeftCurlyBracket, 250} + ,{Key_RightAlt,Key_RightCurlyBracket, 250} + ,{Key_LeftControl,Key_LeftBracket, 250} + ,{Key_RightControl,Key_RightBracket, 250}*/ + , SPACECADET_MAP_END + }; + + map = initialmap; +} + void SpaceCadet::begin() { Kaleidoscope.useEventHandlerHook(eventHandlerHook); } diff --git a/src/Kaleidoscope/SpaceCadet.h b/src/Kaleidoscope/SpaceCadet.h index f9a5b027..5d11a3c1 100644 --- a/src/Kaleidoscope/SpaceCadet.h +++ b/src/Kaleidoscope/SpaceCadet.h @@ -21,24 +21,15 @@ #include #ifndef SPACECADET_MAP_END -#define SPACECADET_MAP_END {Key_NoKey, Key_NoKey, 0} +#define SPACECADET_MAP_END (kaleidoscope::SpaceCadet::KeyBinding) { Key_NoKey, Key_NoKey, 0 } #endif namespace kaleidoscope { //Declaration for the method (implementing KaleidoscopePlugin) class SpaceCadet : public KaleidoscopePlugin { public: - //Empty constructor - SpaceCadet(void) {} - - //Methods - void begin(void) final; - - //Publically accessible variables - static uint16_t time_out; // The global timeout in milliseconds - static KeyBinding * map; // The map of key bindings - - //Declarations for the modifier key mapping + //Internal Class + //Declarations for the modifier key mapping class KeyBinding { public: //Empty constructor; set the vars separately @@ -58,6 +49,17 @@ class SpaceCadet : public KaleidoscopePlugin { //the start time for this key press uint32_t start_time = 0; }; + + //Empty constructor + SpaceCadet(void); + + //Methods + void begin(void) final; + + //Publically accessible variables + static uint16_t time_out; // The global timeout in milliseconds + static SpaceCadet::KeyBinding * map; // The map of key bindings + private: static Key eventHandlerHook(Key mapped_key, byte row, byte col, uint8_t key_state); };