aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/Input/Controller/Types
diff options
context:
space:
mode:
authoremmauss <emmausssss@gmail.com>2019-07-22 20:15:46 +0300
committerGitHub <noreply@github.com>2019-07-22 20:15:46 +0300
commitd254548548398977a45dbfc03f2cc091c5a74f03 (patch)
treee153a29676f6f83d44b25cc42ecd1efc8cc701e6 /Ryujinx.HLE/Input/Controller/Types
parent1f3a34dd7a5977fc340de310b2109493e5e6973f (diff)
Little rewrite of HID input (#723)
* change hid sharedmem writing to use structures
Diffstat (limited to 'Ryujinx.HLE/Input/Controller/Types')
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/BatteryState.cs12
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerButtons.cs35
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerColorDescription.cs10
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerConnectionState.cs11
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerDeviceState.cs18
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerDeviceType.cs12
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerHeader.cs19
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerId.cs16
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerLayouts.cs13
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerState.cs15
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerStateHeader.cs13
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/ControllerStatus.cs14
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/DeviceFlags.cs22
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/HotkeyButtons.cs10
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/JoystickPosition.cs8
-rw-r--r--Ryujinx.HLE/Input/Controller/Types/NpadColor.cs23
16 files changed, 251 insertions, 0 deletions
diff --git a/Ryujinx.HLE/Input/Controller/Types/BatteryState.cs b/Ryujinx.HLE/Input/Controller/Types/BatteryState.cs
new file mode 100644
index 00000000..4279d7a0
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/BatteryState.cs
@@ -0,0 +1,12 @@
+namespace Ryujinx.HLE.Input
+{
+ public enum BatteryState : int
+ {
+ // TODO : Check if these are the correct states
+ Percent0 = 0,
+ Percent25 = 1,
+ Percent50 = 2,
+ Percent75 = 3,
+ Percent100 = 4
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerButtons.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerButtons.cs
new file mode 100644
index 00000000..879257f2
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerButtons.cs
@@ -0,0 +1,35 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum ControllerButtons : long
+ {
+ A = 1 << 0,
+ B = 1 << 1,
+ X = 1 << 2,
+ Y = 1 << 3,
+ StickLeft = 1 << 4,
+ StickRight = 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,
+ RStickRight = 1 << 22,
+ RStickDown = 1 << 23,
+ Sl = 1 << 24,
+ Sr = 1 << 25
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerColorDescription.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerColorDescription.cs
new file mode 100644
index 00000000..c31f41a3
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerColorDescription.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum ControllerColorDescription : int
+ {
+ ColorDescriptionColorsNonexistent = (1 << 1)
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerConnectionState.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerConnectionState.cs
new file mode 100644
index 00000000..526da1ff
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerConnectionState.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum ControllerConnectionState : long
+ {
+ ControllerStateConnected = (1 << 0),
+ ControllerStateWired = (1 << 1)
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceState.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceState.cs
new file mode 100644
index 00000000..45895a1e
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceState.cs
@@ -0,0 +1,18 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.Input
+{
+ [StructLayout(LayoutKind.Sequential)]
+ public unsafe struct ControllerDeviceState
+ {
+ public ControllerDeviceType DeviceType;
+ public int Padding;
+ public DeviceFlags DeviceFlags;
+ public int UnintendedHomeButtonInputProtectionEnabled;
+ public BatteryState PowerInfo0BatteryState;
+ public BatteryState PowerInfo1BatteryState;
+ public BatteryState PowerInfo2BatteryState;
+ public fixed byte ControllerMac[16];
+ public fixed byte ControllerMac2[16];
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceType.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceType.cs
new file mode 100644
index 00000000..8043d8a0
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerDeviceType.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum ControllerDeviceType : int
+ {
+ ProController = 1 << 0,
+ NPadLeftController = 1 << 4,
+ NPadRightController = 1 << 5,
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerHeader.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerHeader.cs
new file mode 100644
index 00000000..cbb5b6f5
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerHeader.cs
@@ -0,0 +1,19 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.Input
+{
+ [StructLayout(LayoutKind.Sequential)]
+ public struct ControllerHeader
+ {
+ public ControllerStatus Status;
+ public int IsJoyConHalf;
+ public ControllerColorDescription SingleColorDescription;
+ public NpadColor SingleBodyColor;
+ public NpadColor SingleButtonColor;
+ public ControllerColorDescription SplitColorDescription;
+ public NpadColor RightBodyColor;
+ public NpadColor RightButtonColor;
+ public NpadColor LeftBodyColor;
+ public NpadColor LeftButtonColor;
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerId.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerId.cs
new file mode 100644
index 00000000..c82056c6
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerId.cs
@@ -0,0 +1,16 @@
+namespace Ryujinx.HLE.Input
+{
+ public enum ControllerId
+ {
+ ControllerPlayer1 = 0,
+ ControllerPlayer2 = 1,
+ ControllerPlayer3 = 2,
+ ControllerPlayer4 = 3,
+ ControllerPlayer5 = 4,
+ ControllerPlayer6 = 5,
+ ControllerPlayer7 = 6,
+ ControllerPlayer8 = 7,
+ ControllerHandheld = 8,
+ ControllerUnknown = 9
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerLayouts.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerLayouts.cs
new file mode 100644
index 00000000..fedc0399
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerLayouts.cs
@@ -0,0 +1,13 @@
+namespace Ryujinx.HLE.Input
+{
+ public enum ControllerLayouts
+ {
+ ProController = 0,
+ HandheldJoined = 1,
+ Joined = 2,
+ Left = 3,
+ Right = 4,
+ MainNoAnalog = 5,
+ Main = 6
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerState.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerState.cs
new file mode 100644
index 00000000..4847438d
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerState.cs
@@ -0,0 +1,15 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.Input
+{
+ [StructLayout(LayoutKind.Sequential)]
+ public struct ControllerState
+ {
+ public long SamplesTimestamp;
+ public long SamplesTimestamp2;
+ public ControllerButtons ButtonState;
+ public JoystickPosition LeftStick;
+ public JoystickPosition RightStick;
+ public ControllerConnectionState ConnectionState;
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerStateHeader.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerStateHeader.cs
new file mode 100644
index 00000000..f885c00c
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerStateHeader.cs
@@ -0,0 +1,13 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.Input
+{
+ [StructLayout(LayoutKind.Sequential)]
+ public struct ControllerStateHeader
+ {
+ public long Timestamp;
+ public long EntryCount;
+ public long CurrentEntryIndex;
+ public long MaxEntryCount;
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/ControllerStatus.cs b/Ryujinx.HLE/Input/Controller/Types/ControllerStatus.cs
new file mode 100644
index 00000000..9444d7b0
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/ControllerStatus.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum ControllerStatus : int
+ {
+ ProController = 1 << 0,
+ Handheld = 1 << 1,
+ NpadPair = 1 << 2,
+ NpadLeft = 1 << 3,
+ NpadRight = 1 << 4
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/DeviceFlags.cs b/Ryujinx.HLE/Input/Controller/Types/DeviceFlags.cs
new file mode 100644
index 00000000..53913175
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/DeviceFlags.cs
@@ -0,0 +1,22 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum DeviceFlags : long
+ {
+ PowerInfo0Charging = 1 << 0,
+ PowerInfo1Charging = 1 << 1,
+ PowerInfo2Charging = 1 << 2,
+ PowerInfo0Connected = 1 << 3,
+ PowerInfo1Connected = 1 << 4,
+ PowerInfo2Connected = 1 << 5,
+ UnsupportedButtonPressedNpadSystem = 1 << 9,
+ UnsupportedButtonPressedNpadSystemExt = 1 << 10,
+ AbxyButtonOriented = 1 << 11,
+ SlSrButtonOriented = 1 << 12,
+ PlusButtonCapability = 1 << 13,
+ MinusButtonCapability = 1 << 14,
+ DirectionalButtonsSupported = 1 << 15
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/HotkeyButtons.cs b/Ryujinx.HLE/Input/Controller/Types/HotkeyButtons.cs
new file mode 100644
index 00000000..be76ee1e
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/HotkeyButtons.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace Ryujinx.HLE.Input
+{
+ [Flags]
+ public enum HotkeyButtons
+ {
+ ToggleVSync = 1 << 0,
+ }
+}
diff --git a/Ryujinx.HLE/Input/Controller/Types/JoystickPosition.cs b/Ryujinx.HLE/Input/Controller/Types/JoystickPosition.cs
new file mode 100644
index 00000000..1442bc60
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/JoystickPosition.cs
@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.Input
+{
+ public struct JoystickPosition
+ {
+ public int Dx;
+ public int Dy;
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/Input/Controller/Types/NpadColor.cs b/Ryujinx.HLE/Input/Controller/Types/NpadColor.cs
new file mode 100644
index 00000000..a60f94aa
--- /dev/null
+++ b/Ryujinx.HLE/Input/Controller/Types/NpadColor.cs
@@ -0,0 +1,23 @@
+namespace Ryujinx.HLE.Input
+{
+ public enum NpadColor : int //Thanks to CTCaer
+ {
+ Black = 0,
+
+ BodyGrey = 0x828282,
+ BodyNeonBlue = 0x0AB9E6,
+ BodyNeonRed = 0xFF3C28,
+ BodyNeonYellow = 0xE6FF00,
+ BodyNeonPink = 0xFF3278,
+ BodyNeonGreen = 0x1EDC00,
+ BodyRed = 0xE10F00,
+
+ ButtonsGrey = 0x0F0F0F,
+ ButtonsNeonBlue = 0x001E1E,
+ ButtonsNeonRed = 0x1E0A0A,
+ ButtonsNeonYellow = 0x142800,
+ ButtonsNeonPink = 0x28001E,
+ ButtonsNeonGreen = 0x002800,
+ ButtonsRed = 0x280A0A
+ }
+} \ No newline at end of file