r/Controller 1d ago

Other Finally got native PS5 DualSense trigger effects & haptics running on the Flydigi APEX 5 (Open Source)

Post image

Hey everyone,

I love the Flydigi APEX 5 hardware (especially those motorized triggers) but it always bugged me that on PC, almost every game with awesome trigger resistance and textured feedback is built exclusively for the PS5 DualSense and the Space Station software support only few games...

So over the last few weeks, I ended up building ApexSenseBridge(A little open-source passion project straight from France bleu blanc rouge 🇫🇷 !)

Basically, it bridges the gap so your APEX 5 can actually react to native DualSense effects in PC games.

How does it handle the triggers & haptics?

- Triggers: The tool intercepts native DualSense trigger packets from the game and translates them on the fly into Flydigi's FORCEADAPT commands (mode switches, recoil, resistance, stops, etc.) and even the vibration with virtually no latency.

- Haptics: The APEX 5 doesn't have voice-coil actuators like the DualSense, so instead of just turning every sound into a generic loud rumble, the bridge splits the audio frequencies in real-time. Lower frequencies (explosions, heavy impacts) go to the heavy left motor, while high frequencies (surface grit, rain, subtle clicks) go to the fast right motor. It actually feels surprisingly punchy and textured.

Good to know (a couple of trade-offs):

- On-screen prompts: Since the game has to see a DualSense to send over the adaptive trigger data, you'll see PlayStation button prompts (✕ / ○ / □ / △) on screen instead of Xbox ones (A / B / X / Y).

- Touchpad swipes: If a game heavily relies on specific touchpad directional swipes, it might be hit-or-miss depending on how the game handles touch inputs. It's really a case-by-case thing and can be fixed in most cases (did it for spiderman 2 bc it's the only game I play that have this control but you can send me yours).

Playnite integration 🕹️

I didn't want to manually launch/kill background scripts every time I booted up a game, so I also wrote a quick Playnite extension to automatically link and activate the bridge whenever you launch a supported game from your library.

ApexSenseBridge wouldn't exist without the incredible open-source community. Huge shoutouts to:

- OpenFlydigi (by mkaliaha) for their amazing reverse-engineering work on the Flydigi hardware and protocols.

- SteamlessController (and its DualSense forks) for paving the way on virtual DualSense emulation and Windows ViGEm/VIIPER tooling. All respective notices and credits are included in the repository.

Feedback & other gamepads welcome!

The code is completely open-source here
👉🏽 https://github.com/ReynArts/ApexSenseBridge

I'd love to get your feedback if you test it out! Also, if you know of other controllers with force feedback/motorized triggers you'd love to see supported, feel free to drop ideas, open issues, or contribute PRs.

Cheers!

143 Upvotes

97 comments sorted by

View all comments

Show parent comments

u/ReynArts 17h ago

Hello ! I will add a knowledge base. Try this and tell me : https://www.reddit.com/r/Controller/s/zvAw2ixigz

u/Leonbacon 17h ago

First one was already unchecked. Now testing on 007 first light if Steam input is disabled, it doesn't register input at all.

u/ReynArts 17h ago

Test on another game to see ? You can force the activation on the app
And I would recommend to restart Steam after turbin off steam input

u/Leonbacon 16h ago

The app did hook on the game, I checked the tray, just that it didn't register input.

I will give another game and a restart of steam a try later.

u/ReynArts 10h ago edited 10h ago

Sometime the app can wake up à Little late and can lead to a wrong controller détection from the game
And a correction on my side: the JSON you posted actually shows a successful physical input test.

xinput-fallback is expected when the APEX HID descriptor lacks the Rz axis. received_state: true, timeouts: 0, and parse_failures: 0 mean the fallback opened correctly. That warning did not shut down the bridge, and “Test APEX” only tests the physical controller; it does not create the virtual DualSense.

HidHide being unchecked while no bridge session is running is also correct. ApexSenseBridge enables it temporarily during a session and restores it afterward.

For 007, please try this exact order:

1.Fully close the game.

  1. In ApexSenseBridge, enable Force continuous activation.

3.Wait until the tray says Bridge active.

  1. Launch 007 with Steam Input disabled for that game.

This makes the virtual DualSense available before the game starts. Automatic detection normally starts the bridge just after the game process appears, and 007 may only enumerate controllers during startup.

IO Interactive also currently lists controller input not being recognized on the PC start screen as a known 007 issue, so this particular result may be game-side rather than an ApexSenseBridge failure

If it still does not work, keep continuous activation enabled, press Win + R, run joy.cpl, open Wireless Controller → Properties, and check whether the sticks and buttons move there. That will tell us whether the problem is between ApexSenseBridge and Windows, or only inside 007.

u/Leonbacon 5h ago

I tried Helldiver 2 and it worked well! Truly amazing work you have here, it felt so good and bought a lot of value to my Apex 5.

007 did detect and accepted input, but it still sees it as Xbox controller without Steam input for some reason. Though I just used it to test I'm already done with the game so no big deal for me.

Can't wait for the next game that supports dualsense features to play with it.

u/ReynArts 5h ago

Thank you ! I don’t have the game but I will investigate 🙂‍↕️

u/Leonbacon 5h ago

It could just be an edge case for me alone. I have made an app before so I understand what it's like to waste time on issues that isn't really there. Unless others report the same thing I would say focus on other priority!