Hello,
I use the SimHub Control Mapper to map the buttons of different steering wheels to a virtual VJOY device, which is then used in the respective simulation in the control settings. This makes it possible to use different steering wheels without having to adjust anything in the sim. So up to this point the usual use case.
In addition I have a Elgato Stream Deck which I would like to use with the Plugin "iRaceIT" (for a seamless integration of iRacing). Now I have some control options which I would like to map to both, SimHub and the Stream Deck via iRaceIT, e.g. adjust brake bias or traction control.
In the iRaceIT plugin it is possible to add a keyboard hotkey (which need to be assigned in iRacing accordingly) or a VJOY button. Now in theory it would make sense to simply use the same VJOY Device and the same button as in SimHub so that both programs send their signals to the virtual device. This however seems to be an issue as SimHub uses the VJOY device exclusively as soon as a source controller (a physical steering wheel) is connected via SimHub. The Stream Deck application is then no longer able find the VJOY devices that is used with SimHub or to send signals to this VJOY device. This is also indicated in the VJOY device list by the PID of SimHub being assigned to the VJOY device as “Owner PID” in red color.
Now the question is why it is necessary that SimHub uses the device exclusively? The VJOY devices mapped via Stream Deck are not exclusively assigned by Stream Deck. Is there a way to prevent SimHub from blocking the VJOY device for other applications?
Another idea would be to use a second VJOY controller in the Stream Deck software, which is not blocked by SimHub. But then you would have to be able to set up this second VJOY controller as a source controller (like a physical controller) in SimHub.
Or is there something I'm missing? I know that there is a SimHub plugin for stream deck to trigger a control mapper role. But I don't want to use that because it doesn't sync the button with iRacing like iRaceIT does. I also don't want to set everything up with keyboard hotkeys instead because they are not recognized in the Sim when the window is not in focus (which is no problem with VJOY which is always recognized).
Thanks for any help!
Hi !
Exclusive access depends of the design of the application, overall to control a vjoy you have to take control, update it, release it, taking control is a lengthy operation, since I need very good response times to drive all the buttons and axis all at once I use the offical control pattern which is to take control once and release it once done (simhub exit, feature disabling). If you try the demo "feeder" coming with vjoy you will see it's working the same way as it's the intended control pattern.
Concerning adding vjoys as a source is currently not allowed as there is no direct relationship between the vjoyid and the final controller seen so I can't prevent a dead loop adding the vjoy being currently fed by simhub itself.
Hi, thanks for the answer! Thats correct, also other applications like Joystick Gremlin doing the same thing with exclusive access. So it looks like it is the correct design decision and the most performant one.
Regarding the other topic, I think it should be possible to detect which VJOY-ID is set as target virtual controller (output mapping) and which one is set to a source controller and then implement a logic that they can't be set to the same ID. At least in Joystick Gremlin it is working properly and it seems like it is not possible to create a loop. Also it looks like there is a unique GUID for each individual VJOY. This should help to be able to distinguish them from each other.
I would not like to switch to Joystick Gremlin because SimHub's implementation is much more intuitive.
I've just noticed that my feature request to be able to add a vJOY controller as a source controller has been added with SimHub v9.6.3. Updated to the most recent version of SimHub right away and what can I say... It works as expected!! Super neat feature that offers so much more possibilities. Thanks for adding this option! 👍