From 936396e30f31a851fadd6542101a1544ae8597c1 Mon Sep 17 00:00:00 2001 From: Ingo Ruhnke <grumbel@gmx.de> Date: Thu, 9 Dec 2010 13:06:28 +0100 Subject: [PATCH] Implemneted new evdev_absmap handling --- src/command_line_options.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/command_line_options.cpp b/src/command_line_options.cpp index 06fcddd..40a6cb5 100644 --- a/src/command_line_options.cpp +++ b/src/command_line_options.cpp @@ -817,7 +817,21 @@ CommandLineParser::set_buttonmap(const std::string& name, const std::string& val void CommandLineParser::set_evdev_absmap(const std::string& name, const std::string& value) { - //FIXME:m_options->evdev_absmap[str2abs(name)] = string2axis(value); + if (!name.empty()) + { + XboxAxis axis = string2axis(value); + + switch (*name.rbegin()) + { + case '-': m_options->evdev_absmap.bind_minus( str2abs(name.substr(0, name.length()-1)), axis ); break; + case '+': m_options->evdev_absmap.bind_plus ( str2abs(name.substr(0, name.length()-1)), axis ); break; + default: m_options->evdev_absmap.bind_both ( str2abs(name), axis ); break; + } + } + else + { + throw std::runtime_error("invalid evdev-absmap argument: " + name + "=" + value); + } } void