diff --git a/SteamController/Devices/Xbox360Controller.cs b/SteamController/Devices/Xbox360Controller.cs index 8f66a56..8b95a1d 100644 --- a/SteamController/Devices/Xbox360Controller.cs +++ b/SteamController/Devices/Xbox360Controller.cs @@ -13,24 +13,6 @@ namespace SteamController.Devices public const ushort VendorID = 0x045E; public const ushort ProductID = 0x028E; - public static readonly Dictionary codeToButton = new Dictionary() - { - { VirtualX360Code.X360_UP, Xbox360Button.Up }, - { VirtualX360Code.X360_DOWN, Xbox360Button.Down }, - { VirtualX360Code.X360_LEFT, Xbox360Button.Left }, - { VirtualX360Code.X360_RIGHT, Xbox360Button.Right }, - { VirtualX360Code.X360_BACK, Xbox360Button.Back }, - { VirtualX360Code.X360_START, Xbox360Button.Start }, - { VirtualX360Code.X360_A, Xbox360Button.A }, - { VirtualX360Code.X360_B, Xbox360Button.B }, - { VirtualX360Code.X360_X, Xbox360Button.X }, - { VirtualX360Code.X360_Y, Xbox360Button.Y }, - { VirtualX360Code.X360_LB, Xbox360Button.LeftShoulder }, - { VirtualX360Code.X360_RB, Xbox360Button.RightShoulder }, - { VirtualX360Code.X360_LS, Xbox360Button.LeftThumb }, - { VirtualX360Code.X360_RS, Xbox360Button.RightThumb } - }; - private ViGEmClient? client; private IXbox360Controller? device; private bool isConnected; @@ -188,22 +170,11 @@ namespace SteamController.Devices public byte LedNumber { get; private set; } public DateTime? FeedbackReceived { get; private set; } - public bool this[VirtualX360Code code] + public bool this[Xbox360Button? button] { set { - if (codeToButton.TryGetValue(code, out var button)) - { - this[button] = value; - } - } - } - - public bool this[Xbox360Button button] - { - set - { - if (value) + if (value && button is not null) device?.SetButtonState(button, value); submitReport = true; } diff --git a/SteamController/Profiles/X360Profile.cs b/SteamController/Profiles/X360Profile.cs index 3a90234..cc45c91 100644 --- a/SteamController/Profiles/X360Profile.cs +++ b/SteamController/Profiles/X360Profile.cs @@ -1,4 +1,5 @@ using Nefarius.ViGEm.Client.Targets.Xbox360; +using SteamController.ProfilesSettings; namespace SteamController.Profiles { @@ -69,10 +70,10 @@ namespace SteamController.Profiles var settings = ProfilesSettings.X360BackPanelSettings.Default; - c.X360[settings.L4_X360] = c.Steam.BtnL4; - c.X360[settings.L5_X360] = c.Steam.BtnL5; - c.X360[settings.R4_X360] = c.Steam.BtnR4; - c.X360[settings.R5_X360] = c.Steam.BtnR5; + c.X360[settings.L4_X360.ToViGEm()] = c.Steam.BtnL4; + c.X360[settings.L5_X360.ToViGEm()] = c.Steam.BtnL5; + c.X360[settings.R4_X360.ToViGEm()] = c.Steam.BtnR4; + c.X360[settings.R5_X360.ToViGEm()] = c.Steam.BtnR5; } } } diff --git a/SteamController/ProfilesSettings/VirtualX360Code.cs b/SteamController/ProfilesSettings/VirtualX360Code.cs index 57b9dff..b2af3d5 100644 --- a/SteamController/ProfilesSettings/VirtualX360Code.cs +++ b/SteamController/ProfilesSettings/VirtualX360Code.cs @@ -1,3 +1,5 @@ +using Nefarius.ViGEm.Client.Targets.Xbox360; + namespace SteamController.ProfilesSettings { public enum VirtualX360Code @@ -21,4 +23,32 @@ namespace SteamController.ProfilesSettings X360_LS, X360_RS } + + public static class VirtualX360CodeExtensions + { + private static readonly Dictionary codeToButton = new Dictionary() + { + { VirtualX360Code.X360_UP, Xbox360Button.Up }, + { VirtualX360Code.X360_DOWN, Xbox360Button.Down }, + { VirtualX360Code.X360_LEFT, Xbox360Button.Left }, + { VirtualX360Code.X360_RIGHT, Xbox360Button.Right }, + { VirtualX360Code.X360_BACK, Xbox360Button.Back }, + { VirtualX360Code.X360_START, Xbox360Button.Start }, + { VirtualX360Code.X360_A, Xbox360Button.A }, + { VirtualX360Code.X360_B, Xbox360Button.B }, + { VirtualX360Code.X360_X, Xbox360Button.X }, + { VirtualX360Code.X360_Y, Xbox360Button.Y }, + { VirtualX360Code.X360_LB, Xbox360Button.LeftShoulder }, + { VirtualX360Code.X360_RB, Xbox360Button.RightShoulder }, + { VirtualX360Code.X360_LS, Xbox360Button.LeftThumb }, + { VirtualX360Code.X360_RS, Xbox360Button.RightThumb } + }; + + public static Xbox360Button? ToViGEm(this VirtualX360Code code) + { + if (codeToButton.TryGetValue(code, out var button)) + return button; + return null; + } + } }