bool KwmExecuteHotkey(modifiers Mod, CGKeyCode Keycode) { hotkey Hotkey = {}; if(HotkeyExists(Mod, Keycode, &Hotkey)) { if(KWMHotkeys.Prefix.Enabled) { CheckPrefixTimeout(); if((Hotkey.Prefixed || KWMHotkeys.Prefix.Global) && !KWMHotkeys.Prefix.Active) return false; if((Hotkey.Prefixed || KWMHotkeys.Prefix.Global) && KWMHotkeys.Prefix.Active) KWMHotkeys.Prefix.Time = std::chrono::steady_clock::now(); } if(IsHotkeyStateReqFulfilled(&Hotkey)) { if(Hotkey.Command.empty()) return true; if(Hotkey.IsSystemCommand) system(Hotkey.Command.c_str()); else KwmInterpretCommand(Hotkey.Command, 0); return true; } } return false; }
void * KwmWindowMonitor(void*) { while(1) { if(KWMTiling.MonitorWindows) { pthread_mutex_lock(&KWMThread.Lock); CheckPrefixTimeout(); if(!IsSpaceTransitionInProgress() && IsActiveSpaceManaged()) { if(KWMScreen.Transitioning) KWMScreen.Transitioning = false; else UpdateWindowTree(); } pthread_mutex_unlock(&KWMThread.Lock); } usleep(200000); } }