steam-deck-tools/SteamController/ProfilesSettings/VirtualDS4Code.cs
2023-05-21 18:03:00 +02:00

53 lines
1.7 KiB
C#

using Nefarius.ViGEm.Client.Targets.DualShock4;
using SteamController.Devices;
namespace SteamController.ProfilesSettings
{
public enum VirtualDS4Code
{
None = 0,
DS4_TRIANGLE,
DS4_CIRCLE,
DS4_CROSS,
DS4_SQUARE,
DS4_OPTIONS,
DS4_SHARE,
DS4_STICK_LEFT,
DS4_STICK_RIGHT,
DS4_L1,
DS4_R1,
DS4_L2,
DS4_R2,
}
public static class VirtualDS4CodeExtensions
{
private static readonly Dictionary<VirtualDS4Code, DS4Controller.DualShock4Button> codeToButton = new Dictionary<VirtualDS4Code, DS4Controller.DualShock4Button>()
{
{ VirtualDS4Code.DS4_TRIANGLE, DS4Controller.Triangle },
{ VirtualDS4Code.DS4_CIRCLE, DS4Controller.Circle },
{ VirtualDS4Code.DS4_CROSS, DS4Controller.Cross },
{ VirtualDS4Code.DS4_SQUARE, DS4Controller.Square },
{ VirtualDS4Code.DS4_OPTIONS, DS4Controller.Options },
{ VirtualDS4Code.DS4_SHARE, DS4Controller.Share },
{ VirtualDS4Code.DS4_STICK_LEFT, DS4Controller.ThumbLeft },
{ VirtualDS4Code.DS4_STICK_RIGHT, DS4Controller.ThumbRight },
{ VirtualDS4Code.DS4_L1, DS4Controller.ShoulderLeft },
{ VirtualDS4Code.DS4_R1, DS4Controller.ShoulderRight },
{ VirtualDS4Code.DS4_L2, DS4Controller.TriggerLeft },
{ VirtualDS4Code.DS4_R2, DS4Controller.TriggerRight }
};
public static DS4Controller.DualShock4Button? ToDS4Button(this VirtualDS4Code code)
{
if (codeToButton.TryGetValue(code, out var button))
return button;
return null;
}
}
}