Unified mapping, made dpad-only, trigger-as-zaxis, trigger-as-button, dpad-as-button into simple mappings instead of special cases

This commit is contained in:
Ingo Ruhnke 2010-12-13 13:30:09 +01:00
parent 09fcfdae4e
commit 8334c1b2b5
6 changed files with 302 additions and 171 deletions

View file

@ -211,10 +211,10 @@ CommandLineParser::init_ini(Options* opts)
// uinput stuff
("device-name", &opts->uinput_config.device_name)
("trigger-as-button", &opts->uinput_config.trigger_as_button)
("trigger-as-zaxis", &opts->uinput_config.trigger_as_zaxis)
("dpad-as-button", &opts->uinput_config.dpad_as_button)
("dpad-only", &opts->uinput_config.dpad_only)
//FIXME("trigger-as-button", &opts->uinput_config.trigger_as_button)
//FIXME("trigger-as-zaxis", &opts->uinput_config.trigger_as_zaxis)
//FIXME("dpad-as-button", &opts->uinput_config.dpad_as_button)
//FIXME("dpad-only", &opts->uinput_config.dpad_only)
("force-feedback", &opts->uinput_config.force_feedback)
("extra-devices", &opts->uinput_config.extra_devices)
// FIXME: mimic_xpad()
@ -527,9 +527,9 @@ CommandLineParser::parse_args(int argc, char** argv, Options* options)
break;
case OPTION_MOUSE:
opts.uinput_config.dpad_as_button = true;
//FIXME:opts.uinput_config.dpad_as_button = true;
opts.deadzone = 4000;
opts.uinput_config.trigger_as_zaxis = true;
//FIXME:opts.uinput_config.trigger_as_zaxis = true;
arg2vector2("-y2=y2,-trigger=trigger", opts.axis_map, &AxisMapping::from_string);
// send events only every 20msec, lower values cause a jumpy pointer
arg2apply("x1=REL_X:15:20,y1=REL_Y:15:20,"
@ -583,17 +583,23 @@ CommandLineParser::parse_args(int argc, char** argv, Options* options)
break;
case OPTION_DPAD_ONLY:
if (opts.uinput_config.dpad_as_button)
RAISE_EXCEPTION("Can't combine --dpad-as-button with --dpad-only");
opts.uinput_config.dpad_only = true;
opts.uinput_config.axis_map[XBOX_AXIS_X1] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_Y1] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_X2] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_Y2] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_DPAD_X] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_X, -1, 1, 0, 0);
opts.uinput_config.axis_map[XBOX_AXIS_DPAD_Y] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_Y, -1, 1, 0, 0);
break;
case OPTION_DPAD_AS_BUTTON:
if (opts.uinput_config.dpad_only)
throw std::runtime_error("Can't combine --dpad-as-button with --dpad-only");
opts.uinput_config.btn_map.bind(XBOX_DPAD_UP, ButtonEvent::create_key(BTN_BASE));
opts.uinput_config.btn_map.bind(XBOX_DPAD_DOWN, ButtonEvent::create_key(BTN_BASE2));
opts.uinput_config.btn_map.bind(XBOX_DPAD_LEFT, ButtonEvent::create_key(BTN_BASE3));
opts.uinput_config.btn_map.bind(XBOX_DPAD_RIGHT, ButtonEvent::create_key(BTN_BASE4));
opts.uinput_config.dpad_as_button = true;
opts.uinput_config.axis_map[XBOX_AXIS_DPAD_X] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_DPAD_Y] = AxisEvent::invalid();
break;
case OPTION_DEADZONE:
@ -605,14 +611,16 @@ CommandLineParser::parse_args(int argc, char** argv, Options* options)
break;
case OPTION_TRIGGER_AS_BUTTON:
if (opts.uinput_config.trigger_as_zaxis)
{
RAISE_EXCEPTION("Can't combine --trigger-as-button and --trigger-as-zaxis");
}
else
{
opts.uinput_config.trigger_as_button = true;
}
opts.uinput_config.axis_map[XBOX_AXIS_LT] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_RT] = AxisEvent::invalid();
opts.uinput_config.btn_map.bind(XBOX_BTN_LT, ButtonEvent::create_key(BTN_TL2));
opts.uinput_config.btn_map.bind(XBOX_BTN_RT, ButtonEvent::create_key(BTN_TR2));
break;
case OPTION_TRIGGER_AS_ZAXIS:
opts.uinput_config.axis_map[XBOX_AXIS_TRIGGER] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_Z, -255, 255, 0, 0);
opts.uinput_config.axis_map[XBOX_AXIS_LT] = AxisEvent::invalid();
opts.uinput_config.axis_map[XBOX_AXIS_RT] = AxisEvent::invalid();
break;
case OPTION_AUTOFIRE:
@ -649,17 +657,6 @@ CommandLineParser::parse_args(int argc, char** argv, Options* options)
opts.square_axis = true;
break;
case OPTION_TRIGGER_AS_ZAXIS:
if (opts.uinput_config.trigger_as_button)
{
RAISE_EXCEPTION("Can't combine --trigger-as-button and --trigger-as-zaxis");
}
else
{
opts.uinput_config.trigger_as_zaxis = true;
}
break;
case OPTION_HELP_LED:
opts.mode = Options::PRINT_LED_HELP;
break;

