void KwmInterpretCommand(std::string Message, int ClientSockFD) { std::vector<std::string> Tokens = SplitString(Message, ' '); if(Tokens[0] == "quit") KwmQuit(); else if(Tokens[0] == "config") KwmConfigCommand(Tokens); else if(Tokens[0] == "query") KwmQueryCommand(Tokens, ClientSockFD); else if(Tokens[0] == "window") KwmWindowCommand(Tokens); else if(Tokens[0] == "space") KwmSpaceCommand(Tokens); else if(Tokens[0] == "display") KwmDisplayCommand(Tokens); else if(Tokens[0] == "tree") KwmTreeCommand(Tokens); else if(Tokens[0] == "write") KwmEmitKeystrokes(CreateStringFromTokens(Tokens, 1)); else if(Tokens[0] == "press") KwmEmitKeystroke(Tokens[1]); else if(Tokens[0] == "mode") KwmModeCommand(Tokens); else if(Tokens[0] == "bindsym" || Tokens[0] == "bindcode") KwmBindCommand(Tokens, false); else if(Tokens[0] == "bindsym_passthrough" || Tokens[0] == "bindcode_passthrough") KwmBindCommand(Tokens, true); else if(Tokens[0] == "unbindsym" || Tokens[0] == "unbindcode") KwmRemoveHotkey(Tokens[1], Tokens[0] == "unbindcode"); else if(Tokens[0] == "rule") KwmAddRule(CreateStringFromTokens(Tokens, 1)); else if(Tokens[0] == "scratchpad") KwmScratchpadCommand(Tokens, ClientSockFD); }
void KwmEmitKeystroke(std::string KeySym) { std::vector<std::string> KeyTokens = SplitString(KeySym, '-'); if(KeyTokens.size() != 2) return; modifiers Mod = {}; std::vector<std::string> Modifiers = SplitString(KeyTokens[0], '+'); for(std::size_t ModIndex = 0; ModIndex < Modifiers.size(); ++ModIndex) { if(Modifiers[ModIndex] == "cmd") Mod.CmdKey = true; else if(Modifiers[ModIndex] == "alt") Mod.AltKey = true; else if(Modifiers[ModIndex] == "ctrl") Mod.CtrlKey = true; else if(Modifiers[ModIndex] == "shift") Mod.ShiftKey = true; } KwmEmitKeystroke(Mod, KeyTokens[1]); }