ACE COMBAT™7: SKIES UNKNOWN

ACE COMBAT™7: SKIES UNKNOWN

271 ratings
Native Flightstick Configuration
By deathspeed
Configure almost any flightstick or HOTAS without extra software, using undocumented tools built into the game

Ace Combat 7 is a great game, but its roots as a console game that was ported to PC are evident. One of the most common complaints in the Steam forums is the lack of HOTAS/flightstick support outside a couple of branded accessories at the game's launch. While support for other HOTAS/flightstick controllers was soon added in a game update, the fix was not well publicized and these controllers are not configurable through the game menus.

This guide is an attempt to simply and clearly demonstrate how to to configure most HOTAS/flightstick controllers by editing the input.ini file. This method is safe - it cannot cause any system issues (it is not a registry edit), it does not trigger multiplayer cheat detection, and it does not interfere with any mods. If your stick already works, you can still use this guide to configure controls the way you want them.
7
10
5
18
6
3
2
2
3
3
3
2
   
Award
Favorite
Favorited
Unfavorite
Preparation











IMPORTANT: Most people need to disable Steam Input for this method to work. Right click the game in the Steam Games library and go to Properties. Click "Controller" in the left pane. In the right pane, click the box with the blue dropdown indicator, and select "Disable Steam Input."


Be sure your Windows folder view settings are set to show hidden folders. The AppData folder you will need later is hidden by default. Here is how to unhide the folder in Windows 10:
- Navigate to C:\Users\[username].
- In the upper left menu bar, select the "View" tab.
- Toward the right side of the menu there is a section labeled "Show/hide". Check the "Hidden items" box.







And finally, if you previously had x360CE installed and applied to this game, you can get odd binding issues with this method. Be sure to remove any x360CE files in the AC7 working directory.
https://steamcommunity.com/app/502500/discussions/0/2569816251290811021/
Configuration











Use Windows Explorer to navigate to the C:\Users\[username]\AppData\Local\BANDAI NAMCO Entertainment\ACE COMBAT 7 folder. By default this folder is on the C drive, but it could be on a different drive depending on how you set up Steam installations. It is also hidden by default. Instructions to unhide the folder are in the previous section of this guide. (I have also read that using the Windows Search bar to search for %AppData% will open it even if hidden, but i have not verified this.)

Open the input.ini file with Notepad or your text editor of choice. You should see something like this:

[Joystick-001B045E-0000-0000-0000-504944564944]
ProductName=SideWinder Force Feedback 2 Joystick
Flight_Gun=
Flight_Missile=
Flight_Weapon=
.
.
.
and about 40 or so additional parameters that are blank after the "equals" sign.

The game is at least acknowledging the joystick, and you just need to add values for each parameter.

OPTIONAL - make a backup of the existing input.ini, just in case something goes wrong and you need it back. You can just make a copy, and name it something like "input.ini.orig". If you mess up the new one, you can delete it, then rename your backup by removing ".orig".

Now just type or paste values to assign buttons and axes to the functions you want. Initially you can just paste the values below over the existing values in input.ini. For most sticks this works right out of the box, but you can adjust the values to match your play style and preferences. My stick has only 8 buttons, so if you have more you can fill in those blanks.

Flight_Gun=Button1
Flight_Missile=Button2
Flight_Weapon=Button6
Flight_Target=Button3
Flight_Radar=Button5
Flight_Flare=Button4
Flight_View=
Flight_AccelerationDeceleration=Button8
Flight_AutoPilot=Button7
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=Y:R
Flight_Roll=X
Flight_Yaw=Rz
Flight_Throttle=Slider1
Flight_CameraPitch=POV_U1 + POV_D1:R
Flight_CameraYaw=POV_R1 + POV_L1:R
UI_B=Button2
UI_A=Button1
UI_X=Button3
UI_Y=Button4
UI_LB=POV_L1
UI_RB=POV_R1
UI_LT=POV_U1
UI_RT=POV_D1
UI_LeftStickPress=Button5
UI_RightStickPress=Button6
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button7

