Click here to Skip to main content
15,878,231 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hey everybody!

Excuse me if it might look like a noob... But I am. I know basic coding in Python, C++ and Java. But never tried to do a project similar to this one.

I own a SEGA steering wheel, which uses IO4. Most of the buttons of it are recognized by the computer directly like would a normal controller do.

But the axis (analogic inputs) aren't recognized.

They do appear in the settings, but rawinputs stays at 0.

As you will obviously understand, on a steering wheel with pedals, those are the 3 most important signals (Two pedals+Wheel).

I haven't been able to detect the rawinput sent by the IO4, but I'm 100% sure that my computer is receiving so, here's what I'd like to do.

1) Detect the rawinputs sent by the steering wheel and pedals.
2) Remap those inputs so that my computer detects them directly as X axis, Y axis,... or, if not possible, send them to Vjoy and start a new setup.
3) Take care of the ForceFeedback, FFB doesn't come from the USB but from an RS232, also connected directly to the computer. I know that there are some ways to send him Directinput signals through BackForceFeeder, Boomslangz tools, etc,... but don't know how to have my computer to detect them and interpet them.

Anyone with a hint? Just for instance, here's the link to SegaTools io4 code, it's a project that aims to make run Sega Arcade Games on PC, and this code is the one specific to my board, so it might probably be a big help!

segatools/board/io4.c at master · rakisaionji/segatools · GitHub[^]

Thanks for your time!

What I have tried:

#include <windows.h>

Updated 9-Oct-23 18:49pm

Coding a driver - any driver - is not a job for a beginner: heck, I'd think long and hard before I attempted the project and I've got decades of experience!

And writing a driver for a multi-input gamepad so that it works with PC games? That's a complicated project that if you don't know what you're doing could quite easily brick your Windows installation ...

If you really, really are committed to this, then I'd start by writing a much, much simpler driver and workign your way up: writing windows drivers - Google Search[^] has a lot of info and "starter tutorials" (but I'd still probably test the code in a VM!)

Ultimately, you have to ask yourself "why do I want to do this?" and evaluate how much time it will take against the benefits you will get at the end - this will not be a quick project and you have a lot to learn before it's done, if it ever is completed which isn't guaranteed as it's pretty easy to get discouraged and frustrated when you're trying to work way above your experience level!
Share this answer
As were mentioned driver development is not for the beginners. But first you should look at how your current device is recognized in the system. If that appear as HID device (Human Input Device) like mouse or keyboard you can operate with the HID packets in the User Mode without writing any kernel code. Also all USB devices can be manually trigged to install the WinUSB driver and you can operate with it with the libusb - for the some standards IO. The code you specify does not looks like the kernel code. So you can look into UMDF (User Mode Driver Framework) if you sure that you will require the driver.

Share this answer
Member 16110232 10-Feb-24 20:23pm    
I'm not bothering you with my discoveries because they go slow and I'm still a noobie in this world, but I've been able to achieve some progress.

I've been able to recreate the signals I want using an Arduino, now, my mission will be to use the original board to achieve the same. I'll write here again when I'll have achieved someting worth to note! Thank you very much for your kind answer

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900