diff options
author | Stijn Buys <ingar@osirion.org> | 2010-02-21 19:45:50 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2010-02-21 19:45:50 +0000 |
commit | fe229598d7437a85988eb9255cd0f6bdb6e07cb7 (patch) | |
tree | db45ca0f0732f3dbb3fd2546dc5881a1aec6ae61 /src/client/key.cc | |
parent | 730c452ff5896ed66114e6b2153add9379edef5c (diff) |
optimized keyboard input handling routines
Diffstat (limited to 'src/client/key.cc')
-rw-r--r-- | src/client/key.cc | 21 |
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; |