From 980c5c41dc8e88ab3e7a5751348a92a0662a2ea4 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 21 Jul 2008 22:03:26 +0000 Subject: prepare keybinds for modifier keys, fix for the camera clipping issue --- src/client/key.cc | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 2 deletions(-) (limited to 'src/client/key.cc') diff --git a/src/client/key.cc b/src/client/key.cc index 066f6ef..9b0c942 100644 --- a/src/client/key.cc +++ b/src/client/key.cc @@ -4,6 +4,7 @@ the terms and conditions of the GNU General Public License version 2 */ +#include "auxiliary/functions.h" #include "client/key.h" namespace client { @@ -16,14 +17,86 @@ Key::Key(const char *name, unsigned int keysym, char ascii, const char *bind) key_name.assign(name); + clear(); + if (bind) key_bind.assign(bind); - else - key_bind.clear(); } Key::~Key() { } +std::string const & Key::bind(Modifier mod) const +{ + switch (mod) { + case None: + return key_bind; + break; + case Shift: + return key_bind_shift; + break; + case Ctrl: + return key_bind_ctrl; + break; + case Alt: + break; + } + + return key_bind_alt; +} + +void Key::clear() +{ + key_bind.clear(); + key_bind_shift.clear(); + key_bind_ctrl.clear(); + key_bind_alt.clear(); +} + +void Key::clear(Modifier mod) +{ + switch (mod) { + case None: + key_bind.clear(); + break; + case Shift: + key_bind_shift.clear(); + break; + case Ctrl: + key_bind_ctrl.clear(); + break; + case Alt: + key_bind_alt.clear(); + break; + } +} + +void Key::assign(Modifier mod, const char *bind) +{ + if (!bind) { + clear(mod); + return; + } + + switch (mod) { + case None: + key_bind.assign(bind); + aux::trim(key_bind); + break; + case Shift: + key_bind_shift.assign(bind); + aux::trim(key_bind_shift); + break; + case Ctrl: + key_bind_ctrl.assign(bind); + aux::trim(key_bind_ctrl); + break; + case Alt: + key_bind_alt.assign(bind); + aux::trim(key_bind_alt); + break; + } +} + } -- cgit v1.2.3