From fe229598d7437a85988eb9255cd0f6bdb6e07cb7 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 21 Feb 2010 19:45:50 +0000 Subject: optimized keyboard input handling routines --- src/client/key.cc | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/client/key.cc') 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; -- cgit v1.2.3