@ -23,12 +23,14 @@
namespace kaleidoscope {
uint8_t TopsyTurvy : : mod_state_ ;
bool TopsyTurvy : : is_active_ ;
TopsyTurvy : : TopsyTurvy ( void ) {
}
void TopsyTurvy : : begin ( void ) {
event_handler_hook_use ( eventHandlerHook ) ;
loop_hook_use ( loopHook ) ;
}
Key TopsyTurvy : : eventHandlerHook ( Key mapped_key , byte row , byte col , uint8_t key_state ) {
@ -46,6 +48,11 @@ Key TopsyTurvy::eventHandlerHook(Key mapped_key, byte row, byte col, uint8_t key
if ( mapped_key < ranges : : TT_FIRST | | mapped_key > ranges : : TT_LAST )
return mapped_key ;
if ( is_active_ )
return Key_NoKey ;
is_active_ = true ;
Key new_key = { . raw = mapped_key . raw - ranges : : TT_FIRST } ;
if ( new_key . raw = = Key_NoKey . raw )
return mapped_key ;
@ -75,6 +82,10 @@ Key TopsyTurvy::eventHandlerHook(Key mapped_key, byte row, byte col, uint8_t key
return Key_NoKey ;
}
void TopsyTurvy : : loopHook ( bool is_post_clear ) {
is_active_ = false ;
}
}
kaleidoscope : : TopsyTurvy TopsyTurvy ;