I’ve noticed that a lot of threads in this sub-forum don’t get any answers, however I will remain optimistic and ask my question anyway
I’m making the transition to Input System (to replace Input Manager) and I’ve noticed that the steering axis of a G920 steering wheel does not appear in the Input Debugger. The other buttons on the device do work, it’s just the steering axis (i.e. the important one!) that is missing. Also, the online docs for 0.2 mentioned a SteeringWheel class, but has since disappeared with v1.0.0.
What’s the recommended way to deal with a steering wheel in Input System?
ATM the best way to support specific HIDs is to create custom layouts for them. See docs.
However, improving the current HID fallback is also on the list. ATM it does a worse job than the old system’s generic HID code in figuring out certain controls.
Broader controller support (including wheels and flightsticks and such) was moved from a 1.0 item to a bigger roadmap item of its own.
Yeah, response rate hasn’t been overly great as of late
@Rene-Damm thanks, I’ll look into creating a custom layout.
Incidentally, I was able to get the steering axis to appear in the Input Debugger as a Joystick device, under Stick/X. I’m not sure what I did to make this work, but it does show the axis value now.
But weirdly, in my SendMessage callback which I’ve bound to this axis as an Analog (Control Type) Value (Action Type), I get this value as a float, but I also get a zero when the axis motion stops - is this expected?
I.e. if I move the steering wheel to three distinct positions then the Input Debugger shows values like -0.5, -0.6, -0.7, but the sequence of values I see in the callback might be something like -0.5, -0.52, 0.0, -0.59, -0.61, -0.64, 0.0, -0.70, 0.0. Those zeros are interspersed between the actual axis values.
I wasn’t able to find specific documentation on the individual Control Types and what the differences are between them - does this exist?
EDIT: if I poll the action every frame using InputAction.ReadValue<>() then the zero values do not occur.
Hmm, that sounds peculiar. My guess would be that this is actually present in the source data, i.e. the device/driver is actually sending these intermittent zero values. And since the action callbacks respond to each individual value change, it’s visible there while not being visible when polling.
Hey I really don’t want to be the grave digger here but I got the same wheel and I’m trying to get it running. Did you get through the whole creating a custom HID layout? If yes could you give me a few insights? Thanks!
@LeHaase I didn’t create a custom HID layout in the end - instead I used explicit device paths in my controller mappings to differentiate between the wheel and another connected joystick. The downside is that I need to add explicit paths for every new controller that gets added (e.g. I now support G920, G29 and T300RS), but my situation is such that I can control which hardware is present. A typical game wouldn’t have that luxury of course.
Also I just use InputAction.ReadValue<>() to avoid the interleaved zeros. I never checked if the same thing happens with the G29 or T300RS when using the SendMessage callback.