コード例 #1
0
ファイル: keys.cpp プロジェクト: chrishoage/kwm
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;
}
コード例 #2
0
ファイル: kwm.cpp プロジェクト: shijingyu/kwm
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);
    }
}