Fixed --mimic-xpad
This commit is contained in:
parent
e1271fc06e
commit
423d0bf1f7
5 changed files with 45 additions and 33 deletions
|
@ -43,10 +43,16 @@ ButtonEvent::create_abs(int code)
|
|||
return ButtonEvent::create(new AbsButtonEventHandler(code));
|
||||
}
|
||||
|
||||
ButtonEventPtr
|
||||
ButtonEvent::create_key(int device_id, int code)
|
||||
{
|
||||
return ButtonEvent::create(new KeyButtonEventHandler(device_id, code));
|
||||
}
|
||||
|
||||
ButtonEventPtr
|
||||
ButtonEvent::create_key(int code)
|
||||
{
|
||||
return ButtonEvent::create(new KeyButtonEventHandler(code));
|
||||
return ButtonEvent::create(new KeyButtonEventHandler(DEVICEID_AUTO, code));
|
||||
}
|
||||
|
||||
ButtonEventPtr
|
||||
|
@ -245,7 +251,7 @@ KeyButtonEventHandler::KeyButtonEventHandler() :
|
|||
std::fill_n(m_secondary_codes, MAX_MODIFIER + 1, UIEvent::invalid());
|
||||
}
|
||||
|
||||
KeyButtonEventHandler::KeyButtonEventHandler(int code) :
|
||||
KeyButtonEventHandler::KeyButtonEventHandler(int device_id, int code) :
|
||||
m_state(false),
|
||||
m_codes(),
|
||||
m_secondary_codes(),
|
||||
|
@ -254,7 +260,7 @@ KeyButtonEventHandler::KeyButtonEventHandler(int code) :
|
|||
{
|
||||
std::fill_n(m_codes, MAX_MODIFIER + 1, UIEvent::invalid());
|
||||
std::fill_n(m_secondary_codes, MAX_MODIFIER + 1, UIEvent::invalid());
|
||||
m_codes[0] = UIEvent::create(DEVICEID_AUTO, EV_KEY, code);
|
||||
m_codes[0] = UIEvent::create(device_id, EV_KEY, code);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -37,6 +37,7 @@ public:
|
|||
static ButtonEventPtr invalid();
|
||||
static ButtonEventPtr create(ButtonEventHandler* handler);
|
||||
static ButtonEventPtr create_key(int code);
|
||||
static ButtonEventPtr create_key(int device_id, int code);
|
||||
static ButtonEventPtr create_key();
|
||||
static ButtonEventPtr create_abs(int code);
|
||||
static ButtonEventPtr create_rel(int code);
|
||||
|
@ -79,7 +80,7 @@ public:
|
|||
|
||||
public:
|
||||
KeyButtonEventHandler();
|
||||
KeyButtonEventHandler(int code);
|
||||
KeyButtonEventHandler(int deviceid, int code);
|
||||
|
||||
void init(UInput& uinput, int slot, bool extra_devices);
|
||||
void send(UInput& uinput, bool value);
|
||||
|
|
|
@ -542,7 +542,7 @@ CommandLineParser::parse_args(int argc, char** argv, Options* options)
|
|||
break;
|
||||
|
||||
case OPTION_MIMIC_XPAD:
|
||||
opts.get_controller_options().uinput.mimic_xpad();
|
||||
opts.set_mimic_xpad();
|
||||
break;
|
||||
|
||||
case OPTION_TYPE:
|
||||
|
|
|
@ -233,6 +233,12 @@ Options::set_force_feedback(const std::string& value)
|
|||
void
|
||||
Options::set_mimic_xpad()
|
||||
{
|
||||
// BTN_BACK is recognized as mouse button, so we have to disallow
|
||||
// automatic allocation
|
||||
extra_devices = false;
|
||||
extra_events = false;
|
||||
|
||||
set_device_name("Microsoft X-Box 360 pad");
|
||||
get_controller_options().uinput.mimic_xpad();
|
||||
}
|
||||
|
||||
|
|
|
@ -55,42 +55,41 @@ UInputOptions::get_axis_map() const
|
|||
void
|
||||
UInputOptions::mimic_xpad()
|
||||
{
|
||||
// FIXME: need to set this somewhere:
|
||||
// device_name = "Microsoft X-Box 360 pad";
|
||||
// device_name is set in Options::set_mimic_xpad()
|
||||
|
||||
get_btn_map().bind(XBOX_BTN_START, ButtonEvent::create_key(BTN_START));
|
||||
get_btn_map().bind(XBOX_BTN_GUIDE, ButtonEvent::create_key(BTN_MODE));
|
||||
get_btn_map().bind(XBOX_BTN_BACK, ButtonEvent::create_key(BTN_BACK));
|
||||
get_btn_map().bind(XBOX_BTN_START, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_START));
|
||||
get_btn_map().bind(XBOX_BTN_GUIDE, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_MODE));
|
||||
get_btn_map().bind(XBOX_BTN_BACK, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_BACK));
|
||||
|
||||
get_btn_map().bind(XBOX_BTN_A, ButtonEvent::create_key(BTN_A));
|
||||
get_btn_map().bind(XBOX_BTN_B, ButtonEvent::create_key(BTN_B));
|
||||
get_btn_map().bind(XBOX_BTN_X, ButtonEvent::create_key(BTN_X));
|
||||
get_btn_map().bind(XBOX_BTN_Y, ButtonEvent::create_key(BTN_Y));
|
||||
get_btn_map().bind(XBOX_BTN_A, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_A));
|
||||
get_btn_map().bind(XBOX_BTN_B, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_B));
|
||||
get_btn_map().bind(XBOX_BTN_X, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_X));
|
||||
get_btn_map().bind(XBOX_BTN_Y, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_Y));
|
||||
|
||||
get_btn_map().bind(XBOX_BTN_LB, ButtonEvent::create_key(BTN_TL));
|
||||
get_btn_map().bind(XBOX_BTN_RB, ButtonEvent::create_key(BTN_TR));
|
||||
get_btn_map().bind(XBOX_BTN_LB, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_TL));
|
||||
get_btn_map().bind(XBOX_BTN_RB, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_TR));
|
||||
|
||||
get_btn_map().bind(XBOX_BTN_LT, ButtonEvent::create_key(BTN_TL2));
|
||||
get_btn_map().bind(XBOX_BTN_RT, ButtonEvent::create_key(BTN_TR2));
|
||||
get_btn_map().bind(XBOX_BTN_LT, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_TL2));
|
||||
get_btn_map().bind(XBOX_BTN_RT, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_TR2));
|
||||
|
||||
get_btn_map().bind(XBOX_BTN_THUMB_L, ButtonEvent::create_key(BTN_THUMBL));
|
||||
get_btn_map().bind(XBOX_BTN_THUMB_R, ButtonEvent::create_key(BTN_THUMBR));
|
||||
get_btn_map().bind(XBOX_BTN_THUMB_L, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_THUMBL));
|
||||
get_btn_map().bind(XBOX_BTN_THUMB_R, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_THUMBR));
|
||||
|
||||
get_btn_map().bind(XBOX_DPAD_UP, ButtonEvent::create_key(BTN_BASE));
|
||||
get_btn_map().bind(XBOX_DPAD_DOWN, ButtonEvent::create_key(BTN_BASE2));
|
||||
get_btn_map().bind(XBOX_DPAD_LEFT, ButtonEvent::create_key(BTN_BASE3));
|
||||
get_btn_map().bind(XBOX_DPAD_RIGHT, ButtonEvent::create_key(BTN_BASE4));
|
||||
get_btn_map().bind(XBOX_DPAD_UP, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_BASE));
|
||||
get_btn_map().bind(XBOX_DPAD_DOWN, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_BASE2));
|
||||
get_btn_map().bind(XBOX_DPAD_LEFT, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_BASE3));
|
||||
get_btn_map().bind(XBOX_DPAD_RIGHT, ButtonEvent::create_key(DEVICEID_JOYSTICK, BTN_BASE4));
|
||||
|
||||
// Axis Mapping
|
||||
get_axis_map().bind(XBOX_AXIS_X1, AxisEvent::create_abs(DEVICEID_AUTO, ABS_X, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_Y1, AxisEvent::create_abs(DEVICEID_AUTO, ABS_Y, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_X2, AxisEvent::create_abs(DEVICEID_AUTO, ABS_RX, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_Y2, AxisEvent::create_abs(DEVICEID_AUTO, ABS_RY, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_LT, AxisEvent::create_abs(DEVICEID_AUTO, ABS_Z, 0, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_RT, AxisEvent::create_abs(DEVICEID_AUTO, ABS_RZ, 0, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_TRIGGER, AxisEvent::create_abs(DEVICEID_AUTO, ABS_Z, -255, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_DPAD_X, AxisEvent::create_abs(DEVICEID_AUTO, ABS_HAT0X, -1, 1, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_DPAD_Y, AxisEvent::create_abs(DEVICEID_AUTO, ABS_HAT0Y, -1, 1, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_X1, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_X, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_Y1, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_Y, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_X2, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_RX, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_Y2, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_RY, -32768, 32767, 16, 128));
|
||||
get_axis_map().bind(XBOX_AXIS_LT, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_Z, 0, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_RT, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_RZ, 0, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_TRIGGER, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_Z, -255, 255, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_DPAD_X, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_HAT0X, -1, 1, 0, 0));
|
||||
get_axis_map().bind(XBOX_AXIS_DPAD_Y, AxisEvent::create_abs(DEVICEID_JOYSTICK, ABS_HAT0Y, -1, 1, 0, 0));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Reference in a new issue