|
|
|
@ -32,16 +32,16 @@ bool Syster::isActive;
|
|
|
|
|
|
|
|
|
|
// --- api ---
|
|
|
|
|
|
|
|
|
|
Syster::Syster (void) {
|
|
|
|
|
Syster::Syster(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
Syster::begin (void) {
|
|
|
|
|
event_handler_hook_use (this->eventHandlerHook);
|
|
|
|
|
Syster::begin(void) {
|
|
|
|
|
event_handler_hook_use(this->eventHandlerHook);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
Syster::reset (void) {
|
|
|
|
|
Syster::reset(void) {
|
|
|
|
|
symbolPos = 0;
|
|
|
|
|
symbol[0] = 0;
|
|
|
|
|
isActive = false;
|
|
|
|
@ -49,14 +49,14 @@ Syster::reset (void) {
|
|
|
|
|
|
|
|
|
|
// --- hooks ---
|
|
|
|
|
Key
|
|
|
|
|
Syster::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
Syster::eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
if (!isActive) {
|
|
|
|
|
if (!isSyster (mappedKey))
|
|
|
|
|
if (!isSyster(mappedKey))
|
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
if (key_toggled_on (keyState)) {
|
|
|
|
|
if (key_toggled_on(keyState)) {
|
|
|
|
|
isActive = true;
|
|
|
|
|
systerAction (StartAction, NULL);
|
|
|
|
|
systerAction(StartAction, NULL);
|
|
|
|
|
}
|
|
|
|
|
return Key_NoKey;
|
|
|
|
|
}
|
|
|
|
@ -64,37 +64,37 @@ Syster::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
if (keyState & INJECTED)
|
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
if (isSyster (mappedKey))
|
|
|
|
|
if (isSyster(mappedKey))
|
|
|
|
|
return Key_NoKey;
|
|
|
|
|
|
|
|
|
|
if (mappedKey == Key_Backspace && symbolPos == 0)
|
|
|
|
|
return Key_NoKey;
|
|
|
|
|
|
|
|
|
|
if (key_toggled_off (keyState)) {
|
|
|
|
|
if (key_toggled_off(keyState)) {
|
|
|
|
|
if (mappedKey == Key_Spacebar) {
|
|
|
|
|
for (uint8_t i = 0; i <= symbolPos; i++) {
|
|
|
|
|
handle_keyswitch_event (Key_Backspace, UNKNOWN_KEYSWITCH_LOCATION, IS_PRESSED | INJECTED);
|
|
|
|
|
Keyboard.sendReport ();
|
|
|
|
|
handle_keyswitch_event (Key_Backspace, UNKNOWN_KEYSWITCH_LOCATION, WAS_PRESSED | INJECTED);
|
|
|
|
|
Keyboard.sendReport ();
|
|
|
|
|
handle_keyswitch_event(Key_Backspace, UNKNOWN_KEYSWITCH_LOCATION, IS_PRESSED | INJECTED);
|
|
|
|
|
Keyboard.sendReport();
|
|
|
|
|
handle_keyswitch_event(Key_Backspace, UNKNOWN_KEYSWITCH_LOCATION, WAS_PRESSED | INJECTED);
|
|
|
|
|
Keyboard.sendReport();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
systerAction (EndAction, NULL);
|
|
|
|
|
systerAction(EndAction, NULL);
|
|
|
|
|
|
|
|
|
|
symbol[symbolPos] = 0;
|
|
|
|
|
systerAction (SymbolAction, symbol);
|
|
|
|
|
reset ();
|
|
|
|
|
systerAction(SymbolAction, symbol);
|
|
|
|
|
reset();
|
|
|
|
|
|
|
|
|
|
return Key_NoKey;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (key_toggled_on (keyState)) {
|
|
|
|
|
if (key_toggled_on(keyState)) {
|
|
|
|
|
if (mappedKey == Key_Backspace) {
|
|
|
|
|
if (symbolPos > 0)
|
|
|
|
|
symbolPos--;
|
|
|
|
|
} else {
|
|
|
|
|
const char c = keyToChar (mappedKey);
|
|
|
|
|
const char c = keyToChar(mappedKey);
|
|
|
|
|
if (c)
|
|
|
|
|
symbol[symbolPos++] = c;
|
|
|
|
|
}
|
|
|
|
@ -106,7 +106,7 @@ Syster::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
|
|
|
|
|
__attribute__((weak))
|
|
|
|
|
const char
|
|
|
|
|
keyToChar (Key key) {
|
|
|
|
|
keyToChar(Key key) {
|
|
|
|
|
if (key.flags != 0)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
@ -122,7 +122,7 @@ keyToChar (Key key) {
|
|
|
|
|
|
|
|
|
|
__attribute__((weak))
|
|
|
|
|
void
|
|
|
|
|
systerAction (KaleidoscopePlugins::Syster::action_t action, const char *symbol) {
|
|
|
|
|
systerAction(KaleidoscopePlugins::Syster::action_t action, const char *symbol) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
KaleidoscopePlugins::Syster Syster;
|
|
|
|
|