From b5ebee7cd50c7a23649f2e97f964f897a997f2fa Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Thu, 12 Oct 2023 20:49:17 -0700 Subject: [PATCH] move RAWINPUT imports to a new file --- .../RAWINPUT/RAWKeyInput.cs | 1 + src/BizHawk.Common/Win32/RawInputImports.cs | 147 ++++++++++++++++++ src/BizHawk.Common/Win32/Win32Imports.cs | 134 ---------------- 3 files changed, 148 insertions(+), 134 deletions(-) create mode 100644 src/BizHawk.Common/Win32/RawInputImports.cs diff --git a/src/BizHawk.Bizware.Input/RAWINPUT/RAWKeyInput.cs b/src/BizHawk.Bizware.Input/RAWINPUT/RAWKeyInput.cs index db60af4d88..e87bb0fff1 100644 --- a/src/BizHawk.Bizware.Input/RAWINPUT/RAWKeyInput.cs +++ b/src/BizHawk.Bizware.Input/RAWINPUT/RAWKeyInput.cs @@ -9,6 +9,7 @@ using BizHawk.Client.Common; using BizHawk.Common; using BizHawk.Common.CollectionExtensions; +using static BizHawk.Common.RawInputImports; using static BizHawk.Common.Win32Imports; using RAWKey = Vortice.DirectInput.Key; diff --git a/src/BizHawk.Common/Win32/RawInputImports.cs b/src/BizHawk.Common/Win32/RawInputImports.cs new file mode 100644 index 0000000000..94e127e155 --- /dev/null +++ b/src/BizHawk.Common/Win32/RawInputImports.cs @@ -0,0 +1,147 @@ +#nullable enable + +using System; +using System.Runtime.InteropServices; + +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable UnusedMember.Global + +namespace BizHawk.Common +{ + public static class RawInputImports + { + [StructLayout(LayoutKind.Sequential)] + public struct RAWINPUTDEVICE + { + public HidUsagePage usUsagePage; + public HidUsageId usUsage; + public RIDEV dwFlags; + public IntPtr hwndTarget; + + public enum HidUsagePage : ushort + { + GENERIC = 1, + GAME = 5, + LED = 8, + BUTTON = 9, + } + + public enum HidUsageId : ushort + { + GENERIC_POINTER = 1, + GENERIC_MOUSE = 2, + GENERIC_JOYSTICK = 4, + GENERIC_GAMEPAD = 5, + GENERIC_KEYBOARD = 6, + GENERIC_KEYPAD = 7, + GENERIC_MULTI_AXIS_CONTROLLER = 8, + } + + [Flags] + public enum RIDEV : int + { + REMOVE = 0x00000001, + EXCLUDE = 0x00000010, + PAGEONLY = 0x00000020, + NOLEGACY = PAGEONLY | EXCLUDE, + INPUTSINK = 0x00000100, + CAPTUREMOUSE = 0x00000200, + NOHOTKEYS = CAPTUREMOUSE, + APPKEYS = 0x00000400, + EXINPUTSINK = 0x00001000, + DEVNOTIFY = 0x00002000, + } + } + + public enum RID : uint + { + HEADER = 0x10000005, + INPUT = 0x10000003, + } + + [StructLayout(LayoutKind.Sequential)] + public struct RAWINPUTHEADER + { + public RIM_TYPE dwType; + public uint dwSize; + public IntPtr hDevice; + public IntPtr wParam; + + public enum RIM_TYPE : uint + { + MOUSE = 0, + KEYBOARD = 1, + HID = 2, + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct RAWMOUSE + { + public ushort usFlags; + public uint ulButtons; + public uint ulRawButtons; + public int lLastX; + public int lLastY; + public uint ulExtraInformation; + } + + [StructLayout(LayoutKind.Sequential)] + public struct RAWKEYBOARD + { + public ushort MakeCode; + public RIM_KEY Flags; + public ushort Reserved; + public ushort VKey; + public uint Message; + public uint ExtraInformation; + + public enum RIM_KEY : ushort + { + MAKE = 0, + BREAK = 1, + E0 = 2, + E1 = 3, + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct RAWHID + { + public uint dwSizeHid; + public uint dwCount; + public byte bRawData; + } + + [StructLayout(LayoutKind.Explicit)] + public struct RAWINPUTDATA + { + [FieldOffset(0)] + public RAWMOUSE mouse; + [FieldOffset(0)] + public RAWKEYBOARD keyboard; + [FieldOffset(0)] + public RAWHID hid; + } + + [StructLayout(LayoutKind.Sequential)] + public struct RAWINPUT + { + public RAWINPUTHEADER header; + public RAWINPUTDATA data; + } + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern unsafe IntPtr DefRawInputProc(RAWINPUT* paRawInput, int nInput, int cbSizeHeader); + + [DllImport("user32.dll")] + public static extern int GetRawInputData(IntPtr hRawInput, RID uiCommand, IntPtr pData, out int bSize, int cbSizeHeader); + + [DllImport("user32.dll")] + public static extern unsafe int GetRawInputData(IntPtr hRawInput, RID uiCommand, RAWINPUT* pData, ref int bSize, int cbSizeHeader); + + [DllImport("user32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool RegisterRawInputDevices(RAWINPUTDEVICE[] pRawInputDevices, uint uiNumDevices, int cbSize); + } +} diff --git a/src/BizHawk.Common/Win32/Win32Imports.cs b/src/BizHawk.Common/Win32/Win32Imports.cs index 951e6584d1..35a74ce02a 100644 --- a/src/BizHawk.Common/Win32/Win32Imports.cs +++ b/src/BizHawk.Common/Win32/Win32Imports.cs @@ -99,127 +99,6 @@ namespace BizHawk.Common public int y; } - [StructLayout(LayoutKind.Sequential)] - public struct RAWINPUTDEVICE - { - public HidUsagePage usUsagePage; - public HidUsageId usUsage; - public RIDEV dwFlags; - public IntPtr hwndTarget; - - public enum HidUsagePage : ushort - { - GENERIC = 1, - GAME = 5, - LED = 8, - BUTTON = 9, - } - - public enum HidUsageId : ushort - { - GENERIC_POINTER = 1, - GENERIC_MOUSE = 2, - GENERIC_JOYSTICK = 4, - GENERIC_GAMEPAD = 5, - GENERIC_KEYBOARD = 6, - GENERIC_KEYPAD = 7, - GENERIC_MULTI_AXIS_CONTROLLER = 8, - } - - [Flags] - public enum RIDEV : int - { - REMOVE = 0x00000001, - EXCLUDE = 0x00000010, - PAGEONLY = 0x00000020, - NOLEGACY = PAGEONLY | EXCLUDE, - INPUTSINK = 0x00000100, - CAPTUREMOUSE = 0x00000200, - NOHOTKEYS = CAPTUREMOUSE, - APPKEYS = 0x00000400, - EXINPUTSINK = 0x00001000, - DEVNOTIFY = 0x00002000, - } - } - - public enum RID : uint - { - HEADER = 0x10000005, - INPUT = 0x10000003, - } - - [StructLayout(LayoutKind.Sequential)] - public struct RAWINPUTHEADER - { - public RIM_TYPE dwType; - public uint dwSize; - public IntPtr hDevice; - public IntPtr wParam; - - public enum RIM_TYPE : uint - { - MOUSE = 0, - KEYBOARD = 1, - HID = 2, - } - } - - [StructLayout(LayoutKind.Sequential)] - public struct RAWMOUSE - { - public ushort usFlags; - public uint ulButtons; - public uint ulRawButtons; - public int lLastX; - public int lLastY; - public uint ulExtraInformation; - } - - [StructLayout(LayoutKind.Sequential)] - public struct RAWKEYBOARD - { - public ushort MakeCode; - public RIM_KEY Flags; - public ushort Reserved; - public ushort VKey; - public uint Message; - public uint ExtraInformation; - - public enum RIM_KEY : ushort - { - MAKE = 0, - BREAK = 1, - E0 = 2, - E1 = 3, - } - } - - [StructLayout(LayoutKind.Sequential)] - public struct RAWHID - { - public uint dwSizeHid; - public uint dwCount; - public byte bRawData; - } - - [StructLayout(LayoutKind.Explicit)] - public struct RAWINPUTDATA - { - [FieldOffset(0)] - public RAWMOUSE mouse; - [FieldOffset(0)] - public RAWKEYBOARD keyboard; - [FieldOffset(0)] - public RAWHID hid; - } - - [StructLayout(LayoutKind.Sequential)] - public struct RAWINPUT - { - public RAWINPUTHEADER header; - public RAWINPUTDATA data; - } - public delegate IntPtr WNDPROC(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] @@ -259,9 +138,6 @@ namespace BizHawk.Common [DllImport("kernel32.dll", EntryPoint = "DeleteFileW", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true)] public static extern bool DeleteFileW([MarshalAs(UnmanagedType.LPWStr)] string lpFileName); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - public static extern unsafe IntPtr DefRawInputProc(RAWINPUT* paRawInput, int nInput, int cbSizeHeader); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam); @@ -287,12 +163,6 @@ namespace BizHawk.Common [DllImport("kernel32.dll", SetLastError = true)] public static extern IntPtr GetProcessHeap(); - [DllImport("user32.dll")] - public static extern int GetRawInputData(IntPtr hRawInput, RID uiCommand, IntPtr pData, out int bSize, int cbSizeHeader); - - [DllImport("user32.dll")] - public static extern unsafe int GetRawInputData(IntPtr hRawInput, RID uiCommand, RAWINPUT* pData, ref int bSize, int cbSizeHeader); - [DllImport("kernel32.dll", SetLastError = false)] public static extern IntPtr HeapAlloc(IntPtr hHeap, uint dwFlags, int dwBytes); @@ -325,10 +195,6 @@ namespace BizHawk.Common [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr RegisterClass([In] ref WNDCLASS lpWndClass); - [DllImport("user32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - public static extern bool RegisterRawInputDevices(RAWINPUTDEVICE[] pRawInputDevices, uint uiNumDevices, int cbSize); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, ref HDITEM lParam);