summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/epist/keytree.cc13
-rw-r--r--util/epist/parser.cc23
-rw-r--r--util/epist/parser.hh4
3 files changed, 21 insertions, 19 deletions
diff --git a/util/epist/keytree.cc b/util/epist/keytree.cc
index 5a3515ea..94b542b0 100644
--- a/util/epist/keytree.cc
+++ b/util/epist/keytree.cc
@@ -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);
@@ -229,10 +224,10 @@ 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);
}
diff --git a/util/epist/parser.cc b/util/epist/parser.cc
index 00be5d7e..5c953aae 100644
--- a/util/epist/parser.cc
+++ b/util/epist/parser.cc
@@ -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()
diff --git a/util/epist/parser.hh b/util/epist/parser.hh
index b1c02a31..d106f16d 100644
--- a/util/epist/parser.hh
+++ b/util/epist/parser.hh
@@ -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();