internal void KwmModeCommand(std::vector<std::string> &Tokens) { if(Tokens[1] == "activate") KwmActivateBindingMode(Tokens[2]); else { std::string Mode = Tokens[1]; mode *BindingMode = GetBindingMode(Mode); if(Tokens[2] == "color") { BindingMode->Color = ConvertHexRGBAToColor(ConvertHexStringToInt(Tokens[3])); CreateColorFormat(&BindingMode->Color); } else if(Tokens[2] == "prefix") { if(Tokens[3] == "on") BindingMode->Prefix = true; else if(Tokens[3] == "off") BindingMode->Prefix = false; } else if(Tokens[2] == "timeout") { BindingMode->Timeout = ConvertStringToDouble(Tokens[3]); } else if(Tokens[2] == "restore") { BindingMode->Restore = Tokens[3]; } } }
void CheckPrefixTimeout() { if(KWMHotkeys.ActiveMode->Prefix) { kwm_time_point NewPrefixTime = std::chrono::steady_clock::now(); std::chrono::duration<double> Diff = NewPrefixTime - KWMHotkeys.ActiveMode->Time; if(Diff.count() > KWMHotkeys.ActiveMode->Timeout) { DEBUG("Prefix timeout expired. Switching to mode " << KWMHotkeys.ActiveMode->Restore); KwmActivateBindingMode(KWMHotkeys.ActiveMode->Restore); } } }