move RAWINPUT imports to a new file

This commit is contained in:
CasualPokePlayer 2023-10-12 20:49:17 -07:00
parent 5fc37d6aac
commit b5ebee7cd5
3 changed files with 148 additions and 134 deletions

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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);