Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2010-02-21 19:45:50 +0000
committerStijn Buys <ingar@osirion.org>2010-02-21 19:45:50 +0000
commitfe229598d7437a85988eb9255cd0f6bdb6e07cb7 (patch)
treedb45ca0f0732f3dbb3fd2546dc5881a1aec6ae61 /src/client/key.cc
parent730c452ff5896ed66114e6b2153add9379edef5c (diff)
optimized keyboard input handling routines
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;