View file

@ -176,52 +176,34 @@ uInput::setup_xbox360_gamepad(GamepadType type)
// '- FF_CUSTOM
}
if (cfg.dpad_only)
{
add_axis(XBOX_AXIS_X1, -1, 1);
add_axis(XBOX_AXIS_Y1, -1, 1);
}
else
{
add_axis(XBOX_AXIS_X1, -32768, 32767);
add_axis(XBOX_AXIS_Y1, -32768, 32767);
add_axis(XBOX_AXIS_X1);
add_axis(XBOX_AXIS_Y1);
add_axis(XBOX_AXIS_X2);
add_axis(XBOX_AXIS_Y2);
}
if (!cfg.dpad_only)
{
add_axis(XBOX_AXIS_X2, -32768, 32767);
add_axis(XBOX_AXIS_Y2, -32768, 32767);
}
if (cfg.trigger_as_button)
{
{ // trigger
add_button(XBOX_BTN_LT);
add_button(XBOX_BTN_RT);
}
else if (cfg.trigger_as_zaxis)
{
add_axis(XBOX_AXIS_TRIGGER, -255, 255);
}
else
{
add_axis(XBOX_AXIS_LT, 0, 255);
add_axis(XBOX_AXIS_RT, 0, 255);
add_axis(XBOX_AXIS_TRIGGER);
add_axis(XBOX_AXIS_LT);
add_axis(XBOX_AXIS_RT);
}
if (!cfg.dpad_only)
{
if (!cfg.dpad_as_button)
{
add_axis(XBOX_AXIS_DPAD_X, -1, 1);
add_axis(XBOX_AXIS_DPAD_Y, -1, 1);
}
else
{
add_button(XBOX_DPAD_UP);
add_button(XBOX_DPAD_DOWN);
add_button(XBOX_DPAD_LEFT);
add_button(XBOX_DPAD_RIGHT);
}
add_axis(XBOX_AXIS_DPAD_X);
add_axis(XBOX_AXIS_DPAD_Y);
}
{
add_button(XBOX_DPAD_UP);
add_button(XBOX_DPAD_DOWN);
add_button(XBOX_DPAD_LEFT);
add_button(XBOX_DPAD_RIGHT);
}
add_button(XBOX_BTN_START);
@ -247,8 +229,8 @@ void
uInput::setup_xbox360_guitar()
{
// Whammy and Tilt
add_axis(XBOX_AXIS_X1, -32768, 32767);
add_axis(XBOX_AXIS_Y1, -32768, 32767);
add_axis(XBOX_AXIS_X1);
add_axis(XBOX_AXIS_Y1);
// Dpad
add_button(XBOX_DPAD_UP);
@ -319,22 +301,14 @@ uInput::send(Xbox360Msg& msg)
send_button(XBOX_BTN_X, msg.x);
send_button(XBOX_BTN_Y, msg.y);
if (cfg.trigger_as_zaxis)
{
send_axis(XBOX_AXIS_TRIGGER, (int(msg.rt) - int(msg.lt)));
}
else if (cfg.trigger_as_button)
{
send_button(XBOX_BTN_LT, msg.lt);
send_button(XBOX_BTN_RT, msg.rt);
}
else
{
send_axis(XBOX_AXIS_LT, msg.lt);
send_axis(XBOX_AXIS_RT, msg.rt);
}
send_axis(XBOX_AXIS_TRIGGER, (int(msg.rt) - int(msg.lt)));
send_button(XBOX_BTN_LT, msg.lt);
send_button(XBOX_BTN_RT, msg.rt);
send_axis(XBOX_AXIS_LT, msg.lt);
send_axis(XBOX_AXIS_RT, msg.rt);
if (!cfg.dpad_only)
{
send_axis(XBOX_AXIS_X1, msg.x1);
send_axis(XBOX_AXIS_Y1, -msg.y1);
@ -343,31 +317,21 @@ uInput::send(Xbox360Msg& msg)
send_axis(XBOX_AXIS_Y2, -msg.y2);
}
if (cfg.dpad_as_button)
{
send_button(XBOX_DPAD_UP, msg.dpad_up);
send_button(XBOX_DPAD_DOWN, msg.dpad_down);
send_button(XBOX_DPAD_LEFT, msg.dpad_left);
send_button(XBOX_DPAD_RIGHT, msg.dpad_right);
}
else
{
XboxAxis dpad_x = XBOX_AXIS_DPAD_X;
XboxAxis dpad_y = XBOX_AXIS_DPAD_Y;
if (cfg.dpad_only)
{
dpad_x = XBOX_AXIS_X1;
dpad_y = XBOX_AXIS_Y1;
}
if (msg.dpad_up) send_axis(XBOX_AXIS_DPAD_Y, -1);
else if (msg.dpad_down) send_axis(XBOX_AXIS_DPAD_Y, 1);
else send_axis(XBOX_AXIS_DPAD_Y, 0);
if (msg.dpad_up) send_axis(dpad_y, -1);
else if (msg.dpad_down) send_axis(dpad_y, 1);
else send_axis(dpad_y, 0);
if (msg.dpad_left) send_axis(dpad_x, -1);
else if (msg.dpad_right) send_axis(dpad_x, 1);
else send_axis(dpad_x, 0);
if (msg.dpad_left) send_axis(XBOX_AXIS_DPAD_X, -1);
else if (msg.dpad_right) send_axis(XBOX_AXIS_DPAD_X, 1);
else send_axis(XBOX_AXIS_DPAD_X, 0);
}
}
@ -388,23 +352,14 @@ uInput::send(XboxMsg& msg)
send_button(XBOX_BTN_X, msg.x);
send_button(XBOX_BTN_Y, msg.y);
if (cfg.trigger_as_zaxis)
{
send_axis(XBOX_AXIS_TRIGGER, (int(msg.rt) - int(msg.lt)));
}
else if (cfg.trigger_as_button)
{
send_button(XBOX_BTN_LT, msg.lt);
send_button(XBOX_BTN_RT, msg.rt);
}
else
{
send_axis(XBOX_AXIS_LT, msg.lt);
send_axis(XBOX_AXIS_RT, msg.rt);
}
send_axis(XBOX_AXIS_TRIGGER, (int(msg.rt) - int(msg.lt)));
send_button(XBOX_BTN_LT, msg.lt);
send_button(XBOX_BTN_RT, msg.rt);
send_axis(XBOX_AXIS_LT, msg.lt);
send_axis(XBOX_AXIS_RT, msg.rt);
if (!cfg.dpad_only)
{
send_axis(XBOX_AXIS_X1, msg.x1);
send_axis(XBOX_AXIS_Y1, -msg.y1);
@ -413,31 +368,21 @@ uInput::send(XboxMsg& msg)
send_axis(XBOX_AXIS_Y2, -msg.y2);
}
if (cfg.dpad_as_button)
{
{ // dpad as button
send_button(XBOX_DPAD_UP, msg.dpad_up);
send_button(XBOX_DPAD_DOWN, msg.dpad_down);
send_button(XBOX_DPAD_LEFT, msg.dpad_left);
send_button(XBOX_DPAD_RIGHT, msg.dpad_right);
}
else
{
XboxAxis dpad_x = XBOX_AXIS_DPAD_X;
XboxAxis dpad_y = XBOX_AXIS_DPAD_Y;
if (cfg.dpad_only)
{
dpad_x = XBOX_AXIS_X1;
dpad_y = XBOX_AXIS_Y1;
}
if (msg.dpad_up) send_axis(dpad_y, -1);
else if (msg.dpad_down) send_axis(dpad_y, 1);
else send_axis(dpad_y, 0);
{ // dpad as axis
if (msg.dpad_up) send_axis(XBOX_AXIS_DPAD_Y, -1);
else if (msg.dpad_down) send_axis(XBOX_AXIS_DPAD_Y, 1);
else send_axis(XBOX_AXIS_DPAD_Y, 0);
if (msg.dpad_left) send_axis(dpad_x, -1);
else if (msg.dpad_right) send_axis(dpad_x, 1);
else send_axis(dpad_x, 0);
if (msg.dpad_left) send_axis(XBOX_AXIS_DPAD_X, -1);
else if (msg.dpad_right) send_axis(XBOX_AXIS_DPAD_X, 1);
else send_axis(XBOX_AXIS_DPAD_X, 0);
}
}
@ -618,7 +563,7 @@ uInput::send_axis(XboxAxis code, int32_t value)
}
void
uInput::add_axis(XboxAxis code, int min, int max)
uInput::add_axis(XboxAxis code)
{
const AxisEvent& event = cfg.axis_map[code];
if (event.is_valid())

View file

@ -77,7 +77,7 @@ private:
void send(Xbox360GuitarMsg& msg);
void send(XboxMsg& msg);
void add_axis(XboxAxis code, int min, int max);
void add_axis(XboxAxis code);
void add_button(XboxButton code);
void send_button(XboxButton code, bool value);

View file

@ -22,10 +22,6 @@
uInputCfg::uInputCfg() :
device_name("Xbox Gamepad (userspace driver)"),
trigger_as_button(false),
trigger_as_zaxis(false),
dpad_as_button(false),
dpad_only(false),
force_feedback(false),
extra_devices(true)
{
@ -54,16 +50,18 @@ uInputCfg::uInputCfg() :
btn_map.bind(XBOX_BTN_LB, ButtonEvent::create_key(BTN_TL));
btn_map.bind(XBOX_BTN_RB, ButtonEvent::create_key(BTN_TR));
btn_map.bind(XBOX_BTN_LT, ButtonEvent::create_key(BTN_TL2));
btn_map.bind(XBOX_BTN_RT, ButtonEvent::create_key(BTN_TR2));
// by default unmapped:
//btn_map.bind(XBOX_BTN_LT, ButtonEvent::create_key(BTN_TL2));
//btn_map.bind(XBOX_BTN_RT, ButtonEvent::create_key(BTN_TR2));
btn_map.bind(XBOX_BTN_THUMB_L, ButtonEvent::create_key(BTN_THUMBL));
btn_map.bind(XBOX_BTN_THUMB_R, ButtonEvent::create_key(BTN_THUMBR));
btn_map.bind(XBOX_DPAD_UP, ButtonEvent::create_key(BTN_BASE));
btn_map.bind(XBOX_DPAD_DOWN, ButtonEvent::create_key(BTN_BASE2));
btn_map.bind(XBOX_DPAD_LEFT, ButtonEvent::create_key(BTN_BASE3));
btn_map.bind(XBOX_DPAD_RIGHT, ButtonEvent::create_key(BTN_BASE4));
// by default unmapped
//btn_map.bind(XBOX_DPAD_UP, ButtonEvent::create_key(BTN_BASE));
//btn_map.bind(XBOX_DPAD_DOWN, ButtonEvent::create_key(BTN_BASE2));
//btn_map.bind(XBOX_DPAD_LEFT, ButtonEvent::create_key(BTN_BASE3));
//btn_map.bind(XBOX_DPAD_RIGHT, ButtonEvent::create_key(BTN_BASE4));
// Axis Mapping
axis_map[XBOX_AXIS_X1] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_X, -32768, 32767, 0, 0);
@ -72,7 +70,10 @@ uInputCfg::uInputCfg() :
axis_map[XBOX_AXIS_Y2] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_RY, -32768, 32767, 0, 0);
axis_map[XBOX_AXIS_LT] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_BRAKE, 0, 255, 0, 0);
axis_map[XBOX_AXIS_RT] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_GAS, 0, 255, 0, 0);
axis_map[XBOX_AXIS_TRIGGER] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_Z, -255, 255, 0, 0);
// by default unmapped:
//axis_map[XBOX_AXIS_TRIGGER] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_Z, -255, 255, 0, 0);
axis_map[XBOX_AXIS_DPAD_X] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_HAT0X, -1, 1, 0, 0);
axis_map[XBOX_AXIS_DPAD_Y] = AxisEvent::create_abs(DEVICEID_AUTO, ABS_HAT0Y, -1, 1, 0, 0);
}

