diff options
| author | Xpl0itR <xpl0itr@outlook.com> | 2020-05-03 03:00:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-03 04:00:53 +0200 |
| commit | 538fba826b75cdd2feffaeac684044246590cb29 (patch) | |
| tree | 4f9b09aaaeec6249b49d665012dd4e585f3e67f0 /Ryujinx.HLE/HOS | |
| parent | 5f3558fd51a0920966e5341101c4233a02c98307 (diff) | |
Improvements to input and input configuration in the GUI. (#849)
* Improvements to input and input configuration in the GUI
* Requested changes
* nits
* more nits
Diffstat (limited to 'Ryujinx.HLE/HOS')
8 files changed, 108 insertions, 108 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Hid/Hid.cs b/Ryujinx.HLE/HOS/Services/Hid/Hid.cs index e07577ed..c4935a64 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/Hid.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/Hid.cs @@ -7,16 +7,16 @@ namespace Ryujinx.HLE.HOS.Services.Hid public class Hid { private readonly Switch _device; - private long _hidMemoryAddress; + private readonly long _hidMemoryAddress; internal ref HidSharedMemory SharedMemory => ref _device.Memory.GetStructRef<HidSharedMemory>(_hidMemoryAddress); internal const int SharedMemEntryCount = 17; public DebugPadDevice DebugPad; - public TouchDevice Touchscreen; - public MouseDevice Mouse; + public TouchDevice Touchscreen; + public MouseDevice Mouse; public KeyboardDevice Keyboard; - public NpadDevices Npads; + public NpadDevices Npads; static Hid() { @@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid public Hid(in Switch device, long sharedHidMemoryAddress) { - _device = device; + _device = device; _hidMemoryAddress = sharedHidMemoryAddress; device.Memory.FillWithZeros(sharedHidMemoryAddress, Horizon.HidSize); @@ -56,26 +56,26 @@ namespace Ryujinx.HLE.HOS.Services.Hid public void InitDevices() { - DebugPad = new DebugPadDevice(_device, true); + DebugPad = new DebugPadDevice(_device, true); Touchscreen = new TouchDevice(_device, true); - Mouse = new MouseDevice(_device, false); - Keyboard = new KeyboardDevice(_device, false); - Npads = new NpadDevices(_device, true); + Mouse = new MouseDevice(_device, false); + Keyboard = new KeyboardDevice(_device, false); + Npads = new NpadDevices(_device, true); } public ControllerKeys UpdateStickButtons(JoystickPosition leftStick, JoystickPosition rightStick) { ControllerKeys result = 0; - result |= (leftStick.Dx < 0) ? ControllerKeys.LStickLeft : result; + result |= (leftStick.Dx < 0) ? ControllerKeys.LStickLeft : result; result |= (leftStick.Dx > 0) ? ControllerKeys.LStickRight : result; - result |= (leftStick.Dy < 0) ? ControllerKeys.LStickDown : result; - result |= (leftStick.Dy > 0) ? ControllerKeys.LStickUp : result; + result |= (leftStick.Dy < 0) ? ControllerKeys.LStickDown : result; + result |= (leftStick.Dy > 0) ? ControllerKeys.LStickUp : result; - result |= (rightStick.Dx < 0) ? ControllerKeys.RStickLeft : result; + result |= (rightStick.Dx < 0) ? ControllerKeys.RStickLeft : result; result |= (rightStick.Dx > 0) ? ControllerKeys.RStickRight : result; - result |= (rightStick.Dy < 0) ? ControllerKeys.RStickDown : result; - result |= (rightStick.Dy > 0) ? ControllerKeys.RStickUp : result; + result |= (rightStick.Dy < 0) ? ControllerKeys.RStickDown : result; + result |= (rightStick.Dy > 0) ? ControllerKeys.RStickUp : result; return result; } diff --git a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/NpadDevices.cs b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/NpadDevices.cs index ff330312..c4c9d095 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/NpadDevices.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/NpadDevices.cs @@ -1,6 +1,6 @@ using System; -using Ryujinx.HLE.HOS.Kernel.Threading; using Ryujinx.Common.Logging; +using Ryujinx.HLE.HOS.Kernel.Threading; namespace Ryujinx.HLE.HOS.Services.Hid { @@ -9,14 +9,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid internal NpadJoyHoldType JoyHold = NpadJoyHoldType.Vertical; internal bool SixAxisActive = false; // TODO: link to hidserver when implemented - enum FilterState + private enum FilterState { Unconfigured = 0, - Configured = 1, - Accepted = 2 + Configured = 1, + Accepted = 2 } - struct NpadConfig + private struct NpadConfig { public ControllerType ConfiguredType; public FilterState State; @@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid public ControllerType SupportedStyleSets { - get { return _supportedStyleSets; } + get => _supportedStyleSets; set { if (_supportedStyleSets != value) // Deal with spamming @@ -46,9 +46,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid public PlayerIndex PrimaryController { get; set; } = PlayerIndex.Unknown; - KEvent[] _styleSetUpdateEvents; + private KEvent[] _styleSetUpdateEvents; - static readonly Array3<BatteryCharge> _fullBattery; + private static readonly Array3<BatteryCharge> _fullBattery; public NpadDevices(Switch device, bool active = true) : base(device, active) { @@ -68,7 +68,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { for (int i = 0; i < configs.Length; ++i) { - PlayerIndex player = configs[i].Player; + PlayerIndex player = configs[i].Player; ControllerType controllerType = configs[i].Type; if (player > PlayerIndex.Handheld) @@ -87,7 +87,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid MatchControllers(); } - void MatchControllers() + private void MatchControllers() { PrimaryController = PlayerIndex.Unknown; @@ -141,7 +141,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid return ref _styleSetUpdateEvents[(int)player]; } - void InitController(PlayerIndex player, ControllerType type) + private void InitController(PlayerIndex player, ControllerType type) { if (type == ControllerType.Handheld) { @@ -155,13 +155,13 @@ namespace Ryujinx.HLE.HOS.Services.Hid // TODO: Allow customizing colors at config NpadStateHeader defaultHeader = new NpadStateHeader { - IsHalf = false, - SingleColorBody = NpadColor.BodyGray, + IsHalf = false, + SingleColorBody = NpadColor.BodyGray, SingleColorButtons = NpadColor.ButtonGray, - LeftColorBody = NpadColor.BodyNeonBlue, - LeftColorButtons = NpadColor.ButtonGray, - RightColorBody = NpadColor.BodyNeonRed, - RightColorButtons = NpadColor.ButtonGray + LeftColorBody = NpadColor.BodyNeonBlue, + LeftColorButtons = NpadColor.ButtonGray, + RightColorBody = NpadColor.BodyNeonRed, + RightColorButtons = NpadColor.ButtonGray }; controller.SystemProperties = NpadSystemProperties.PowerInfo0Connected | @@ -173,44 +173,44 @@ namespace Ryujinx.HLE.HOS.Services.Hid switch (type) { case ControllerType.ProController: - defaultHeader.Type = ControllerType.ProController; - controller.DeviceType = DeviceType.FullKey; + defaultHeader.Type = ControllerType.ProController; + controller.DeviceType = DeviceType.FullKey; controller.SystemProperties |= NpadSystemProperties.AbxyButtonOriented | NpadSystemProperties.PlusButtonCapability | NpadSystemProperties.MinusButtonCapability; break; case ControllerType.Handheld: - defaultHeader.Type = ControllerType.Handheld; - controller.DeviceType = DeviceType.HandheldLeft | + defaultHeader.Type = ControllerType.Handheld; + controller.DeviceType = DeviceType.HandheldLeft | DeviceType.HandheldRight; controller.SystemProperties |= NpadSystemProperties.AbxyButtonOriented | NpadSystemProperties.PlusButtonCapability | NpadSystemProperties.MinusButtonCapability; break; case ControllerType.JoyconPair: - defaultHeader.Type = ControllerType.JoyconPair; - controller.DeviceType = DeviceType.JoyLeft | + defaultHeader.Type = ControllerType.JoyconPair; + controller.DeviceType = DeviceType.JoyLeft | DeviceType.JoyRight; controller.SystemProperties |= NpadSystemProperties.AbxyButtonOriented | NpadSystemProperties.PlusButtonCapability | NpadSystemProperties.MinusButtonCapability; break; case ControllerType.JoyconLeft: - defaultHeader.Type = ControllerType.JoyconLeft; - defaultHeader.IsHalf = true; - controller.DeviceType = DeviceType.JoyLeft; + defaultHeader.Type = ControllerType.JoyconLeft; + defaultHeader.IsHalf = true; + controller.DeviceType = DeviceType.JoyLeft; controller.SystemProperties |= NpadSystemProperties.SlSrButtonOriented | NpadSystemProperties.MinusButtonCapability; break; case ControllerType.JoyconRight: - defaultHeader.Type = ControllerType.JoyconRight; - defaultHeader.IsHalf = true; - controller.DeviceType = DeviceType.JoyRight; + defaultHeader.Type = ControllerType.JoyconRight; + defaultHeader.IsHalf = true; + controller.DeviceType = DeviceType.JoyRight; controller.SystemProperties |= NpadSystemProperties.SlSrButtonOriented | NpadSystemProperties.PlusButtonCapability; break; case ControllerType.Pokeball: - defaultHeader.Type = ControllerType.Pokeball; + defaultHeader.Type = ControllerType.Pokeball; controller.DeviceType = DeviceType.Palma; break; } @@ -229,16 +229,16 @@ namespace Ryujinx.HLE.HOS.Services.Hid Logger.PrintInfo(LogClass.Hid, $"Connected ControllerType {type} to PlayerIndex {player}"); } - static NpadLayoutsIndex ControllerTypeToLayout(ControllerType controllerType) + private static NpadLayoutsIndex ControllerTypeToLayout(ControllerType controllerType) => controllerType switch { ControllerType.ProController => NpadLayoutsIndex.ProController, - ControllerType.Handheld => NpadLayoutsIndex.Handheld, - ControllerType.JoyconPair => NpadLayoutsIndex.JoyDual, - ControllerType.JoyconLeft => NpadLayoutsIndex.JoyLeft, - ControllerType.JoyconRight => NpadLayoutsIndex.JoyRight, - ControllerType.Pokeball => NpadLayoutsIndex.Pokeball, - _ => NpadLayoutsIndex.SystemExternal + ControllerType.Handheld => NpadLayoutsIndex.Handheld, + ControllerType.JoyconPair => NpadLayoutsIndex.JoyDual, + ControllerType.JoyconLeft => NpadLayoutsIndex.JoyLeft, + ControllerType.JoyconRight => NpadLayoutsIndex.JoyRight, + ControllerType.Pokeball => NpadLayoutsIndex.Pokeball, + _ => NpadLayoutsIndex.SystemExternal }; public void SetGamepadsInput(params GamepadInput[] states) @@ -251,8 +251,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid } } - void SetGamepadState(PlayerIndex player, ControllerKeys buttons, - JoystickPosition leftJoystick, JoystickPosition rightJoystick) + private void SetGamepadState(PlayerIndex player, ControllerKeys buttons, + JoystickPosition leftJoystick, JoystickPosition rightJoystick) { if (player == PlayerIndex.Auto) { @@ -269,9 +269,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid return; } - ref ShMemNpad currentNpad = ref _device.Hid.SharedMemory.Npads[(int)player]; + ref ShMemNpad currentNpad = ref _device.Hid.SharedMemory.Npads[(int)player]; ref NpadLayout currentLayout = ref currentNpad.Layouts[(int)ControllerTypeToLayout(currentNpad.Header.Type)]; - ref NpadState currentEntry = ref currentLayout.Entries[(int)currentLayout.Header.LatestEntry]; + ref NpadState currentEntry = ref currentLayout.Entries[(int)currentLayout.Header.LatestEntry]; currentEntry.Buttons = buttons; currentEntry.LStickX = leftJoystick.Dx; @@ -284,7 +284,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid mainLayout.Entries[(int)mainLayout.Header.LatestEntry] = currentEntry; } - void UpdateAllEntries() + private void UpdateAllEntries() { ref Array10<ShMemNpad> controllers = ref _device.Hid.SharedMemory.Npads; for (int i = 0; i < controllers.Length; ++i) @@ -296,9 +296,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid int currentIndex = UpdateEntriesHeader(ref currentLayout.Header, out int previousIndex); ref NpadState currentEntry = ref currentLayout.Entries[currentIndex]; - NpadState previousEntry = currentLayout.Entries[previousIndex]; + NpadState previousEntry = currentLayout.Entries[previousIndex]; - currentEntry.SampleTimestamp = previousEntry.SampleTimestamp + 1; + currentEntry.SampleTimestamp = previousEntry.SampleTimestamp + 1; currentEntry.SampleTimestamp2 = previousEntry.SampleTimestamp2 + 1; if (controllers[i].Header.Type == ControllerType.None) diff --git a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/ControllerConfig.cs b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/ControllerConfig.cs index e59ba312..477e1a84 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/ControllerConfig.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/ControllerConfig.cs @@ -2,7 +2,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { public struct ControllerConfig { - public PlayerIndex Player; + public PlayerIndex Player; public ControllerType Type; } }
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/GamepadInput.cs b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/GamepadInput.cs index 2488057e..633671df 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/GamepadInput.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/HidDevices/Types/GamepadInput.cs @@ -2,8 +2,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid { public struct GamepadInput { - public PlayerIndex PlayerId; - public ControllerKeys Buttons; + public PlayerIndex PlayerId; + public ControllerKeys Buttons; public JoystickPosition LStick; public JoystickPosition RStick; } diff --git a/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerKeys.cs b/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerKeys.cs index db0319ed..c91636b2 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerKeys.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerKeys.cs @@ -5,41 +5,41 @@ namespace Ryujinx.HLE.HOS.Services.Hid [Flags] public enum ControllerKeys : long { - A = 1 << 0, - B = 1 << 1, - X = 1 << 2, - Y = 1 << 3, - LStick = 1 << 4, - RStick = 1 << 5, - L = 1 << 6, - R = 1 << 7, - Zl = 1 << 8, - Zr = 1 << 9, - Plus = 1 << 10, - Minus = 1 << 11, - DpadLeft = 1 << 12, - DpadUp = 1 << 13, - DpadRight = 1 << 14, - DpadDown = 1 << 15, - LStickLeft = 1 << 16, - LStickUp = 1 << 17, + A = 1 << 0, + B = 1 << 1, + X = 1 << 2, + Y = 1 << 3, + LStick = 1 << 4, + RStick = 1 << 5, + L = 1 << 6, + R = 1 << 7, + Zl = 1 << 8, + Zr = 1 << 9, + Plus = 1 << 10, + Minus = 1 << 11, + DpadLeft = 1 << 12, + DpadUp = 1 << 13, + DpadRight = 1 << 14, + DpadDown = 1 << 15, + LStickLeft = 1 << 16, + LStickUp = 1 << 17, LStickRight = 1 << 18, - LStickDown = 1 << 19, - RStickLeft = 1 << 20, - RStickUp = 1 << 21, + LStickDown = 1 << 19, + RStickLeft = 1 << 20, + RStickUp = 1 << 21, RStickRight = 1 << 22, - RStickDown = 1 << 23, - SlLeft = 1 << 24, - SrLeft = 1 << 25, - SlRight = 1 << 26, - SrRight = 1 << 27, + RStickDown = 1 << 23, + SlLeft = 1 << 24, + SrLeft = 1 << 25, + SlRight = 1 << 26, + SrRight = 1 << 27, // Generic Catch-all - Up = DpadUp | LStickUp | RStickUp, - Down = DpadDown | LStickDown | RStickDown, - Left = DpadLeft | LStickLeft | RStickLeft, + Up = DpadUp | LStickUp | RStickUp, + Down = DpadDown | LStickDown | RStickDown, + Left = DpadLeft | LStickLeft | RStickLeft, Right = DpadRight | LStickRight | RStickRight, - Sl = SlLeft | SlRight, - Sr = SrLeft | SrRight + Sl = SlLeft | SlRight, + Sr = SrLeft | SrRight } }
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerType.cs b/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerType.cs index f65c3079..b2d34e8e 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerType.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/ControllerType.cs @@ -6,14 +6,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid public enum ControllerType : int { None, - ProController = 1 << 0, - Handheld = 1 << 1, - JoyconPair = 1 << 2, - JoyconLeft = 1 << 3, - JoyconRight = 1 << 4, - Invalid = 1 << 5, - Pokeball = 1 << 6, + ProController = 1 << 0, + Handheld = 1 << 1, + JoyconPair = 1 << 2, + JoyconLeft = 1 << 3, + JoyconRight = 1 << 4, + Invalid = 1 << 5, + Pokeball = 1 << 6, SystemExternal = 1 << 29, - System = 1 << 30 + System = 1 << 30 } }
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMem/Npad/NpadLayoutsIndex.cs b/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMem/Npad/NpadLayoutsIndex.cs index 29eb8d3d..c4419336 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMem/Npad/NpadLayoutsIndex.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMem/Npad/NpadLayoutsIndex.cs @@ -2,12 +2,12 @@ namespace Ryujinx.HLE.HOS.Services.Hid { enum NpadLayoutsIndex : int { - ProController = 0, - Handheld = 1, - JoyDual = 2, - JoyLeft = 3, - JoyRight = 4, - Pokeball = 5, + ProController = 0, + Handheld = 1, + JoyDual = 2, + JoyLeft = 3, + JoyRight = 4, + Pokeball = 5, SystemExternal = 6 } }
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/UserManager/Types/Device.cs b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/UserManager/Types/Device.cs index 7eaf4ac8..3ff3489b 100644 --- a/Ryujinx.HLE/HOS/Services/Nfc/Nfp/UserManager/Types/Device.cs +++ b/Ryujinx.HLE/HOS/Services/Nfc/Nfp/UserManager/Types/Device.cs @@ -14,6 +14,6 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.UserManager public DeviceState State = DeviceState.Unavailable; public PlayerIndex Handle; - public NpadIdType NpadIdType; + public NpadIdType NpadIdType; } }
\ No newline at end of file |
