diff options
Diffstat (limited to 'Source/Core/InputCommon/Src/ControllerInterface')
5 files changed, 79 insertions, 38 deletions
diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp index 8e96231674..6a1427406d 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp @@ -157,7 +157,7 @@ bool ControllerInterface::UpdateOutput(const bool force) if (force) lk.lock(); else if (!lk.try_lock()) - return false; + return false; size_t ok_count = 0; @@ -173,7 +173,7 @@ bool ControllerInterface::UpdateOutput(const bool force) // // Device :: ~Device // -// dtor, delete all inputs/outputs on device destruction +// Destructor, delete all inputs/outputs on device destruction // ControllerInterface::Device::~Device() { @@ -209,9 +209,9 @@ void ControllerInterface::Device::AddOutput(Output* const o) // // Device :: ClearInputState // -// device classes should override this func -// ControllerInterface will call this when the device returns failure durring UpdateInput -// used to try to set all buttons and axes to their default state when user unplugs a gamepad durring play +// Device classes should override this function +// ControllerInterface will call this when the device returns failure during UpdateInput +// used to try to set all buttons and axes to their default state when user unplugs a gamepad during play // buttons/axes that were held down at the time of unplugging should be seen as not pressed after unplugging // void ControllerInterface::Device::ClearInputState() @@ -239,8 +239,10 @@ ControlState ControllerInterface::InputReference::State( const ControlState igno // bit of hax for "NOT" to work at start of expression if (ci != ce) + { if (ci->mode == 2) state = 1; + } for (; ci!=ce; ++ci) { @@ -354,7 +356,8 @@ bool ControllerInterface::DeviceQualifier::operator==(const ControllerInterface: if (name == devq.name) if (source == devq.source) return true; - return false; + + return false; } // @@ -421,7 +424,9 @@ void ControllerInterface::UpdateReference(ControllerInterface::ControlReference* break; // no terminating '`' character } else + { ctrl_str += c; + } } } @@ -478,7 +483,9 @@ ControllerInterface::Device::Control* ControllerInterface::InputReference::Detec return *i; } else if ((*i)->GetState() < (1 - INPUT_DETECT_THRESHOLD)) + { *state = false; + } } Common::SleepCurrentThread(10); time += 10; } @@ -490,8 +497,8 @@ ControllerInterface::Device::Control* ControllerInterface::InputReference::Detec // // OutputReference :: Detect // -// totally different from the inputReference detect / i have them combined so it was simplier to make the gui. -// the gui doesnt know the difference between an input and an output / its odd but i was lazy and it was easy +// Totally different from the inputReference detect / I have them combined so it was simpler to make the GUI. +// The GUI doesn't know the difference between an input and an output / it's odd but I was lazy and it was easy // // set all binded outputs to <range> power for x milliseconds return false // @@ -499,7 +506,7 @@ ControllerInterface::Device::Control* ControllerInterface::OutputReference::Dete { // ignore device - // dont hang if we dont even have any controls mapped + // don't hang if we don't even have any controls mapped if (m_controls.size()) { State(1); diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp index 9bc5364e76..ed5d1383ec 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp @@ -319,9 +319,13 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI eff.lpvTypeSpecificParams = &diCF; } else if (1 == f) + { eff.cbTypeSpecificParams = sizeof(DIRAMPFORCE); + } else + { eff.cbTypeSpecificParams = sizeof(DIPERIODIC); + } LPDIRECTINPUTEFFECT pEffect; if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL))) @@ -427,7 +431,9 @@ bool Joystick::UpdateInput() } } else + { hr = m_device->GetDeviceState(sizeof(m_state_in), &m_state_in); + } // try reacquire if input lost if (DIERR_INPUTLOST == hr || DIERR_NOTACQUIRED == hr) @@ -460,12 +466,16 @@ bool Joystick::UpdateOutput() ok_count += SUCCEEDED(i->iface->SetParameters(&eff, DIEP_TYPESPECIFICPARAMS | DIEP_START)); } else + { ok_count += SUCCEEDED(i->iface->Stop()); + } i->params = NULL; } else + { ++ok_count; + } } return (m_state_out.size() == ok_count); @@ -492,7 +502,9 @@ std::string Joystick::Axis::GetName() const } // slider else + { ss << "Slider " << (int)(m_index - 6); + } ss << (m_range < 0 ? '-' : '+'); return ss.str(); diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp index aea12c065c..866bce9671 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -56,15 +56,19 @@ void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<ControllerInterfac if (SUCCEEDED(idi8->CreateDevice( GUID_SysKeyboard, &kb_device, NULL))) { if (SUCCEEDED(kb_device->SetDataFormat(&c_dfDIKeyboard))) - if (SUCCEEDED(kb_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) { - if (SUCCEEDED(idi8->CreateDevice( GUID_SysMouse, &mo_device, NULL ))) + if (SUCCEEDED(kb_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) { - if (SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2))) - if (SUCCEEDED(mo_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) + if (SUCCEEDED(idi8->CreateDevice( GUID_SysMouse, &mo_device, NULL ))) { - devices.push_back(new KeyboardMouse(kb_device, mo_device)); - return; + if (SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2))) + { + if (SUCCEEDED(mo_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) + { + devices.push_back(new KeyboardMouse(kb_device, mo_device)); + return; + } + } } } } @@ -203,7 +207,9 @@ bool KeyboardMouse::UpdateOutput() memset( this, 0, sizeof(*this) ); type = INPUT_KEYBOARD; ki.wVk = key; - if (up) ki.dwFlags = KEYEVENTF_KEYUP; + + if (up) + ki.dwFlags = KEYEVENTF_KEYUP; } }; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp index c5ee3af23f..6c74c55d97 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp @@ -34,7 +34,7 @@ void Init( std::vector<ControllerInterface::Device*>& devices ) std::map<std::string, int> name_counts; if (SDL_Init( SDL_INIT_FLAGS ) >= 0) - { + { // joysticks for(int i = 0; i < SDL_NumJoysticks(); ++i) { @@ -49,7 +49,7 @@ void Init( std::vector<ControllerInterface::Device*>& devices ) delete js; } } - } + } } Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsigned int index) @@ -63,7 +63,7 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi // "why don't my 360 gamepad triggers/rumble work correctly" #ifdef _WIN32 // checking the name is probably good (and hacky) enough - // but i'll double check with the num of buttons/axes + // but I'll double check with the num of buttons/axes std::string lcasename = GetName(); std::transform(lcasename.begin(), lcasename.end(), lcasename.begin(), tolower); @@ -204,7 +204,9 @@ void Joystick::ConstantEffect::SetState(const ControlState state) m_effect.effect.constant.length = SDL_HAPTIC_INFINITY; } else + { m_effect.effect.type = 0; + } const Sint16 old = m_effect.effect.constant.level; m_effect.effect.constant.level = state * 0x7FFF; @@ -220,7 +222,9 @@ void Joystick::RampEffect::SetState(const ControlState state) m_effect.effect.ramp.length = SDL_HAPTIC_INFINITY; } else + { m_effect.effect.type = 0; + } const Sint16 old = m_effect.effect.ramp.start; m_effect.effect.ramp.start = state * 0x7FFF; @@ -235,15 +239,17 @@ void Joystick::SineEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_SINE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 500; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 500; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -255,15 +261,17 @@ void Joystick::SquareEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_SQUARE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 100; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 100; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -275,15 +283,17 @@ void Joystick::TriangleEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_TRIANGLE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 100; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 100; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -316,7 +326,9 @@ bool Joystick::UpdateOutput() else // effect is already uploaded { if (i->effect.type) // if ouputstate >0 + { SDL_HapticUpdateEffect(m_haptic, i->id, &i->effect); // update the effect + } else { SDL_HapticStopEffect(m_haptic, i->id); // else, stop and remove the effect diff --git a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp index 7fe54d0d09..f9df3891bb 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp @@ -31,13 +31,13 @@ static const struct { "Thumb R", XINPUT_GAMEPAD_RIGHT_THUMB } }; -static const char* const named_triggers[] = +static const char* const named_triggers[] = { "Trigger L", "Trigger R" }; -static const char* const named_axes[] = +static const char* const named_axes[] = { "Left X", "Left Y", @@ -45,7 +45,7 @@ static const char* const named_axes[] = "Right Y" }; -static const char* const named_motors[] = +static const char* const named_motors[] = { "Motor L", "Motor R" @@ -66,12 +66,14 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index) ZeroMemory(&m_current_state_out, sizeof(m_current_state_out)); // XInputGetCaps seems to always claim all capabilities are supported - // but i will leave all this stuff in, incase m$ fixes xinput up a bit + // but I will leave all this stuff in, incase m$ fixes xinput up a bit // get supported buttons for (int i = 0; i != sizeof(named_buttons)/sizeof(*named_buttons); ++i) + { if (named_buttons[i].bitmask & caps.Gamepad.wButtons) AddInput(new Button(i, m_state_in.Gamepad.wButtons)); + } // get supported triggers for (int i = 0; i != sizeof(named_triggers)/sizeof(*named_triggers); ++i) @@ -114,8 +116,8 @@ void Device::ClearInputState() std::string Device::GetName() const { // why aren't these defined - // subtype doesn't seem to work, i tested with 2 diff arcade sticks, both were shown as gamepad - // ill leave it in anyway, maybe m$ will fix it + // subtype doesn't seem to work, I tested with 2 different arcade sticks, both were shown as gamepad + // I'll leave it in anyway, maybe m$ will fix it switch (m_subtype) { @@ -140,7 +142,7 @@ std::string Device::GetSource() const return "XInput"; } -// update i/o +// Update I/O bool Device::UpdateInput() { @@ -157,7 +159,9 @@ bool Device::UpdateOutput() return (ERROR_SUCCESS == XInputSetState(m_index, &m_state_out)); } else + { return true; + } } // GET name/source/id |
