rawinput-sharp
rawinput-sharp copied to clipboard
Cannot open game controller for raw input
Hi @mfakane, I'm trying to use your wrapper to receive raw input from game controllers. Here's an example controller I'm trying to read:

I've tried to modify SimpleExample to use either HidUsageAndPage.Joystick or HidUsageAndPage.Gamepad, but there is a Win32ErrorException. RegisterRawInputDevices returns false with GetLastError = 87, which is "The parameter is incorrect.".
I also tried to directly access it like this as well:
try
{
// Register the HidUsageAndPage to watch any device.
RawInputDevice.RegisterDevice(devices[0].UsageAndPage, RawInputDeviceFlags.ExInputSink | RawInputDeviceFlags.NoLegacy, window.Handle);
Application.Run();
}
finally
{
RawInputDevice.UnregisterDevice(devices[0].UsageAndPage);
}
I'm not sure if it's correct, but it returns the same error. What am I supposed to do?
@mfakane Just a reminder, I'd really appreciate if you could find some time to give this a look, please 🙏
Your device has UsageAndPage 1:05, so you should register with:
RawInputDevice.RegisterDevice(HidUsageAndPage.GamePad, RawInputDeviceFlags.InputSink, _window.Handle);
NoLegacy is only relevant for mouse and keyboard devices (see https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-rawinputdevice). InputSink vs ExInputSink depends on your usage.
Is your window (or _window in my example) instance still valid, when you call RegisterDevice? I.e. that it is not out of scope and being garbage collected?