|
|
|
@ -25,21 +25,21 @@ namespace KaleidoscopePlugins {
|
|
|
|
|
const Key *TopsyTurvy::topsyTurvyList = NULL;
|
|
|
|
|
uint8_t TopsyTurvy::topsyTurvyModState;
|
|
|
|
|
|
|
|
|
|
TopsyTurvy::TopsyTurvy (void) {
|
|
|
|
|
TopsyTurvy::TopsyTurvy(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
TopsyTurvy::begin (void) {
|
|
|
|
|
event_handler_hook_use (this->eventHandlerHook);
|
|
|
|
|
TopsyTurvy::begin(void) {
|
|
|
|
|
event_handler_hook_use(this->eventHandlerHook);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
TopsyTurvy::configure (const Key list[]) {
|
|
|
|
|
TopsyTurvy::configure(const Key list[]) {
|
|
|
|
|
topsyTurvyList = (const Key *)list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Key
|
|
|
|
|
TopsyTurvy::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
TopsyTurvy::eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyState) {
|
|
|
|
|
if (keyState & TOPSYTURVY)
|
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
@ -47,18 +47,18 @@ TopsyTurvy::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyStat
|
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
if (mappedKey.raw == Key_LeftShift.raw)
|
|
|
|
|
bitWrite (topsyTurvyModState, 0, key_is_pressed (keyState));
|
|
|
|
|
bitWrite(topsyTurvyModState, 0, key_is_pressed(keyState));
|
|
|
|
|
if (mappedKey.raw == Key_RightShift.raw)
|
|
|
|
|
bitWrite (topsyTurvyModState, 1, key_is_pressed (keyState));
|
|
|
|
|
bitWrite(topsyTurvyModState, 1, key_is_pressed(keyState));
|
|
|
|
|
|
|
|
|
|
if (!key_is_pressed (keyState) && !key_was_pressed (keyState))
|
|
|
|
|
if (!key_is_pressed(keyState) && !key_was_pressed(keyState))
|
|
|
|
|
return mappedKey;
|
|
|
|
|
|
|
|
|
|
uint8_t idx = 0;
|
|
|
|
|
Key newKey;
|
|
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
newKey.raw = pgm_read_word (&(topsyTurvyList[idx].raw));
|
|
|
|
|
newKey.raw = pgm_read_word(&(topsyTurvyList[idx].raw));
|
|
|
|
|
idx++;
|
|
|
|
|
} while (newKey.raw != mappedKey.raw && newKey.raw != Key_NoKey.raw);
|
|
|
|
|
|
|
|
|
@ -68,23 +68,23 @@ TopsyTurvy::eventHandlerHook (Key mappedKey, byte row, byte col, uint8_t keyStat
|
|
|
|
|
// invert the shift state
|
|
|
|
|
|
|
|
|
|
if (!topsyTurvyModState) {
|
|
|
|
|
if (key_is_pressed (keyState))
|
|
|
|
|
Keyboard.press (Key_LeftShift.keyCode);
|
|
|
|
|
handle_keyswitch_event (mappedKey, row, col, keyState | TOPSYTURVY);
|
|
|
|
|
Keyboard.sendReport ();
|
|
|
|
|
if (key_toggled_off (keyState))
|
|
|
|
|
Keyboard.release (Key_LeftShift.keyCode);
|
|
|
|
|
if (key_is_pressed(keyState))
|
|
|
|
|
Keyboard.press(Key_LeftShift.keyCode);
|
|
|
|
|
handle_keyswitch_event(mappedKey, row, col, keyState | TOPSYTURVY);
|
|
|
|
|
Keyboard.sendReport();
|
|
|
|
|
if (key_toggled_off(keyState))
|
|
|
|
|
Keyboard.release(Key_LeftShift.keyCode);
|
|
|
|
|
} else {
|
|
|
|
|
Keyboard.release (Key_LeftShift.keyCode);
|
|
|
|
|
Keyboard.release (Key_RightShift.keyCode);
|
|
|
|
|
Keyboard.sendReport ();
|
|
|
|
|
handle_keyswitch_event (mappedKey, row, col, keyState | TOPSYTURVY);
|
|
|
|
|
Keyboard.sendReport ();
|
|
|
|
|
|
|
|
|
|
if (bitRead (topsyTurvyModState, 0))
|
|
|
|
|
Keyboard.press (Key_LeftShift.keyCode);
|
|
|
|
|
if (bitRead (topsyTurvyModState, 1))
|
|
|
|
|
Keyboard.press (Key_RightShift.keyCode);
|
|
|
|
|
Keyboard.release(Key_LeftShift.keyCode);
|
|
|
|
|
Keyboard.release(Key_RightShift.keyCode);
|
|
|
|
|
Keyboard.sendReport();
|
|
|
|
|
handle_keyswitch_event(mappedKey, row, col, keyState | TOPSYTURVY);
|
|
|
|
|
Keyboard.sendReport();
|
|
|
|
|
|
|
|
|
|
if (bitRead(topsyTurvyModState, 0))
|
|
|
|
|
Keyboard.press(Key_LeftShift.keyCode);
|
|
|
|
|
if (bitRead(topsyTurvyModState, 1))
|
|
|
|
|
Keyboard.press(Key_RightShift.keyCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Key_NoKey;
|
|
|
|
|