From cf9ac1440fc0f8726a3ad91bd758442982599a83 Mon Sep 17 00:00:00 2001 From: Doprez <73259914+Doprez@users.noreply.github.com> Date: Fri, 16 May 2025 19:55:44 -0600 Subject: [PATCH] added layout --- .../GamePadLayouts/GamePadLayout8BitDo.cs | 37 +++++++++++++++++++ .../GamePadLayouts/GamePadLayouts.cs | 5 ++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 sources/engine/Stride.Input/GamePadLayouts/GamePadLayout8BitDo.cs diff --git a/sources/engine/Stride.Input/GamePadLayouts/GamePadLayout8BitDo.cs b/sources/engine/Stride.Input/GamePadLayouts/GamePadLayout8BitDo.cs new file mode 100644 index 0000000000..361a22dbe4 --- /dev/null +++ b/sources/engine/Stride.Input/GamePadLayouts/GamePadLayout8BitDo.cs @@ -0,0 +1,37 @@ +using System; + +namespace Stride.Input; + +public class GamePadLayout8BitDo : GamePadLayout +{ + private static readonly ushort _vendorId = 0x2DC8; + + public GamePadLayout8BitDo() + { + AddButtonToButton(7, GamePadButton.Start); + AddButtonToButton(6, GamePadButton.Back); + AddButtonToButton(8, GamePadButton.LeftThumb); + AddButtonToButton(9, GamePadButton.RightThumb); + AddButtonToButton(4, GamePadButton.LeftShoulder); + AddButtonToButton(5, GamePadButton.RightShoulder); + AddButtonToButton(0, GamePadButton.A); + AddButtonToButton(1, GamePadButton.B); + AddButtonToButton(2, GamePadButton.X); + AddButtonToButton(3, GamePadButton.Y); + AddAxisToAxis(0, GamePadAxis.LeftThumbX); + AddAxisToAxis(1, GamePadAxis.LeftThumbY, true); + AddAxisToAxis(3, GamePadAxis.RightThumbX); + AddAxisToAxis(4, GamePadAxis.RightThumbY, true); + AddAxisToAxis(2, GamePadAxis.LeftTrigger, remap: true); + AddAxisToAxis(5, GamePadAxis.RightTrigger, remap: true); + } + + public override bool MatchDevice(IInputSource source, IGameControllerDevice device) + { + byte[] guidBytes = device.ProductId.ToByteArray(); + + ushort vendorId = BitConverter.ToUInt16(guidBytes, 4); + + return vendorId == _vendorId; + } +} diff --git a/sources/engine/Stride.Input/GamePadLayouts/GamePadLayouts.cs b/sources/engine/Stride.Input/GamePadLayouts/GamePadLayouts.cs index 9dd31d05af..6b15010801 100644 --- a/sources/engine/Stride.Input/GamePadLayouts/GamePadLayouts.cs +++ b/sources/engine/Stride.Input/GamePadLayouts/GamePadLayouts.cs @@ -19,6 +19,9 @@ static GamePadLayouts() // Support for DualShock4 controllers AddLayout(new GamePadLayoutDS4()); + + // Support for 8BitDo controllers + AddLayout(new GamePadLayout8BitDo()); } /// @@ -55,4 +58,4 @@ public static GamePadLayout FindLayout(IInputSource source, IGameControllerDevic } } } -} \ No newline at end of file +}