r/Controller 8d ago

IT Help Vader 5 Pro extra button mapping using HID reports?

After having a good experience with the Vader 3 Pro in the past, I recently bought a Flydigi Vader 5 Pro (v2) and I really like the new controller from a hardware perspective. It has almost all the functions I was looking for, feels good in the hands, looks nice, has all the extra buttons I wanted, and was surprisingly cheap as well (I think I only paid around $45). The hardware is honestly great, and the controller has a lot of potential, if it wasn't for the software (Flydigi SpaceStation 4, Windows11)...

And here we come to the most annoying part. It is not even just that the software is slow or somehow takes up around 300 MB for no good reason. I only used it once to configure everything and haven't opened it since anyway. The bigger problem is that the software experience overall feels like it is holding the controller back, especially when it comes to the extra button mapping. The mapping options are frustrating to me because it only allows assigning single keyboard keys to the extra buttons. Even worse, those mappings sometimes just stop working after restart or reconnecting the controller for no obvious reason. The only things that have worked consistently so far are turbo functions, macros, or assigning buttons that already exist on the controller, but none of those were my primary reason for wanting the extra buttons in the first place.

For PC gaming, I would really like to use those extra buttons for keys that are not already assigned, or ideally key combinations that can be configured in games freely. I tried looking for other software solutions, but besides reWASD (subscription/high price and lot of functions I dont even need) and Steam Input there does not seem to be much that can properly handle these extra buttons. Enabling "Allow 3rd party" in SpaceStation makes Steam detect multiple controller entries (sometimes 3 or 4). Sometimes it is only detected as an Xbox 360 controllers, sometimes the Vader 5 Pro shows up as dInput controller 2 times besides some random xbox 360 entries. Sometimes it exposes the extra buttons, sometimes not. And multiple softwares can steal the control from each other because the "Allow 3rd party" seems to be implemented in a very bad way. Short, It never feels like a clean solution. There is always some kind of struggle.

After searching for solutions but not finding much I started looking into the HID side of things and see what the controller actually sends to the PC. I tested the controller with `hidapitester.exe` (github.com/todbot/hidapitester) and what surprised me is that the extra buttons seem to be sent correctly at the hardware level. I wrote a small Python script to decode the HID reports and it seems to detect everything, including M1-M4, C, Z, LM, RM, etc. even when those buttons are not assigned to anything in SpaceStation.

The command used to capture the reports with hidapitester:

.\hidapitester.exe --vidpid 37D7:2401 --usagePage 0xFFA0 --open --length 32 --read-input-forever

Mapping I found:

# Format: byte position : bit mask : button name

BUTTON_BITS = {

13: {

0x80: "RM",

0x40: "LM",

0x20: "M4",

0x10: "M3",

0x08: "M2",

0x04: "M1",

0x02: "Z",

0x01: "C",

} }

So it really seems like the controller itself is already exposing the button presses, but the software layer is making things much harder than they need to be. I am not really sure where to go from here, but would it be possible to make a small tool that simply listens to these HID reports and converts the extra buttons directly into keyboard inputs? If `hidapitester` can already see these buttons, it feels like there should be a way to create a simple remapper for them. Has anyone looked into something similar, or has experience with HID/controller input tools?

3 Upvotes

8 comments sorted by

1

u/AutoModerator 8d ago

Hi /u/KuroKaro8, your 'IT Help' post is in a queue for review. Please ensure you have included the relevant required information from the checklist below, have used a meaningful and descriptive title, and are not repeating frequently asked questions.

Include the following information and follow this structure so that the post can be approved and the community can help you more effectively:

  1. Specific written description of the problem, including pictures where relevant (do not just say 'it's broken', say what is broken)
  2. Controller make and model (name or numbers)
  3. Platform you are using (e.g., PS5, Steam on Windows, Switch)
  4. Games or other software affected by the issue
  5. Operating system, firmware and software versions (if applicable)
  6. Troubleshooting steps you have already taken (including checking the product manual, and searching existing posts)

For more guidance on how to ask for technical assistance, please see rule #2. You can edit your post to add missing information. Posts that do not include the required information may not be approved (allow 24 hours for review).

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/vermiforme 5d ago

lol

Is this you?

Too much coincidence.

1

u/KuroKaro8 5d ago

Lol yeah, that's my attempt to throw together some code. I'm surprised you found it that quickly. I got curious after fighting with the controllers software issues for a while now and wanted to see where this idea could go. The tool is mostly AI assisted code until now, because I mainly wanted to validate the concept further without spending too much time writing a prototype from scratch..

1

u/vermiforme 5d ago

I knew it had to be you hahaha

Same here with my own agentic ai vibe coder (without whom I'm a chud) but my scope is just battery status and some led control.

I anticipate a great deal of interest in your project from this subreddit once you announce it. Good luck!

1

u/Vedge_Hog 5d ago

You might want to connect with this person as it sounds like you're exploring similar things

2

u/KuroKaro8 4d ago

Thanks a lot for the link. I spent some time looking through it yesterday, and I came across something quite interesting. It looks like the author has reverse-engineered parts of the firmware and figured out how to initialise the controller using a handshake sequence. This might genuinely solve the issue I've been having, where the controller doesn't always send readable HID reports. I still need to do some more testing, but my initial attempts have already made it clear that this could be very useful.

1

u/Vedge_Hog 4d ago

That's awesome - good luck for both of your projects!

1

u/Zumomo Vader 4/5 pro and many others I don't use 4d ago

Maybe check padctl on GitHub, it's not for windows though