diff options
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; |