more fixes, better sanity detection and error messages. it shouldn't hog the keyboard in any case now. it won't grab when modifiers or keys are borked.
This commit is contained in:
parent
2037631f75
commit
8ea3db574a
3 changed files with 21 additions and 19 deletions
|
@ -195,13 +195,8 @@ void keytree::addAction(Action::ActionType action, unsigned int mask,
|
|||
}
|
||||
|
||||
KeySym sym = XStringToKeysym(key.c_str());
|
||||
|
||||
if (sym == 0) {
|
||||
std::cerr << "Key " << key << " is invalid! (Action ignored)\n";
|
||||
return;
|
||||
}
|
||||
|
||||
keynode *tmp = new keynode;
|
||||
|
||||
tmp->action = new Action(action,
|
||||
XKeysymToKeycode(_display, sym),
|
||||
mask, arg);
|
||||
|
@ -230,9 +225,9 @@ void keytree::setCurrentNodeProps(Action::ActionType action, unsigned int mask,
|
|||
if (_current->action)
|
||||
delete _current->action;
|
||||
|
||||
KeySym sym = XStringToKeysym(key.c_str());
|
||||
_current->action = new Action(action,
|
||||
XKeysymToKeycode(_display,
|
||||
XStringToKeysym(key.c_str())),
|
||||
XKeysymToKeycode(_display, sym),
|
||||
mask, arg);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,6 +61,18 @@ void parser::parse(string rc_file)
|
|||
_kt->initialize();
|
||||
}
|
||||
|
||||
void parser::setKey(string key)
|
||||
{
|
||||
KeySym sym = XStringToKeysym(key.c_str());
|
||||
|
||||
if (sym == 0) {
|
||||
std::cerr << "ERROR: Invalid key (" << key << ")! This may cause odd behavior.\n";
|
||||
_add = false;
|
||||
} else {
|
||||
_key = key;
|
||||
}
|
||||
}
|
||||
|
||||
void parser::setAction(string act)
|
||||
{
|
||||
struct {
|
||||
|
@ -189,14 +201,11 @@ void parser::endChain()
|
|||
|
||||
void parser::setChainBinding()
|
||||
{
|
||||
if (_mask != 0 && _key != "") {
|
||||
if (!_add) {
|
||||
cout << "Error: Bad modifier detected on chain's root key.\n";
|
||||
_add = true;
|
||||
}
|
||||
if (_add)
|
||||
_kt->setCurrentNodeProps(Action::noaction, _mask, _key, "");
|
||||
reset();
|
||||
}
|
||||
|
||||
_add = true;
|
||||
reset();
|
||||
}
|
||||
|
||||
void parser::reset()
|
||||
|
|
|
@ -36,9 +36,6 @@ public:
|
|||
|
||||
void parse(std::string);
|
||||
|
||||
void setKey(std::string key)
|
||||
{ _key = key; }
|
||||
|
||||
void setArgumentNum(std::string arg)
|
||||
{ _arg = arg; }
|
||||
|
||||
|
@ -57,6 +54,7 @@ public:
|
|||
void setOption(std::string opt)
|
||||
{ _config->addOption(opt, _arg); }
|
||||
|
||||
void setKey(std::string);
|
||||
void setAction(std::string);
|
||||
void addModifier(std::string);
|
||||
void endAction();
|
||||
|
|
Loading…
Reference in a new issue