Play around with the assignments to map the controls to the functions you want.

Note for X56 users: MR.120 has helpfully provided a numeric profile link here: https://github.com/tux-box/x56_numericProfile

Note for users of Thrustmaster T.A320 Copilot and TCA Q-Eng 1&2 joysticks: Don Guorri shared his configs on github url=https://github.com/efeferrari/ac7-t-a320-copilot-tca-q-eng-1-2-config
Additional POV hat information











I found additional instruction for the POV hat here: https://steamcommunity.com/app/502500/discussions/0/1638661595064594449/

Note that for the flight camera, these settings work only absolute, so by using the POV hat switch you look full up, full down, full left and full right. Also, the Flight_HatSwitch* settings are intentionally blank on mine, so in multiplayer I don't send message every time I press the hat switch.

The remaining text is copied from the link above. I have not personally tried this setup to make the POV hat act relative rather than absolute.

"For relative look around with HAT switch it is lite more complicated.
You will need 3th party softwares vJoy and FreePIE. Set up vJoy in Input.ini file
[Joystick-BEAD1234-0000-0000-0000-504944564944]
ProductName=vJoy Device
...
Flight_CameraPitch=Ry
Flight_CameraYaw=Rx
...

and
run this sript in FreePIE.

if starting:
system.setThreadTiming(TimingTypes.HighresSystemTimer)
system.threadExecutionInterval = 10
x = 0
y = 0
deltax = 200
deltay = 200
if joystick[1].pov[0] == 0:
y = y+deltay
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
elif joystick[1].pov[0]==4500:
x = x+deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
y = y+deltay
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
elif joystick[1].pov[0]==9000:
x = x+deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
elif joystick[1].pov[0]==13500:
x = x+deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
y = y-deltax
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
elif joystick[1].pov[0]==18000:
y = y-deltay
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
elif joystick[1].pov[0]==22500:
x = x-deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
y = y-deltay
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
elif joystick[1].pov[0]==27000:
x = x-deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
elif joystick[1].pov[0]==31500:
x = x-deltax
if abs(x) > vJoy[0].axisMax:
x = vJoy[0].axisMax * x / abs(x)
y = y+deltay
if abs(y) > vJoy[0].axisMax:
y = vJoy[0].axisMax * y / abs(y)
else:
x = x
y = y

vJoy[0].rx = x
vJoy[0].ry = y

center = joystick[1].getDown(9)

if center:
x = 0
y = 0

diagnostics.watch(vJoy[0].rx)
diagnostics.watch(vJoy[0].ry)
diagnostics.watch(joystick[1].pov[0])
diagnostics.watch(joystick[1].getDown(9))

The script would need to be tuned out. It's just the first attempt."
Specific profiles [WIP]








In this section I will post specific profiles i have found in comments, Steam forums, etc. My hope is that this will give more people a good starting point.

MS Sidewinder by deathspeed

[Joystick-001B045E-0000-0000-0000-504944564944]
ProductName=SideWinder Force Feedback 2 Joystick
Flight_Gun=Button1
Flight_Missile=Button2
Flight_Weapon=Button6
Flight_Target=Button3
Flight_Radar=Button5
Flight_Flare=Button4
Flight_View=Button7
Flight_AccelerationDeceleration=Button8
Flight_AutoPilot=
Flight_Pause=Button11
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=Y:R
Flight_Roll=X
Flight_Yaw=Rz
Flight_Throttle=Slider1
Flight_CameraPitch=POV_U1 + POV_D1:R
Flight_CameraYaw=POV_R1 + POV_L1:R
UI_B=Button2
UI_A=Button1
UI_X=Button3
UI_Y=Button4
UI_LB=POV_L1
UI_RB=POV_R1
UI_LT=POV_U1
UI_RT=POV_D1
UI_LeftStickPress=Button5
UI_RightStickPress=Button6
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button7


VKB Gladiator EVO R by Pan_de

