Not enough ratings
TrackIR + Joystick in Ace Combat™ 7
By rickswan
Greetings Aces.
I have spent two days getting my new TrackIR 5 head tracker to work with Ace Combat™ 7, a game that does not (and probably never will) support it - along with a joystick that it also doesn't immediately support right out the gate. I finally found something that worked for me so I figured I would share the love in case it works for you!

Note that if you get this working for this game, it will probably work for just about any other game. Ace Combat™ 7 just happens to be a game that really benefits from the addition of this feature (if not for "high level play" then at least for immersion).

Anyway, are you ready to write a check your body can't cash? If so, then it's time to enter the danger zone.
Ace Combat™ 7 is an arcade-style flight action series with deep roots in console gaming. As such, it's not surprising that TrackIR - generally considered a "simulator" game peripheral - is not supported. The way around this is by basically tricking Ace Combat™ 7 into thinking our tracked head movements are the right analog stick of an Xbox 360 controller, lol.

You will need to install the following: TrackIR, VJoy, FreePIE, x360ce (plus Steam and the game, obviously). I have made sure to either mention or show in the screenshots the version of the software I am using at the time of making this guide, so if you are having difficulty, the version of the software you are using may be the culprit. I have no affiliation with any of the developers of these programs nor do I really know how any of them work, so if you follow this guide and still run into issues I may not be able to help much - but still feel free to leave a comment. Getting all this to work was kind of like black magic for me, but I learned a lot along the way.

I have also made another version of this guide as a general-purpose Steam guide (not specific to just this game), so hopefully it can aid the wider Steam audience. Thanks to Nocturnalverse for the suggestion! Here's the guide.

I am running Ace Combat™ 7 via Steam on a Sager Windows 10 model P770Z-G laptop with an i7-4790K 4.0GHz CPU, 32GB of Kingston DDR3 RAM, and an NVIDIA GeForce GTX 980M GPU.

I didn't figure all this out on my own, so here is credit where credit is due:
With that out of the way, let's begin!
1. TrackIR
The first step is to set up TrackIR. Attach the tracker to a headset or hat, download the latest version of the software from, connect the IR camera to the computer (along with the TrackClip Pro if you have it), and run the software.
If you have a TrackClip Pro, select that option in the TrackIR software. If all goes well, you should see the 3D view tracking your head movements in this window.

You can mess with things like deadzone, sensitivity, etc. in this software but I won't cover that here. Next, we need a program that will make these head tracker inputs usable for our purposes.
2. vJoy
vJoy is "a device driver that bridges the gap between any device that is not a joystick and an application that requires a joystick."

Download and install vJoy from
Once installed, run the vJoy configuration executable vJoyConf.exe

Although it's possible that you only need the Rx and Ry axes, I played it safe by leaving all the settings on. You should be good to go if your settings look like mine in the window shown, with "vJoyDevice: 1" active and "Enable vJoy" checked.
3. FreePIE
FreePIE (Programmable Input Emulator) is a C# utility for bridging and emulating input devices. We will be using it to run code I found online that takes the head tracking input from the TrackIR software and translates it into joystick movement for VJoy.

Download it from here:

