mirror of
https://github.com/cathery/sys-con.git
synced 2024-10-01 12:22:01 +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];
|
ControllerButton buttons[NUM_CONTROLLERBUTTONS];
|
||||||
float triggers[2];
|
float triggers[2];
|
||||||
NormalizedStick sticks[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[10] ? KEY_MINUS : 0);
|
||||||
m_state.state.buttons |= (data.buttons[11] ? KEY_PLUS : 0);
|
m_state.state.buttons |= (data.buttons[11] ? KEY_PLUS : 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[12] ? KEY_DUP : 0);
|
||||||
m_state.state.buttons |= (data.buttons[13] ? KEY_DRIGHT : 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[14] ? KEY_DDOWN : 0);
|
||||||
m_state.state.buttons |= (data.buttons[15] ? KEY_DLEFT : 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[16] ? KEY_CAPTURE : 0);
|
||||||
m_state.state.buttons |= (data.buttons[17] ? KEY_HOME : 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()
|
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[10] ? KEY_MINUS : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[11] ? KEY_PLUS : 0);
|
m_hdlState.buttons |= (data.buttons[11] ? KEY_PLUS : 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[12] ? KEY_DUP : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
m_hdlState.buttons |= (data.buttons[13] ? KEY_DRIGHT : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
m_hdlState.buttons |= (data.buttons[14] ? KEY_DDOWN : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[15] ? KEY_DLEFT : 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[16] ? KEY_CAPTURE : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[17] ? KEY_HOME : 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()
|
void SwitchHDLHandler::UpdateInput()
|
||||||
|
@ -87,6 +87,11 @@ static int _ParseConfigLine(void *dummy, const char *section, const char *name,
|
|||||||
temp_config.triggerDeadzonePercent = atoi(value);
|
temp_config.triggerDeadzonePercent = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(name, "swap_dpad_and_lstick") == 0)
|
||||||
|
{
|
||||||
|
temp_config.swapDPADandLSTICK = (strcmp(value, "true") ? false : true);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user