ProductName=" VKBsim Gladiator EVO R "
Flight_Gun=Button1
Flight_Missile=Button3
Flight_Weapon=Button21
Flight_Target=Button9
Flight_Radar=Button6
Flight_Flare=Button19
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=Y:R
Flight_Roll=X
Flight_Yaw=
Flight_Throttle=
Flight_CameraPitch=Ry
Flight_CameraYaw=Rx
UI_B=Button3
UI_A=Button1
UI_X=Button4
UI_Y=Button5
UI_LB=Button14
UI_RB=Button12
UI_LT=Button9
UI_RT=Button7
UI_LeftStickPress=Button10
UI_RightStickPress=Button15
UI_DPadUp=Button16
UI_DPadDown=Button18
UI_DPadLeft=Button19
UI_DPadRight=Button17
UI_LeftStickUp=Ry:P
UI_LeftStickDown=Ry:N
UI_LeftStickLeft=Rx:P
UI_LeftStickRight=Rx:N
UI_RightStickUp=Y:P
UI_RightStickDown=Y:N
UI_RightStickLeft=X:P
UI_RightStickRight=X:N
UI_Menu=Button28


Thrustmaster A320 Airbus stick and throttle setup by Lunelli_98

[Joystick-0407044F-0000-0000-0000-504944564944]
ProductName=TCA Q-Eng 1&2
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=Button6
Flight_Flare=Button1
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=Button8
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=X
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button5

[Joystick-0405044F-0000-0000-0000-504944564944]
ProductName=T.A320 Pilot
Flight_Gun=Button1
Flight_Missile=Button3
Flight_Weapon=Button2
Flight_Target=Button4
Flight_Radar=
Flight_Flare=
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=Y:R ! Button10
Flight_Roll=X ! Button10
Flight_Yaw=Rz
Flight_Throttle=
Flight_CameraPitch=POV_U1 + POV_D1:R
Flight_CameraYaw=POV_R1 + POV_L1:R
UI_B=Button2
UI_A=Button1
UI_X=Button3
UI_Y=Button4
UI_LB=POV_L1
UI_RB=POV_R1
UI_LT=POV_U1
UI_RT=POV_D1
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=


PXN2119 by gordo1701e

[Joystick-333711FF-0000-0000-0000-504944564944]
ProductName=USB Joystick
Flight_Gun=Button2
Flight_Missile=Button1
Flight_Weapon=Button3
Flight_Target=
Flight_Radar=Button16
Flight_Flare=Button13
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=Button7
Flight_Pause=Button8
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=Y:R
Flight_Roll=X
Flight_Yaw=Rz
Flight_Throttle=Z
Flight_CameraPitch=POV_U1 + POV_D1:R
Flight_CameraYaw=POV_R1 + POV_L1:R
UI_B=Button2
UI_A=Button1
UI_X=Button3
UI_Y=Button4

UI_LeftStickPress=Button5
UI_RightStickPress=Button6
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P

UI_Menu=Button7


X56 Rhino by CapStar362

[Joystick-22210738-0000-0000-0000-504944564944]
ProductName=Saitek Pro Flight X-56 Rhino Stick
Flight_Gun=Button1
Flight_Missile=Button3
Flight_Weapon=Button5
Flight_Target=Button6
Flight_Radar=
Flight_Flare=
Flight_View=Button4
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=Y:R
Flight_Roll=X
Flight_Yaw=Rz
Flight_Throttle=
Flight_CameraPitch=Ry
Flight_CameraYaw=Rx
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button4

[Joystick-A2210738-0000-0000-0000-504944564944]
ProductName=Saitek Pro Flight X-56 Rhino Throttle
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=Button5
Flight_Flare=Button1
Flight_View=
Flight_AccelerationDeceleration=Button4
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=X
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=

Troubleshooting










Sometimes the dumb thing still does not work. Here are a few things to try:

Be sure to follow each step in order, including the Preparation section. It may look like a lot but it really is not too bad, and once it is set up the way you like it you won't have to mess with it again.

