diff --git a/src/Ryujinx.Input.SDL3/SDL3GamepadDriver.cs b/src/Ryujinx.Input.SDL3/SDL3GamepadDriver.cs index ac0e7f22e..0eb64cfab 100644 --- a/src/Ryujinx.Input.SDL3/SDL3GamepadDriver.cs +++ b/src/Ryujinx.Input.SDL3/SDL3GamepadDriver.cs @@ -154,8 +154,14 @@ namespace Ryujinx.Input.SDL3 if (SDL3JoyConPair.IsCombinable(_gamepadsIds)) { + // TODO - It appears that you can only have one joy con pair connected at a time? + // This was also the behavior before SDL3 _gamepadsIds.Remove(GetInstanceIdFromId(SDL3JoyConPair.Id)); - _gamepadsIds.Add(joystickInstanceId, SDL3JoyConPair.Id); + uint fakeInstanceID = uint.MaxValue; + while (!_gamepadsIds.TryAdd((SDL_JoystickID)fakeInstanceID, SDL3JoyConPair.Id)) + { + fakeInstanceID--; + } joyConPairConnected = true; } } diff --git a/src/Ryujinx.Input.SDL3/SDL3JoyConPair.cs b/src/Ryujinx.Input.SDL3/SDL3JoyConPair.cs index 08f6f7d37..303875eac 100644 --- a/src/Ryujinx.Input.SDL3/SDL3JoyConPair.cs +++ b/src/Ryujinx.Input.SDL3/SDL3JoyConPair.cs @@ -110,7 +110,7 @@ namespace Ryujinx.Input.SDL3 .ToDictionary(); SDL_JoystickID idx; int leftIndex = gamepadNames.TryGetValue(SDL3JoyCon.LeftName, out idx) ? (int)idx : -1; - int rightIndex = gamepadNames.TryGetValue(SDL3JoyCon.LeftName, out idx) ? (int)idx : -1; + int rightIndex = gamepadNames.TryGetValue(SDL3JoyCon.RightName, out idx) ? (int)idx : -1; return (leftIndex, rightIndex); }