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.
Marius Nita marius@cs.pdx.edu
3 files changed,
21 insertions(+),
19 deletions(-)
M
util/epist/keytree.cc
→
util/epist/keytree.cc
@@ -195,13 +195,8 @@ return;
} KeySym sym = XStringToKeysym(key.c_str()); + keynode *tmp = new keynode; - 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);@@ -229,10 +224,10 @@ string key, string arg)
{ 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); }
M
util/epist/parser.cc
→
util/epist/parser.cc
@@ -61,6 +61,18 @@ _kt->reset();
_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::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()
M
util/epist/parser.hh
→
util/epist/parser.hh
@@ -36,9 +36,6 @@ ~parser();
void parse(std::string); - void setKey(std::string key) - { _key = key; } - void setArgumentNum(std::string arg) { _arg = arg; }@@ -57,6 +54,7 @@
void setOption(std::string opt) { _config->addOption(opt, _arg); } + void setKey(std::string); void setAction(std::string); void addModifier(std::string); void endAction();