The most common issue is that Steam Input has not been disabled. That is a REQUIRED step for most people. Instructions are in the first paragraph under "Preparation."

If you were using x360CE or other third party solutions before, they have been known to interfere with this method and cause odd binding issues. As the guide notes, be sure to remove any x360CE (or other controller emulator) files in the AC7 working directory. (see https://steamcommunity.com/app/502500/discussions/0/2569816251290811021/ )

Try the stick in another USB port.

Unplug any other controllers. Windows 10 sometimes has issues with multiple controllers and gaming keyboards.

Try setting the stick/HOTAS as the Preferred Windows controller. https://www.top-password.com/blog/open-game-controllers-settings-in-windows-10/
Closing Words










Using the joystick to navigate menus can be clunky, and the game UI still shows Xbox controller icons for functions. For example, the UI may say "Press A for this action", but you may not remember which button you assigned for A. To get around this, I usually connect my Xbox One controller at the same time. I have never had any issues, using the joystick to actually play and using the controller for menus, replay camera controls, etc.

If you are interested in using TrackIR, check out this guide as well:
https://steamcommunity.com/sharedfiles/filedetails/?id=2195724313&tscn=1608395090

I hope you find this guide helpful Feel free to share any suggestions, tips, tricks, and your configurations in the comments.
Credits













Thank you to LOGIRich, author of this Reddit post on which this guide is based: https://www.reddit.com/r/acecombat/comments/bty5xn/logitechsaitek_sticks_and_hotas_now_supported_on/

Also thank you to steam users Det.Bullock, lubomart/ bingbean, -bZ-CapStar362, and MR.120
for additional help and insights.

And finally, thank you to all who have found this guide useful and shared it with others, given Steam awards, and commented. I try to read every comment, and improve the guide as i learn more from you.
190 Comments
Redich Feb 1 @ 5:34pm 
I have created config for PXN 2113 Pro
https://pastebin.com/pDiq6Vvp
Franklin Jan 28 @ 11:42pm 
Disregard. I didn't see VooDooPrawns post.
Franklin Jan 28 @ 11:35pm 
Looking for mapping for Turtle Beach VelocityOne Flightdeck Stick and Throttle.
deathspeed  [author] Jan 15 @ 2:32pm 
@VoodooPrawn, thank you for sharing!

@R3LapZ - everything I have read says yaw is binary - off or on, even when assigned to an axis rather than buttons. But the yaw rate is so slow i have never had an issue with it in this game, and I often use yaw to fine-tune distant shots. I've also never noticed a massive deadzone on Y-axis, but maybe i am just used to it :) Maybe try configuration software for your specific controller? If you find something that works please share here! Good luck!
R3LapZ Jan 14 @ 7:56pm 
Anyone figure out how to kill the massive deadzoneon y axis? Also is yaw absoslute?
VoodooPrawn Dec 24, 2024 @ 5:04am 
I have just configured my Turtlebeach VelocityOne Fightdeck with the following (might not be perfect but got me through the first mission)

https://pastebin.com/EfnK3333
deathspeed  [author] Nov 12, 2024 @ 7:11am 
Спасибо!!
「ATR0P0S」 Nov 11, 2024 @ 2:13pm 
Единственный нормальный гайд по тому, как нормально использовать любые джойстики в игре, а не только несколько "фирменных"
Но самый главный плюс в том, что конкретно этот способ позволяет использовать сразу НЕСКОЛЬКО устройств и прописывать свои настройки на каждый девайс. Условно РУС под правую и РУД под левую
Спасибо!
deathspeed  [author] Oct 23, 2024 @ 2:03pm 
Good luck! Keep in mind a lot of this is prep work. :) If you know where to find APPDATA and it is not hidden you can skip to Configuration. Also, from what I have seen from other HOTAS setups people have posted in the comments, below each device will have its own section on the input.ini file.
Thanks for checking this out!
Lyraeus Oct 23, 2024 @ 1:25pm 
I need to figure this out for a HOSAS setup. I am using 2 Gladiator NXT EVO's one with Omni stick. This is... a lot