mirror of
https://github.com/cathery/sys-con.git
synced 2025-02-04 21:39:56 +00:00
Add d-pad and left stick swap option
This commit is contained in:
parent
93abaeed22
commit
8739069e6b
@ -40,4 +40,5 @@ struct ControllerConfig
|
||||
ControllerButton buttons[NUM_CONTROLLERBUTTONS];
|
||||
float triggers[2];
|
||||
NormalizedStick sticks[2];
|
||||
bool swapDPADandLSTICK;
|
||||
};
|
@ -118,16 +118,38 @@ void SwitchAbstractedPadHandler::FillAbstractedState(const NormalizedButtonData
|
||||
m_state.state.buttons |= (data.buttons[10] ? KEY_MINUS : 0);
|
||||
m_state.state.buttons |= (data.buttons[11] ? KEY_PLUS : 0);
|
||||
|
||||
m_state.state.buttons |= (data.buttons[12] ? KEY_DUP : 0);
|
||||
m_state.state.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
||||
m_state.state.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
||||
m_state.state.buttons |= (data.buttons[15] ? KEY_DLEFT : 0);
|
||||
ControllerConfig *config = GetController()->GetConfig();
|
||||
|
||||
if (config && config->swapDPADandLSTICK)
|
||||
{
|
||||
m_state.state.buttons |= ((data.sticks[0].axis_y > 0.5f) ? KEY_DUP : 0);
|
||||
m_state.state.buttons |= ((data.sticks[0].axis_x > 0.5f) ? KEY_DRIGHT : 0);
|
||||
m_state.state.buttons |= ((data.sticks[0].axis_y < -0.5f) ? KEY_DDOWN : 0);
|
||||
m_state.state.buttons |= ((data.sticks[0].axis_x < -0.5f) ? KEY_DLEFT : 0);
|
||||
|
||||
float daxis_x{}, daxis_y{};
|
||||
|
||||
daxis_y += data.buttons[12] ? 1.0f : 0.0f; //DUP
|
||||
daxis_x += data.buttons[13] ? 1.0f : 0.0f; //DRIGHT
|
||||
daxis_y += data.buttons[14] ? -1.0f : 0.0f; //DDOWN
|
||||
daxis_x += data.buttons[15] ? -1.0f : 0.0f; //DLEFT
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(daxis_x, daxis_y, 0, &m_state.state.joysticks[JOYSTICK_LEFT].dx, &m_state.state.joysticks[JOYSTICK_LEFT].dy);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_state.state.buttons |= (data.buttons[12] ? KEY_DUP : 0);
|
||||
m_state.state.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
||||
m_state.state.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
||||
m_state.state.buttons |= (data.buttons[15] ? KEY_DLEFT : 0);
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[0].axis_x, data.sticks[0].axis_y, 0, &m_state.state.joysticks[JOYSTICK_LEFT].dx, &m_state.state.joysticks[JOYSTICK_LEFT].dy);
|
||||
}
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[1].axis_x, data.sticks[1].axis_y, 0, &m_state.state.joysticks[JOYSTICK_RIGHT].dx, &m_state.state.joysticks[JOYSTICK_RIGHT].dy);
|
||||
|
||||
m_state.state.buttons |= (data.buttons[16] ? KEY_CAPTURE : 0);
|
||||
m_state.state.buttons |= (data.buttons[17] ? KEY_HOME : 0);
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[0].axis_x, data.sticks[0].axis_y, 0, &m_state.state.joysticks[JOYSTICK_LEFT].dx, &m_state.state.joysticks[JOYSTICK_LEFT].dy);
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[1].axis_x, data.sticks[1].axis_y, 0, &m_state.state.joysticks[JOYSTICK_RIGHT].dx, &m_state.state.joysticks[JOYSTICK_RIGHT].dy);
|
||||
}
|
||||
|
||||
Result SwitchAbstractedPadHandler::UpdateAbstractedState()
|
||||
|
@ -118,16 +118,38 @@ void SwitchHDLHandler::FillHdlState(const NormalizedButtonData &data)
|
||||
m_hdlState.buttons |= (data.buttons[10] ? KEY_MINUS : 0);
|
||||
m_hdlState.buttons |= (data.buttons[11] ? KEY_PLUS : 0);
|
||||
|
||||
m_hdlState.buttons |= (data.buttons[12] ? KEY_DUP : 0);
|
||||
m_hdlState.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
||||
m_hdlState.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
||||
m_hdlState.buttons |= (data.buttons[15] ? KEY_DLEFT : 0);
|
||||
ControllerConfig *config = GetController()->GetConfig();
|
||||
|
||||
if (config && config->swapDPADandLSTICK)
|
||||
{
|
||||
m_hdlState.buttons |= ((data.sticks[0].axis_y > 0.5f) ? KEY_DUP : 0);
|
||||
m_hdlState.buttons |= ((data.sticks[0].axis_x > 0.5f) ? KEY_DRIGHT : 0);
|
||||
m_hdlState.buttons |= ((data.sticks[0].axis_y < -0.5f) ? KEY_DDOWN : 0);
|
||||
m_hdlState.buttons |= ((data.sticks[0].axis_x < -0.5f) ? KEY_DLEFT : 0);
|
||||
|
||||
float daxis_x{}, daxis_y{};
|
||||
|
||||
daxis_y += data.buttons[12] ? 1.0f : 0.0f; //DUP
|
||||
daxis_x += data.buttons[13] ? 1.0f : 0.0f; //DRIGHT
|
||||
daxis_y += data.buttons[14] ? -1.0f : 0.0f; //DDOWN
|
||||
daxis_x += data.buttons[15] ? -1.0f : 0.0f; //DLEFT
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(daxis_x, daxis_y, 0, &m_hdlState.joysticks[JOYSTICK_LEFT].dx, &m_hdlState.joysticks[JOYSTICK_LEFT].dy);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_hdlState.buttons |= (data.buttons[12] ? KEY_DUP : 0);
|
||||
m_hdlState.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
||||
m_hdlState.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
||||
m_hdlState.buttons |= (data.buttons[15] ? KEY_DLEFT : 0);
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[0].axis_x, data.sticks[0].axis_y, 0, &m_hdlState.joysticks[JOYSTICK_LEFT].dx, &m_hdlState.joysticks[JOYSTICK_LEFT].dy);
|
||||
}
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[1].axis_x, data.sticks[1].axis_y, 0, &m_hdlState.joysticks[JOYSTICK_RIGHT].dx, &m_hdlState.joysticks[JOYSTICK_RIGHT].dy);
|
||||
|
||||
m_hdlState.buttons |= (data.buttons[16] ? KEY_CAPTURE : 0);
|
||||
m_hdlState.buttons |= (data.buttons[17] ? KEY_HOME : 0);
|
||||
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[0].axis_x, data.sticks[0].axis_y, 0, &m_hdlState.joysticks[JOYSTICK_LEFT].dx, &m_hdlState.joysticks[JOYSTICK_LEFT].dy);
|
||||
m_controllerHandler.ConvertAxisToSwitchAxis(data.sticks[1].axis_x, data.sticks[1].axis_y, 0, &m_hdlState.joysticks[JOYSTICK_RIGHT].dx, &m_hdlState.joysticks[JOYSTICK_RIGHT].dy);
|
||||
}
|
||||
|
||||
void SwitchHDLHandler::UpdateInput()
|
||||
|
@ -87,6 +87,11 @@ static int _ParseConfigLine(void *dummy, const char *section, const char *name,
|
||||
temp_config.triggerDeadzonePercent = atoi(value);
|
||||
return 1;
|
||||
}
|
||||
else if (strcmp(name, "swap_dpad_and_lstick") == 0)
|
||||
{
|
||||
temp_config.swapDPADandLSTICK = (strcmp(value, "true") ? false : true);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user