|
|
@ -23,31 +23,31 @@ namespace KaleidoscopePlugins {
|
|
|
|
const ShapeShifter::dictionary_t *ShapeShifter::dictionary = NULL;
|
|
|
|
const ShapeShifter::dictionary_t *ShapeShifter::dictionary = NULL;
|
|
|
|
bool ShapeShifter::modActive;
|
|
|
|
bool ShapeShifter::modActive;
|
|
|
|
|
|
|
|
|
|
|
|
ShapeShifter::ShapeShifter (void) {
|
|
|
|
ShapeShifter::ShapeShifter(void) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|
ShapeShifter::begin (void) {
|
|
|
|
ShapeShifter::begin(void) {
|
|
|
|
event_handler_hook_use (this->eventHandlerHook);
|
|
|
|
event_handler_hook_use(this->eventHandlerHook);
|
|
|
|
loop_hook_use (this->loopHook);
|
|
|
|
loop_hook_use(this->loopHook);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|
ShapeShifter::configure (const dictionary_t dictionary_[]) {
|
|
|
|
ShapeShifter::configure(const dictionary_t dictionary_[]) {
|
|
|
|
dictionary = (const dictionary_t *)dictionary_;
|
|
|
|
dictionary = (const dictionary_t *)dictionary_;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|
ShapeShifter::loopHook (bool postClear) {
|
|
|
|
ShapeShifter::loopHook(bool postClear) {
|
|
|
|
if (postClear)
|
|
|
|
if (postClear)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
modActive = Keyboard.isModifierActive (Key_LeftShift.keyCode) ||
|
|
|
|
modActive = Keyboard.isModifierActive(Key_LeftShift.keyCode) ||
|
|
|
|
Keyboard.isModifierActive (Key_RightShift.keyCode);
|
|
|
|
Keyboard.isModifierActive(Key_RightShift.keyCode);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Key
|
|
|
|
Key
|
|
|
|
ShapeShifter::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
ShapeShifter::eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
if (!dictionary)
|
|
|
|
if (!dictionary)
|
|
|
|
return mappedKey;
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
|
@ -60,7 +60,7 @@ ShapeShifter::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keySt
|
|
|
|
// Try to find the current key in the dictionary
|
|
|
|
// Try to find the current key in the dictionary
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
orig.raw = pgm_read_word (&(dictionary[i].original.raw));
|
|
|
|
orig.raw = pgm_read_word(&(dictionary[i].original.raw));
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
} while (orig.raw != Key_NoKey.raw &&
|
|
|
|
} while (orig.raw != Key_NoKey.raw &&
|
|
|
|
orig.raw != mappedKey.raw);
|
|
|
|
orig.raw != mappedKey.raw);
|
|
|
@ -70,7 +70,7 @@ ShapeShifter::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keySt
|
|
|
|
if (orig.raw == Key_NoKey.raw)
|
|
|
|
if (orig.raw == Key_NoKey.raw)
|
|
|
|
return mappedKey;
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
|
|
repl.raw = pgm_read_word (&(dictionary[i].replacement.raw));
|
|
|
|
repl.raw = pgm_read_word(&(dictionary[i].replacement.raw));
|
|
|
|
|
|
|
|
|
|
|
|
// If found, handle the alternate key instead
|
|
|
|
// If found, handle the alternate key instead
|
|
|
|
return repl;
|
|
|
|
return repl;
|
|
|
|