@ -30,6 +30,7 @@ TypingBreaks::settings_t TypingBreaks::settings = {
. right_hand_max_keys = 0
} ;
bool TypingBreaks : : keyboard_locked_ { false } ;
uint32_t TypingBreaks : : session_start_time_ ;
uint32_t TypingBreaks : : last_key_time_ ;
uint32_t TypingBreaks : : lock_start_time_ ;
@ -42,22 +43,17 @@ EventHandlerResult TypingBreaks::onKeyswitchEvent(Key &mapped_key, byte row, byt
uint32_t idle_time_limit = settings . idle_time_limit * 1000 ;
uint32_t lock_time_out = settings . lock_time_out * 1000 ;
// If we are locked, and didn't time out yet, no key has to be pressed.
if ( lock_start_time_ & & ( millis ( ) - lock_start_time_ < = lock_length ) ) {
return EventHandlerResult : : EVENT_CONSUMED ;
}
// If we are locked...
if ( lock_start_time _) {
if ( keyboard_locked_ ) {
// ...and the lock has not expired yet
if ( millis ( ) - lock_start_time_ < = lock_length ) {
if ( ! Kaleidoscope . hasTimeExpired ( lock_start_time_ , lock_length ) ) {
return EventHandlerResult : : EVENT_CONSUMED ; // remain locked
}
// ...otherwise clear the lock
lock_start_time_ = 0 ;
keyboard_locked_ = false ;
left_hand_keys_ = right_hand_keys_ = 0 ;
session_start_time_ = millis( ) ;
session_start_time_ = Kaleidoscope. millisAtCycleStart ( ) ;
TypingBreak ( false ) ;
}
@ -65,31 +61,26 @@ EventHandlerResult TypingBreaks::onKeyswitchEvent(Key &mapped_key, byte row, byt
// Any other case, we are not locked yet! (or we just unlocked)
// Are we still in the same session?
if ( last_key_time_ & & ( millis ( ) - last_key_time_ ) > = idle_time_limit ) {
if ( Kaleidoscope. hasTimeExpired ( last_key_time_ , idle_time_limit ) ) {
// No, we are not. Clear timers and start over.
lock_start_time_ = 0 ;
left_hand_keys_ = right_hand_keys_ = 0 ;
session_start_time_ = millis ( ) ;
}
// If we have a limit on the left hand, and we reached it, lock up!
if ( settings . left_hand_max_keys & & left_hand_keys_ > = settings . left_hand_max_keys ) {
lock_start_time_ = millis ( ) ;
TypingBreak ( true ) ;
return EventHandlerResult : : EVENT_CONSUMED ;
session_start_time_ = Kaleidoscope . millisAtCycleStart ( ) ;
}
// If we have a limit on the right hand, and we reached it, lock up!
if ( settings . right_hand_max_keys & & right_hand_keys_ > = settings . right_hand_max_keys ) {
lock_start_time_ = millis ( ) ;
// If we have a limit on the either hand, and we reached it, lock up!
if ( ( settings . left_hand_max_keys & & left_hand_keys_ > = settings . left_hand_max_keys ) | |
( settings . right_hand_max_keys & & right_hand_keys_ > = settings . right_hand_max_keys ) ) {
keyboard_locked_ = true ;
lock_start_time_ = last_key_time_ ;
TypingBreak ( true ) ;
return EventHandlerResult : : EVENT_CONSUMED ;
}
if ( lock_time_out ) {
// Is the session longer than lock_time_out?
if ( millis( ) - session_start_time_ > = lock_time_out ) {
if ( Kaleidoscope. hasTimeExpired ( session_start_time_ , lock_time_out ) ) {
// Yeah, it is.
keyboard_locked_ = true ;
lock_start_time_ = last_key_time_ ;
TypingBreak ( true ) ;
return EventHandlerResult : : EVENT_CONSUMED ;
@ -104,7 +95,7 @@ EventHandlerResult TypingBreaks::onKeyswitchEvent(Key &mapped_key, byte row, byt
left_hand_keys_ + + ;
else
right_hand_keys_ + + ;
last_key_time_ = millis( ) ;
last_key_time_ = Kaleidoscope. millisAtCycleStart ( ) ;
}
return EventHandlerResult : : OK ;