Combine multiple game controllers into a single logical one

Update April 2018:
Use vJoy GUI configuration instead of command line.
Added 64 bit version. (compatible with windows 8 & 10)

Sometimes, as I found it myself, PC games can handle only one controller. For example, the FreeSpace 2 Open (FSO) supports only a single HID input device.  This eliminate the possibility to use a separate throttle and joystick together in this type of games. To overcome this problem, we need to combine both physical controllers into one virtual controller to be used at this game. The virtual controller will combine  and provide all axis, POVs and buttons of both controllers.

VJOY Virtual controller

Fortunately there is a great free software called vJoy. VJoy lets you create a virtual HID controller with configurable number of axis, POVs and buttons. You then need to feed this vJoy controller with data you want to present to the game. An included SDK is letting you develop your own vJoy feeder.  Using this SDK, I have developed a feeder that takes input from both Suncom SFS Throttle and Suncom F15 Talon joystick (converted to work on USB by my previous projects) and feeds a single vJoy virtual controller. Following, I will explain how to install and use it. I will also publish the source code, so anybody who wants to make his own feeder or to join any other types of  joysticks can use it as a reference.

NOTE: vJoy is only for Windows platform.

Step 1: Install vJoy

Go to vJoy website, download and install the software. This will create a single default virtual controller.

Step 2: Configure vJoy

We now need to configure the vJoy controller to have all needed axes POVs and buttons.
Open the vJoy configuration utility “Configure vJoy”, and configure device #1 as follows:

vJoy configuration utility

Then Press “Apply”.

 

The vJoy controller should be now configured correctly. To make sure it is, Open windows control panel, and select Game Controllers. Select the vJoy controller and click properties. You should see something like this:

vJoy_cp

Step 3: Install the feeder.

Download the SuncomControllerMerge feeder  32bit version here or 64bit version here. It does not come with an installer, so you need to install it manually. Just extract the zip file to a directory of your choice and run the SuncomControllerMerge.exe file included.

Thats it! you are all set! All you need now id to plug the Suncom Throttle and joystick and the feeder will automatically detect them. To check if everything works correctly, go back to Game controllers in the control panel and click properties on the vJoy controller. Now play with both joystick and throttle and make sure both affect the vJoy controller.

Important notes:

1.  Some games, not only that they do not support multiple controllers, they even do not let you select which one to use. In this case, make sure the vJoy controller is the default one. you can do it by going back to the Game Controllers window in the control panel, and press the “advanced” button.

2. Though the vJoy controller will always be present, even after the system reboots, the feeder will not, and must be activated each time when needed. Without the feeder, the game will detect the vJoy controller, but will not receive any data from it.

Source code:

For those of you who wants to play with the software, or adapt it to other controllers,
Updated sources, good for windows 7, 8, 10 can be found at GitHub , and compiled with VS c# 2010 and up.

And here is the old source code. It can be compiled under MS Visual c# 2008 express and up.

 

 

17 Responses to 'Combine multiple game controllers into a single logical one'

  1. Craig says:

    Stopping by again to see what you have been up to and happy to find you’re still busy with the joysticks. 🙂 I never got around to hooking up the throttle to try Freespace, only to run the configuration test in Windows. I may have to give your piece of software a go although I’ll need to compile for 64-bit. Keep up the neat projects!

  2. Jason Gorrman says:

    I am wondering if this is what I have to do (use the SDK) in order to get a PCGamerBike (seen as keyboard by OS) and an Xbox360 controller to be joined and appear as only one xbox 360 controller for a game that uses only the xbox controller (keyboard not active while controller active). If you know, please do tell. Thanks!

    • shaise says:

      Hi Jason,

      Yes, I think you can use this SDK for your purpose. Bare in mind though, that if the game expects an XBOX360 controller, it might not recognize vjoy as its appears as a general HID Joystick.

      shai

  3. Bartek says:

    The windows CMD don`t recognizes this command “vJoyConfig.exe 1 -f -a x y rx rz -b 28 -p 3”

    what should I do ?

    • shaise says:

      did you change directory to where vjoy is installed?

      • Entity325 says:

        You can’t just toss out a bunch of command line parameters. Where did you get those? What do they do? I can’t find command line parameters listed anywhere in vJoy documentation, and whatever it was you’re doing, the command you listed is going to be extremely specific to you.

        When I use the command you listed, it just launches the GUI config utility, and the parameters appear to have done nothing.

  4. Marco says:

    Hi, I have installed last updated version of vjoy but don’ work on my input devices.

    I have ch pro throttle and microsoft sidewinder 2.

    After install vjoy and execute ‘vJoyConfig.exe’ it create the virtual input device correcly but when I move or press any bottons don’t do nothing. Some think with vjoy monitor.

    Any suggests ?

    Best Regards

    Marco

    • shaise says:

      Hi Marco,
      Did you install the feeder as well(step 3)?

      • Marco says:

        Hi shaise,

        Thank you for fast reply 🙂

        Yes, I have installed it.

        When I execute it:

        vjoy: found ver 2.1.8
        Suncom F15: waiting
        Suncom SFS: waiting

        what you suggest ?

        Best Regards

        Marco

        • shaise says:

          Ahh yes sorry about that…
          the feeder software is looking for the Sancom joysticks. If you have some programming skils you can download the source code from github (link above) make changes so it will work for your joysticks then compile with microsoft visual studio

          • Marco says:

            Hi shaise,

            Apart Sancom that probably don’t work for other reasons, is normal that after install vjoy and run “monitor vjoy” all axes and bottons don’t respond and the some thing in the virtual controller that create after configuration ?

          • shaise says:

            Without the feeder software, nothing in the virtual joystick will be active.

  5. Rick Gonzales says:

    I like your article, and found it informative, but I’m not a tech guy, but I have recently gotten into pc gaming. My problem is that I have a disability in my left hand. I’m using a ps4 controller to play right now, but I really want to use a mouse for my right hand, unfortunately my left hand doesn’t have the finger dexterity to use the keyboard effectively. Do you know of a way that i could run dual controllers (the left side of the ps4 controller for my left hand) and program a gaming mouse for the left side of the ps4 controller? I’m playing mostly CoDMW Warzone right now if that makes a difference?
    Thanks!

    • shaise says:

      Not sure I completely understand your request. However, a mouse and a game controller are completely different devices and hence can not be combined. Only 2 game controllers can be combined to a virtual one.

Leave a Reply

Your email address will not be published. Required fields are marked *

*