| 95 | } |
| 96 | |
| 97 | void SwitchAbstractedPadHandler::FillAbstractedState(const NormalizedButtonData& data) |
| 98 | { |
| 99 | m_state.state.buttons = 0; |
| 100 | m_state.state.buttons |= (data.buttons[0] ? HidNpadButton_X : 0); |
| 101 | m_state.state.buttons |= (data.buttons[1] ? HidNpadButton_A : 0); |
| 102 | m_state.state.buttons |= (data.buttons[2] ? HidNpadButton_B : 0); |
| 103 | m_state.state.buttons |= (data.buttons[3] ? HidNpadButton_Y : 0); |
| 104 | |
| 105 | m_state.state.buttons |= (data.buttons[4] ? HidNpadButton_StickL : 0); |
| 106 | m_state.state.buttons |= (data.buttons[5] ? HidNpadButton_StickR : 0); |
| 107 | |
| 108 | m_state.state.buttons |= (data.buttons[6] ? HidNpadButton_L : 0); |
| 109 | m_state.state.buttons |= (data.buttons[7] ? HidNpadButton_R : 0); |
| 110 | |
| 111 | m_state.state.buttons |= (data.buttons[8] ? HidNpadButton_ZL : 0); |
| 112 | m_state.state.buttons |= (data.buttons[9] ? HidNpadButton_ZR : 0); |
| 113 | |
| 114 | m_state.state.buttons |= (data.buttons[10] ? HidNpadButton_Minus : 0); |
| 115 | m_state.state.buttons |= (data.buttons[11] ? HidNpadButton_Plus : 0); |
| 116 | |
| 117 | ControllerConfig* config = GetController()->GetConfig(); |
| 118 | |
| 119 | if (config && config->swapDPADandLSTICK) |
| 120 | { |
| 121 | m_state.state.buttons |= ((data.sticks[0].axis_y > 0.5f) ? HidNpadButton_Up : 0); |
| 122 | m_state.state.buttons |= ((data.sticks[0].axis_x > 0.5f) ? HidNpadButton_Right : 0); |
| 123 | m_state.state.buttons |= ((data.sticks[0].axis_y < -0.5f) ? HidNpadButton_Down : 0); |
| 124 | m_state.state.buttons |= ((data.sticks[0].axis_x < -0.5f) ? HidNpadButton_Left : 0); |
| 125 | |
| 126 | float daxis_x{}, daxis_y{}; |
| 127 | |
| 128 | daxis_y += data.buttons[12] ? 1.0f : 0.0f; // DUP |
| 129 | daxis_x += data.buttons[13] ? 1.0f : 0.0f; // DRIGHT |
| 130 | daxis_y += data.buttons[14] ? -1.0f : 0.0f; // DDOWN |
| 131 | daxis_x += data.buttons[15] ? -1.0f : 0.0f; // DLEFT |
| 132 | |
| 133 | ConvertAxisToSwitchAxis(daxis_x, daxis_y, 0, &m_state.state.analog_stick_l.x, &m_state.state.analog_stick_l.y); |
| 134 | } |
| 135 | else |
| 136 | { |
| 137 | m_state.state.buttons |= (data.buttons[12] ? HidNpadButton_Up : 0); |
| 138 | m_state.state.buttons |= (data.buttons[13] ? HidNpadButton_Right : 0); |
| 139 | m_state.state.buttons |= (data.buttons[14] ? HidNpadButton_Down : 0); |
| 140 | m_state.state.buttons |= (data.buttons[15] ? HidNpadButton_Left : 0); |
| 141 | |
| 142 | ConvertAxisToSwitchAxis(data.sticks[0].axis_x, data.sticks[0].axis_y, 0, &m_state.state.analog_stick_l.x, &m_state.state.analog_stick_l.y); |
| 143 | } |
| 144 | |
| 145 | ConvertAxisToSwitchAxis(data.sticks[1].axis_x, data.sticks[1].axis_y, 0, &m_state.state.analog_stick_r.x, &m_state.state.analog_stick_r.y); |
| 146 | |
| 147 | m_state.state.buttons |= (data.buttons[16] ? HiddbgNpadButton_Capture : 0); |
| 148 | m_state.state.buttons |= (data.buttons[17] ? HiddbgNpadButton_Home : 0); |
| 149 | } |
| 150 | |
| 151 | Result SwitchAbstractedPadHandler::UpdateAbstractedState() |
| 152 | { |