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