Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/key.cc')
-rw-r--r--src/client/key.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/client/key.cc b/src/client/key.cc
index c25fa2b..2ab32ae 100644
--- a/src/client/key.cc
+++ b/src/client/key.cc
@@ -10,7 +10,7 @@
namespace client
{
-Key::Key(const char *name, int keysym, char ascii, const char *bind)
+Key::Key(const char *name, int keysym, char ascii)
{
key_sym = keysym;
key_ascii = ascii;
@@ -21,17 +21,11 @@ Key::Key(const char *name, int keysym, char ascii, const char *bind)
key_name.assign(name);
clear();
-
- if (bind)
- key_bind.assign(bind);
-
- key_bind_shift.clear();
- key_bind_ctrl.clear();
- key_bind_alt.clear();
}
Key::~Key()
{
+ clear();
}
std::string const & Key::bind(Modifier mod) const
@@ -47,10 +41,11 @@ std::string const & Key::bind(Modifier mod) const
return key_bind_ctrl;
break;
case Alt:
+ return key_bind_alt;
break;
}
- return key_bind_alt;
+ return key_bind;
}
void Key::clear()
@@ -59,12 +54,15 @@ void Key::clear()
key_bind_shift.clear();
key_bind_ctrl.clear();
key_bind_alt.clear();
+
+ key_action = 0;
}
void Key::clear(Modifier mod)
{
switch (mod) {
case None:
+ key_action = 0;
key_bind.clear();
break;
case Shift:
@@ -79,15 +77,16 @@ void Key::clear(Modifier mod)
}
}
-void Key::assign(Modifier mod, const char *bind)
+void Key::assign(Modifier mod, const char *bind, Action *action)
{
if (!bind) {
clear(mod);
return;
}
-
+
switch (mod) {
case None:
+ key_action = action;
key_bind.assign(bind);
aux::trim(key_bind);
break;