Before we can use it, though, you need to make a file with code for FreePIE to use. To do this, open a simple text editor such as notepad and type the following:
def update(): yaw = filters.mapRange(trackIR.yaw, -90, 90, -vJoy[0].axisMax, vJoy[0].axisMax) pitch = filters.mapRange(trackIR.pitch, -90, 90, -vJoy[0].axisMax, vJoy[0].axisMax) vJoy[0].rx = yaw vJoy[0].ry = pitch if starting: trackIR.update += update
Save it as a python file, something like "" (shout-out to Zyrjello's guide). If you don't know how to save it as a python file, make sure Windows is showing file extensions[] so you can save it with the .py suffix.

After you have made the python file, run FreePIE.
Go to File > Open > select the python file you made (after opening it once, you can go to File > Recent Files so you don't have to find it every time). The code should appear.
Next go to Script > Run script (or press F5).
If no error appears, you should be good, but there is a quick way to make sure...

When you installed vJoy, the vJoy Monitor should have been installed with it.
Open the monitor (JoyMonitor.exe)
When you open it, this is what you should see. You'll know everything is functioning properly up to this point if the red bars representing the Rx and Ry values move as your head moves - this means that the head movements from TrackIR are successfully being translated into the virtual controller!
4. x360ce
x360ce aka "Xbox 360 Controller Emulator" allows various controller devices to be combined and turned into one virtual Xbox 360 controller - so the TrackIR head tracker + joystick appear to the computer as one single Xbox 360 controller rather than two separate devices.

This is where my guide diverges from the others I've found, the reason being most other guides seemed to be using versions 3.2 or lower. I couldn't get it working until I tried using version 4+.

Download x360ce from here: and extract it somewhere safe. I believe in older versions of the software you had to place the x360ce.exe file in the game's directory, but that isn't necessary for the version I'm using. Run "x360ce.exe" as an administrator:

When you load x360ce for the first time the input options will probably be greyed out.

Adding the Game
Click "Add Game..." > add Ace Combat™ 7. You'll know you successfully added it if it shows up on the "Games" tab and in the "Game:" drop-down menu at the top.

If you are unsure of where Ace Combat™ 7 is located, in the steam library you can right-click the game > Properties > Local Files tab > Browse Local Files... for example, my game is located in D:\SteamLibrary\steamapps\common\ACE COMBAT 7.
Random Fun Tip: there's a program called "Everything.exe" that you can get from - this program indexes your hard drives and lets you search for any file or folder among all your hard drives instantly. If you had this program you could just type in "Ace7Game.exe" and "Everything" would immediately find it for you. Neat, right?
Now that you have added Ace Combat™ 7, x360ce creates a unique profile for the game.

Adding the Controller Devices (e.g. TrackIR & Joystick)
Next, go to the "Controller 1" tab, then click on the "Add..." button
(not to be confused with the "Add Game..." button!)

Here you should see the various input devices connected to your PC. Add the vJoy device (this is your TrackIR) and your joystick (my joystick is the SideWinder Force Feedback 2):

Mapping the Controller Devices to the Emulated XBox 360 Controller
You can now map the emulated controller's buttons.
There are three main ways to map your buttons:
  • Manually input buttons by selecting the drop-down menu next to a controller button and selecting the input button/axis name from a list
  • In the same drop-down menu you can select "Record", which then lets you press the button on your joystick that you want to assign to the corresponding xbox button
  • Select the "Auto" button at the bottom of the screen to automatically map every button
You'll probably end up doing a combination of all three, but you should probably start with "Auto" because it erases manually remapped buttons.

Joystick and TrackIR Settings
The joystick is mostly up to personal preference and is something you'll probably want to alt-tab between the game and x360ce to get just how you like it.

For the TrackIR (vJoy Device), all you need to worry about is mapping "Stick Axis X" to "Axis 4" and "Stick Axis Y" to "Axis 5". If all goes well, the right joystick will move as your head moves!

Finally, check "Enable 2 Mapped Devices (Combine)" which makes the emulated Xbox 360 Controller a device that Steam can recognize.
5. Steam Input
Aaand this is where it all finally comes together.

Preflight - Steam settings
In Steam, go to your library and right-click Ace Combat™ 7 > Properties:

In the game's properties window, make sure that "Enable the Steam Overlay while in-game" is checked and that "Use your global Steam Input settings" is selected. Then select "Close."

Next, go to Steam > Settings > Controller > General Controller Settings:

Make sure that Xbox configuration support is checked on.
The emulated Xbox 360 controller from x360ce should appear here as "Xbox 360 Controller". If you want to verify that it's the right one you can select the 360 controller > Define Layout:

you should see some telltale signs that this Xbox 360 controller is actually your joystick and TrackIR (such as if you select an option and it reacts to your head movement). select cancel and back out without saving changes. Exit the Controller Settings.

Next, go to View > Big Picture Mode.

Taxiing - booting up the game
In Big Picture Mode, go to your library > play Ace Combat™ 7. Once the game starts, open the Steam Overlay (Shift+Tab by default) > Controller Configuration > depending on whether or not you have another controller plugged in, you may need to select "Switch Controller" and manually choose the Xbox 360 Controller:

Now for the moment of truth. In Ace Combat™ 7, start a free mission > free flight and sortie so you can just fly around without distraction. If head tracking with TrackIR and your joystick are working, congratulations, the hard part is over!

Takeoff - tweaks
Finally, you're almost ready to take to the skies. The only thing left to do now is tweak the controls using Steam Input. In game, press Shift+Tab once again to enter the Steam overlay > select Controller Configuration > here you can tweak the inputs:

This has importance in Ace Combat™ 7: Skies Unknown because there are at least three actions (Autopilot, Flares, and Type-A High-G Turns) requiring two buttons to be pressed simultaneously.

This can be problematic if, for example, you configured yaw to be on the rotational Z axis. However, to activate autopilot you need to press Left Bumper and Right Bumper at the same time - something that is easy if they're two separate buttons on a controller, but something which is impossible if assigned to two opposite directions on the same axis of a joystick! With Steam Input you can configure a button to emulate pressing both bumper buttons at the same time.

Another useful tip for Steam Input, which is useful if you have a joystick with limited buttons, is to set up activators to do things like double press, long press, chorded presses, etc. For example, I have my controls configured so that pressing and holding a button initiates a High-G Turn, but double pressing it quickly changes the camera view. If you are interested in learning more about Steam Input's Activators, here's a link with more info.
... and voilà - the game thinks you're playing the game with just a regular old Xbox 360 controller, but in reality you could be playing with any theoretical combination, such as an infrared head tracker, HOTAS joystick, pedals, steering wheel, guitar hero guitar, joy-cons, arcade fight sticks, Dance Dance Revolution pad, lightgun, etc. The sky really is the limit.

Well I hope this helped somebody. I hope you haven't lost that loving feeling because now you can buzz the tower to your heart's content, and you can be my wingman anytime.
< >
jknutah May 17 @ 11:24pm 
Hi there, great guide thank you! But I need help - everything works great and tests fine, until after I start the game, Shift+Tab in BPM and got to Controller Configuration. It says that no controller is connected. And again, everything up to that point was done as described and tests as expected; I should have the X350 controller show up but it doesn't. Any ideas, or has anyone run into this? Thanks in advance!
Maxx 2020 May 12 @ 7:25am 
Hi, I just started playing this game and I am loving it! But could you please tell me which axes your trackir is bound to in game? I'm using vjoy and freepie but am trying to edit the input,ini file accordingly. Already got my HOTAS Cougar working.
Thanks for your guide and thanks in advance for your help. Maxx, out.
rickswan  [author] May 1 @ 12:40pm 
@Nocturnalverse thanks for the tip! Also, thanks to your suggestion I have made a version of this guide under the general Steam category here ( this guide explains how I did it).
@deathspeed cool, thanks for letting me know!
Nocturnalverse Apr 22 @ 6:32pm 
Ah, forgot a tip. You may have a DLL version error on the FreePIE step. If that happens simply copy vJoyInterface.dll and vJoyInterfaceWrap.dll from your /vjoy/x86/ folder to the /FreePIE/ folder and overwrite them both. Or try overwriting one or the other. If that doesn't work try the ones from the /vjoy/x64/ folder The important thing is to get whatever libraries freepie needs to work with vjoy synced up. At the time of this post I had copied the ones from the x86 folder.
Nocturnalverse Apr 22 @ 6:24pm 
You should find a way to make this a general guide to steam/trackir so you can get all the votes from all the other gamers that end up here who aren't playing ace combat. Track IR for No Mans Sky, thanks for compiling all of that. I was struggling.
deathspeed Dec 20, 2020 @ 1:51pm 
I added a link to your guide to my joystick guide. Keep up the great work!
rickswan  [author] Dec 20, 2020 @ 11:05am 
@sontran20 Hey, that's pretty cool! Yeah you should make a guide on how to use your cell phone with SmoothTrack to OpenTrack for wireless head tracking, and I could put a link to it or append it in this guide :47_thumb_up:
@deathspeed No problem, and nice!
sontran20 Dec 19, 2020 @ 8:24am 
Here is a video I made of the wireless Head Tracking in action for the A-10 in 4K 60 fps with some graphics tweaks from another guide.
sontran20 Dec 18, 2020 @ 7:47am 
@rickswan I have figured out how to wirelessly send my head movements from my cell phone using SmoothTrack to OpenTrack and have it directly sent to x360ce. I had a lot of challenges and parts of your guide were tremendously helpful. Thank you for taking the time to write this guide. If you are interested in how to do it let me know. I may write a guide since in my case FreePIE is not used. The SmoothTrack app turns Android and Apple cell phones into headtracker. It cost $10 plus a tripod if needed.TrackIR camera is needed.
sontran20 Dec 16, 2020 @ 12:40am 
I think you did a excellent writeup. Would you happen to know how to get this to work through SmoothTrack cell phone app which leverages OpenTrack and thus buildt in FreeTrack 2.0 support? It works perfectly for DCS, IL2, MS Flight Simulator 2020 to wireless use my cell phone to translate head movements. I tried your instructions but couldn't get it to work. I think I need to modify FreePie script to understand the FreeTrack output from OpenTrack app. There is even a vjoy output but it doesn't seem to register. Here is the link to SmoothTrack if you are curious