View file

@ -29,12 +29,6 @@ class uInputCfg
public:
std::string device_name;
bool trigger_as_button;
bool trigger_as_zaxis;
bool dpad_as_button;
bool dpad_only;
bool force_feedback;
bool extra_devices;

View file

@ -408,9 +408,9 @@ void set_button(XboxGenericMsg& msg, XboxButton button, bool v)
msg.xbox360.rb = v; break;
case XBOX_BTN_LT:
msg.xbox360.lt = v; break;
msg.xbox360.lt = v*255; break;
case XBOX_BTN_RT:
msg.xbox360.rt = v; break;
msg.xbox360.rt = v*255; break;
case XBOX_BTN_THUMB_L:
msg.xbox360.thumb_l = v; break;
@ -500,10 +500,39 @@ int get_axis(XboxGenericMsg& msg, XboxAxis axis)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_DPAD_X:
if (msg.xbox360.dpad_left)
{
return -1;
}
else if (msg.xbox360.dpad_right)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_DPAD_Y:
if (msg.xbox360.dpad_up)
{
return -1;
}
else if (msg.xbox360.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_TRIGGER:
return 0;
return msg.xbox360.rt - msg.xbox360.lt;
case XBOX_AXIS_X1:
return msg.xbox360.x1;
case XBOX_AXIS_Y1:
@ -524,10 +553,39 @@ int get_axis(XboxGenericMsg& msg, XboxAxis axis)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_DPAD_X:
if (msg.xbox.dpad_left)
{
return -1;
}
else if (msg.xbox.dpad_right)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_DPAD_Y:
if (msg.xbox.dpad_up)
{
return -1;
}
else if (msg.xbox.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_TRIGGER:
return 0;
return msg.xbox.rt - msg.xbox.lt;
case XBOX_AXIS_X1:
return msg.xbox.x1;
case XBOX_AXIS_Y1:
@ -598,11 +656,39 @@ float get_axis_float(XboxGenericMsg& msg, XboxAxis axis)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_DPAD_X:
if (msg.xbox360.dpad_left)
{
return -1;
}
else if (msg.xbox360.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_DPAD_Y:
if (msg.xbox360.dpad_up)
{
return -1;
}
else if (msg.xbox360.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_TRIGGER:
// FIXME: Doesn't seem right
return 0.0f;
return (msg.xbox360.rt - msg.xbox360.lt)/255.0f;
case XBOX_AXIS_X1:
return s16_to_float(msg.xbox360.x1);
case XBOX_AXIS_Y1:
@ -623,10 +709,39 @@ float get_axis_float(XboxGenericMsg& msg, XboxAxis axis)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_DPAD_X:
if (msg.xbox.dpad_left)
{
return -1;
}
else if (msg.xbox.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_DPAD_Y:
if (msg.xbox.dpad_up)
{
return -1;
}
else if (msg.xbox.dpad_down)
{
return 1;
}
else
{
return 0;
}
case XBOX_AXIS_TRIGGER:
return 0.0f;
return (msg.xbox.rt - msg.xbox.lt) / 255.0f;
case XBOX_AXIS_X1:
return s16_to_float(msg.xbox.x1);
case XBOX_AXIS_Y1:
@ -655,12 +770,15 @@ void set_axis_float(XboxGenericMsg& msg, XboxAxis axis, float v)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_TRIGGER:
// FIXME: Doesn't seem right
msg.xbox360.lt = v < 0 ? int(v*255) : 0;
msg.xbox360.rt = v > 0 ? int(v*255) : 0;
break;
case XBOX_AXIS_DPAD_X:
if (v > 0.5f)
if (v > 0.5f)
{
msg.xbox360.dpad_left = false;
msg.xbox360.dpad_right = true;
@ -715,11 +833,15 @@ void set_axis_float(XboxGenericMsg& msg, XboxAxis axis, float v)
{
case XBOX_AXIS_MAX:
case XBOX_AXIS_UNKNOWN:
break;
case XBOX_AXIS_TRIGGER:
msg.xbox.lt = v < 0 ? int(v*255) : 0;
msg.xbox.rt = v > 0 ? int(v*255) : 0;
break;
case XBOX_AXIS_DPAD_X:
if (v > 0.5f)
if (v > 0.5f)
{
msg.xbox.dpad_left = false;
msg.xbox.dpad_right = true;
@ -784,9 +906,44 @@ void set_axis(XboxGenericMsg& msg, XboxAxis axis, int v)
break;
case XBOX_AXIS_TRIGGER:
msg.xbox360.lt = v < 0 ? v : 0;
msg.xbox360.rt = v > 0 ? v : 0;
break;
case XBOX_AXIS_DPAD_X:
if (v > 0)
{
msg.xbox360.dpad_left = false;
msg.xbox360.dpad_right = true;
}
else if (v < 0)
{
msg.xbox360.dpad_left = true;
msg.xbox360.dpad_right = false;
}
else
{
msg.xbox360.dpad_left = false;
msg.xbox360.dpad_right = false;
}
break;
case XBOX_AXIS_DPAD_Y:
assert(!"not implemented");
if (v > 0)
{
msg.xbox360.dpad_up = false;
msg.xbox360.dpad_down = true;
}
else if (v < 0)
{
msg.xbox360.dpad_up = true;
msg.xbox360.dpad_down = false;
}
else
{
msg.xbox360.dpad_up = false;
msg.xbox360.dpad_down = false;
}
break;
case XBOX_AXIS_X1:
@ -812,10 +969,46 @@ void set_axis(XboxGenericMsg& msg, XboxAxis axis, int v)
break;
case XBOX_AXIS_DPAD_X:
case XBOX_AXIS_DPAD_Y:
case XBOX_AXIS_TRIGGER:
assert(!"not implement");
if (v > 0)
{
msg.xbox.dpad_left = false;
msg.xbox.dpad_right = true;
}
else if (v < 0)
{
msg.xbox.dpad_left = true;
msg.xbox.dpad_right = false;
}
else
{
msg.xbox.dpad_left = false;
msg.xbox.dpad_right = false;
}
break;
case XBOX_AXIS_DPAD_Y:
if (v > 0)
{
msg.xbox.dpad_up = false;
msg.xbox.dpad_down = true;
}
else if (v < 0)
{
msg.xbox.dpad_up = true;
msg.xbox.dpad_down = false;
}
else
{
msg.xbox.dpad_up = false;
msg.xbox.dpad_down = false;
}
break;
case XBOX_AXIS_TRIGGER:
msg.xbox.lt = v < 0 ? v : 0;
msg.xbox.rt = v > 0 ? v : 0;
break;
case XBOX_AXIS_X1:
msg.xbox.x1 = v; break;
case XBOX_AXIS_Y1:
@ -957,6 +1150,7 @@ std::string btn2string(XboxButton btn)
{
case XBOX_BTN_MAX:
case XBOX_BTN_UNKNOWN: return "unknown";
case XBOX_BTN_START: return "Start";
case XBOX_BTN_GUIDE: return "Guide";
case XBOX_BTN_BACK: return "Back";