summaryrefslogtreecommitdiff
path: root/src/bindings.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-02 22:58:32 +0000
committerDana Jansens <danakj@orodu.net>2003-01-02 22:58:32 +0000
commite05d5f7934ce27893f900627fbd06b1679d4c0ad (patch)
tree553ced7070d991c96016e5dca53e6068991602e4 /src/bindings.cc
parent54da8e404b0baa8b4521ce14c8eb9a28ea64e7f9 (diff)
kill button release events
Diffstat (limited to 'src/bindings.cc')
-rw-r--r--src/bindings.cc20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/bindings.cc b/src/bindings.cc
index fade3e69..d6bf85d0 100644
--- a/src/bindings.cc
+++ b/src/bindings.cc
@@ -68,7 +68,7 @@ static bool modvalue(const std::string &mod, unsigned int *val)
return true;
}
-bool OBBindings::translate(const std::string &str, Binding &b) const
+bool OBBindings::translate(const std::string &str, Binding &b,bool askey) const
{
// parse out the base key name
std::string::size_type keybegin = str.find_last_of('-');
@@ -92,14 +92,18 @@ bool OBBindings::translate(const std::string &str, Binding &b) const
// set the binding
b.modifiers = modval;
- KeySym sym = XStringToKeysym(const_cast<char *>(key.c_str()));
- if (sym == NoSymbol) {
- printf(_("Invalid Key name in key binding: %s\n"), key.c_str());
- return false;
+ if (askey) {
+ KeySym sym = XStringToKeysym(const_cast<char *>(key.c_str()));
+ if (sym == NoSymbol) {
+ printf(_("Invalid Key name in key binding: %s\n"), key.c_str());
+ return false;
+ }
+ if (!(b.key = XKeysymToKeycode(otk::OBDisplay::display, sym)))
+ printf(_("No valid keycode for Key in key binding: %s\n"), key.c_str());
+ return b.key != 0;
+ } else {
+ return buttonvalue(key, &b.key);
}
- if (!(b.key = XKeysymToKeycode(otk::OBDisplay::display, sym)))
- printf(_("No valid keycode for Key in key binding: %s\n"), key.c_str());
- return b.key != 0;
}
static void destroytree(BindingTree *tree)