Merge pull request #21 from keyboardio/f/plugin-v2

Updated to use the new plugin APIs
pull/365/head
Gergely Nagy 7 years ago committed by GitHub
commit 082400184b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -63,9 +63,9 @@ const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
return MACRO_NONE;
}
void setup() {
Kaleidoscope.use(&Macros);
KALEIDOSCOPE_INIT_PLUGINS(Macros);
void setup() {
Kaleidoscope.setup ();
}
```

@ -183,21 +183,23 @@ const macro_t *Macros_::type(const char *string) {
return MACRO_NONE;
}
Key Macros_::handleMacroEvent(Key mappedKey, byte row, byte col, uint8_t keyState) {
kaleidoscope::EventHandlerResult Macros_::onKeyswitchEvent(Key &mappedKey, byte row, byte col, uint8_t keyState) {
if (mappedKey.flags != (SYNTHETIC | IS_MACRO))
return mappedKey;
return kaleidoscope::EventHandlerResult::OK;
byte key_id = (row * COLS) + col;
addActiveMacroKey(mappedKey.keyCode, key_id, keyState);
return Key_NoKey;
return kaleidoscope::EventHandlerResult::EVENT_CONSUMED;
}
void Macros_::loopHook(bool post_clear) {
if (post_clear) {
kaleidoscope::EventHandlerResult Macros_::afterEachCycle() {
active_macro_count = 0;
return;
}
return kaleidoscope::EventHandlerResult::OK;
}
kaleidoscope::EventHandlerResult Macros_::beforeReportingState() {
for (byte i = 0; i < active_macro_count; ++i) {
if (active_macros[i].key_id == 0xFF) {
// i.e. UNKNOWN_KEYSWITCH_LOCATION
@ -211,16 +213,30 @@ void Macros_::loopHook(bool post_clear) {
active_macros[i].key_state);
Macros.play(m);
}
return kaleidoscope::EventHandlerResult::OK;
}
Macros_::Macros_(void) {
// Legacy V1 API
#if KALEIDOSCOPE_ENABLE_V1_PLUGIN_API
void Macros_::begin() {
Kaleidoscope.useEventHandlerHook(legacyEventHandler);
Kaleidoscope.useLoopHook(legacyLoopHook);
}
void
Macros_::begin(void) {
active_macro_count = 0;
Kaleidoscope.useEventHandlerHook(handleMacroEvent);
Kaleidoscope.useLoopHook(loopHook);
Key Macros_::legacyEventHandler(Key mapped_key, byte row, byte col, uint8_t key_state) {
kaleidoscope::EventHandlerResult r = Macros.onKeyswitchEvent(mapped_key, row, col, key_state);
if (r == kaleidoscope::EventHandlerResult::OK)
return mapped_key;
return Key_NoKey;
}
void Macros_::legacyLoopHook(bool is_post_clear) {
if (is_post_clear) {
Macros.afterEachCycle();
} else {
Macros.beforeReportingState();
}
}
#endif
Macros_ Macros;

@ -17,11 +17,9 @@ struct MacroKeyEvent {
byte key_state;
};
class Macros_ : public KaleidoscopePlugin {
class Macros_ : public kaleidoscope::Plugin {
public:
Macros_(void);
void begin(void) final;
Macros_(void) {}
static MacroKeyEvent active_macros[MAX_CONCURRENT_MACROS];
static byte active_macro_count;
@ -35,8 +33,10 @@ class Macros_ : public KaleidoscopePlugin {
active_macros[active_macro_count].key_state = key_state;
++active_macro_count;
}
static Key handleMacroEvent(Key mappedKey, byte row, byte col, uint8_t keyState);
static void loopHook(bool post_clear);
kaleidoscope::EventHandlerResult onKeyswitchEvent(Key &mappedKey, byte row, byte col, uint8_t keyState);
kaleidoscope::EventHandlerResult beforeReportingState();
kaleidoscope::EventHandlerResult afterEachCycle();
void play(const macro_t *macro_p);
@ -57,6 +57,13 @@ class Macros_ : public KaleidoscopePlugin {
static byte row, col;
#if KALEIDOSCOPE_ENABLE_V1_PLUGIN_API
protected:
void begin();
static Key legacyEventHandler(Key mapped_key, byte row, byte col, uint8_t key_state);
static void legacyLoopHook(bool is_post_clear);
#endif
private:
Key lookupAsciiCode(uint8_t ascii_code);
};

Loading…
Cancel
Save