RO2 Controller Support
While controllers are not officially supported (future support is a possibility), players are able to enable the feature by manually adding controls to their ROInput.ini file.
Setting Up Controls
Location
Players will need to navigate to:
C:\Users\UserName\Documents\my games\RedOrchestra2\ROGame\Config
Or wherever their Document (MyDocuments) folder is located on their computer. Once there, they must open up their ROinput.ini file. Next they will need to locate the [Engine.PlayerInput] subsection of the config document. By default it is at the top of the document and looks like this:
[Engine.PlayerInput] MoveForwardSpeed=1200 MoveStrafeSpeed=1200 LookRightScale=300 LookUpScale=-250 MouseSensitivity=18.0 DoubleClickTime=0.250000 Bindings=(Name="Fire",Command="Button bFire | StartFire | OnRelease StopFire") Bindings=(Name="AltFire",Command="StartAltFire | OnRelease StopAltFire") Bindings=(Name="MoveForward",Command="Axis aBaseY Speed=1.0") Bindings=(Name="MoveBackward",Command="Axis aBaseY Speed=-1.0") Bindings=(Name="StrafeLeft",Command="Axis aStrafe Speed=-1.0") Bindings=(Name="StrafeRight",Command="Axis aStrafe Speed=+1.0") Bindings=(Name="TurnLeft",Command="Axis aBaseX Speed=-200.0 AbsoluteAxis=100") Bindings=(Name="TurnRight",Command="Axis aBaseX Speed=+200.0 AbsoluteAxis=100") Bindings=(Name="Jump",Command="Jump | Axis aUp Speed=+1.0 AbsoluteAxis=100 | onrelease cancelmatinee") Bindings=(Name="Duck",Command="Button bDuck | Axis aUp Speed=-1.0 AbsoluteAxis=100") Bindings=(Name="Look",Command="Button bLook") Bindings=(Name="LookToggle",Command="Toggle bLook") Bindings=(Name="LookUp",Command="Axis aLookUp Speed=+25.0 AbsoluteAxis=100") Bindings=(Name="LookDown",Command="Axis aLookUp Speed=-25.0 AbsoluteAxis=100") Bindings=(Name="CenterView",Command="Button bSnapLevel") Bindings=(Name="Walking",Command="Button bRun") Bindings=(Name="Strafe",Command="Button bStrafe") Bindings=(Name="ViewTeam",Command="ViewClass Pawn") Bindings=(Name="TurnToNearest",Command="Button bTurnToNearest") Bindings=(Name="Turn180",Command="Button bTurn180") Bindings=(Name="W",Command="MoveForward") Bindings=(Name="S",Command="MoveBackward") Bindings=(Name="A",Command="StrafeLeft") Bindings=(Name="D",Command="StrafeRight") Bindings=(Name="MouseX",Command="Count bXAxis | Axis aMouseX") Bindings=(Name="MouseY",Command="Count bYAxis | Axis aMouseY") Bindings=(Name="LeftMouseButton",Command="Fire") Bindings=(Name="Escape",Command="CloseEditorViewport | onrelease ShowMenu") Bindings=(Name="Up",Command="MoveForward") Bindings=(Name="Down",Command="MoveBackward") Bindings=(Name="Left",Command="StrafeLeft") Bindings=(Name="Right",Command="StrafeRight") Bindings=(Name="---",Command="TurnLeft") Bindings=(Name="---",Command="TurnRight") Bindings=(Name="F9",Command="shot") Bindings=(Name="Delete",Command="Camera Default") Bindings=(Name="End",Command="Camera FirstPerson") Bindings=(Name="PageDown",Command="Camera ThirdPerson") Bindings=(Name="PageUp",Command="Camera Fixed") Bindings=(Name="Home",Command="Camera FixedTracking") Bindings=(Name="Insert",Command="Camera FreeCam") Bindings=(Name="Interact",Command="Use") Bindings=(Name="LeftControl",Command="Interact") Bindings=(Name="UseKey",Command="UseBasic") Bindings=(Name="---",Command="UseKey") Bindings=(Name="Bandage",Command="UseBandage") Bindings=(Name="---",Command="Bandage") Bindings=(Name="Cover_Toggle",Command="ToggleCover") Bindings=(Name="---",Command="Cover_Toggle") Bindings=(Name="Cover_Hold",Command="StartCover | OnRelease StopCover") Bindings=(Name="---",Command="Cover_Hold") Bindings=(Name="Pause",Command="Pause") Bindings=(Name="Prev_Weapon",Command="PrevWeapon") Bindings=(Name="Next_Weapon",Command="NextWeapon") Bindings=(Name="Quick_Save",Command="QuickSave") Bindings=(Name="Quick_Load",Command="QuickLoad") Bindings=(Name="Ironsights",Command="Ironsights | onrelease Toss",Control=False,Shift=False,Alt=False) Bindings=(Name="Ironsights_Hold",Command="StartIronsights | OnRelease StopIronsights | OnRelease Toss",Control=False,Shift=False,Alt=False) Bindings=(Name="---",Command="Ironsights_Hold") Bindings=(Name="RightMouseButton",Command="Ironsights") Bindings=(Name="Sprint",Command="button bSprint") Bindings=(Name="LeftShift",Command="Sprint") Bindings=(Name="Crouch_Toggle",Command="ToggleCrouch | Button bDuckHeld") Bindings=(Name="C",Command="Crouch_Toggle") Bindings=(Name="Crouch_Hold",Command="Crouch | OnRelease UnCrouch | Button bDuckHeld") Bindings=(Name="---",Command="Crouch_Hold") Bindings=(Name="Prone_Toggle",Command="ToggleProne") Bindings=(Name="LeftAlt",Command="Prone_Toggle") Bindings=(Name="Prone_Hold",Command="Prone | OnRelease UnProne") Bindings=(Name="---",Command="Prone_Hold") Bindings=(Name="Team_Select",Command="ShowTeamSelect") Bindings=(Name="Comma",Command="Team_Select") Bindings=(Name="Role_Select",Command="ShowRoleSelect") Bindings=(Name="Period",Command="Role_Select") Bindings=(Name="Toggl_Scoreboard",Command="ToggleScoreboard") Bindings=(Name="F1",Command="Toggl_Scoreboard") Bindings=(Name="Show_Scoreboard",Command="ShowScoreboard | OnRelease HideScoreboard"); Bindings=(Name="Tab",Command="Show_Scoreboard") Bindings=(Name="Communication",Command="ShowCommunicationWidget | OnRelease HideCommunicationWidget") Bindings=(Name="V",Command="Communication") Bindings=(Name="Orders_Widget",Command="Show3DWidget | OnRelease Hide3DWidget") Bindings=(Name="F",Command="Orders_Widget") Bindings=(Name="Orders",Command="ShowOrdersWidget | OnRelease HideOrdersWidget") Bindings=(Name="B",Command="Orders") Bindings=(Name="Next_Unit",Command="SelectNextUnit") Bindings=(Name="F2",Command="Next_Unit") Bindings=(Name="Confirm",Command="ConfirmOrder | ConfirmKickVote | ConfirmRoleVote") Bindings=(Name="F4",Command="Confirm") Bindings=(Name="Deny",Command="DenyOrder | DenyKickVote | DenyRoleVote") Bindings=(Name="F5",Command="Deny") Bindings=(Name="Chat",Command="OnRelease StartSay") Bindings=(Name="Y",Command="Chat") Bindings=(Name="Team_Chat",Command="OnRelease StartTeamSay") Bindings=(Name="U",Command="Team_Chat") Bindings=(Name="Squad_Chat",Command="OnRelease StartSquadSay") Bindings=(Name="I",Command="Squad_Chat") Bindings=(Name="Drop_Weapon",Command="ThrowWeapon") Bindings=(Name="BackSpace",Command="Drop_Weapon") Bindings=(Name="Toggl_Map",Command="ShowOverheadMap") Bindings=(Name="M",Command="Toggl_Map") Bindings=(Name="Force_Respawn",Command="ForceReinforcement") Bindings=(Name="N",Command="Force_Respawn") Bindings=(Name="Lean_Right",Command="LeanRight | OnRelease LeanRightReleased") Bindings=(Name="E",Command="Lean_Right") Bindings=(Name="Lean_Left",Command="LeanLeft | OnRelease LeanLeftReleased") Bindings=(Name="Q",Command="Lean_Left") Bindings=(Name="Scuttle",Command="ScuttleTank") Bindings=(Name="K",Command="Scuttle") Bindings=(Name="Throw_Grenade",Command="Button bGrenade | StartQuickGrenade | OnRelease StopQuickGrenade") Bindings=(Name="G",Command="Throw_Grenade") Bindings=(Name="F12",Command="ShowMyScore") Bindings=(Name="MiddleMouseButton",Command="AltFire",Control=False,Shift=False,Alt=False) Bindings=(Name="Give_Reload_Command",Command="Button bReload | Reload | OnRelease ReloadUnPress") Bindings=(Name="Give_Follow_Command",Command="Button bFollow | CommandFollow | OnRelease CommandFollowUnPress") Bindings=(Name="X",Command="Give_Follow_Command",Control=False,Shift=False,Alt=False) Bindings=(Name="R",Command="Give_Reload_Command",Control=False,Shift=False,Alt=False) Bindings=(Name="Public_Voice_Chat",Command="StartVoiceChat | OnRelease StopVoiceChat") Bindings=(Name="O",Command="Public_Voice_Chat") Bindings=(Name="Team_Voice_Chat",Command="StartTeamVoiceChat | OnRelease StopVoiceChat") Bindings=(Name="CapsLock",Command="Team_Voice_Chat") Bindings=(Name="Squad_Voice_Chat",Command="StartSquadVoiceChat | OnRelease StopVoiceChat") Bindings=(Name="P",Command="Squad_Voice_Chat") Bindings=(Name="SpaceBar",Command="Jump") Bindings=(Name="Toggl_Fire_Mode",Command="SwitchFireMode") Bindings=(Name="six",Command="Toggl_Fire_Mode") Bindings=(Name="MouseScrollUp",Command="Next_Weapon") Bindings=(Name="MouseScrollDown",Command="Prev_Weapon") Bindings=(Name="Tactical_Display",Command="ShowTacticalDisplay | onrelease HideTacticalDisplay") Bindings=(Name="T",Command="Tactical_Display") Bindings=(Name="Spot_Enemy",Command="Button bEnemySpotted | EnemySpotted | OnRelease EnemySpottedUnPress") Bindings=(Name="Z",Command="Spot_Enemy") Bindings=(Name="Switch_Weapon_1",Command="switchweapon 1") Bindings=(Name="Switch_Weapon_2",Command="switchweapon 2") Bindings=(Name="Switch_Weapon_3",Command="switchweapon 3") Bindings=(Name="Switch_Weapon_4",Command="switchweapon 4") Bindings=(Name="Switch_Weapon_5",Command="switchweapon 5") Bindings=(Name="one",Command="Switch_Weapon_1") Bindings=(Name="two",Command="Switch_Weapon_2") Bindings=(Name="three",Command="Switch_Weapon_3") Bindings=(Name="four",Command="Switch_Weapon_4") Bindings=(Name="five",Command="Switch_Weapon_5") Bindings=(Name="Reopen_Spawn_Select",Command="ReOpenSpawnSelect") Bindings=(Name="Semicolon",Command="Reopen_Spawn_Select") Bindings=(Name="ExclusiveFocus",Command="Button bExclusiveFocus") Bindings=(Name="H",Command="ExclusiveFocus") bEnableMouseSmoothing=false bInvertMouse=false
Additions To Make
Once they have located the end of this section, they will need to add the following additional lines:
Bindings=(Name="XboxTypeS_Y",Command="Interact") Bindings=(Name="XboxTypeS_A",Command="Jump") Bindings=(Name="XboxTypeS_X",Command="Give_Reload_Command") Bindings=(Name="XboxTypeS_B",Command="Crouch_Toggle") Bindings=(Name="XboxTypeS_LeftTrigger",Command="Ironsights_Hold") Bindings=(Name="XboxTypeS_LeftShoulder",Command="Tactical_Display") Bindings=(Name="XboxTypeS_RightTrigger",Command="Fire") Bindings=(Name="XboxTypeS_RightShoulder",Command="Throw_Grenade") Bindings=(Name="XboxTypeS_DPad_Left",Command="Prev_Weapon") Bindings=(Name="XboxTypeS_DPad_Right",Command="Next_Weapon") Bindings=(Name="XboxTypeS_DPad_Down",Command="Prone_Toggle") Bindings=(Name="XboxTypeS_DPad_Up",Command="Toggl_Fire_Mode") Bindings=(Name="XboxTypeS_LeftX",Command="Axis aStrafe Speed=1.0 DeadZone=0.4") Bindings=(Name="XboxTypeS_LeftY",Command="Axis aBaseY Speed=1.0 DeadZone=0.4") Bindings=(Name="XboxTypeS_RightX",Command="Axis aTurn Speed=1.0 DeadZone=0.1") Bindings=(Name="XboxTypeS_RightY",Command="Axis aLookup Speed=1.0 DeadZone=0.1") Bindings=(Name="XboxTypeS_LeftThumbStick",Command="Sprint") Bindings=(Name="XboxTypeS_RightThumbStick",Command="AltFire") Bindings=(Name="XboxTypeS_Back",Command="ToggleScoreboard") Bindings=(Name="XboxTypeS_Start",Command="OnRelease ShowMenu")
Known Issues
- Currently there is no feedback in game when you configure controls through the in game controls option. However the settings will hold except for changes to the joystick inputs.
- Some inputs are "clunky" as the key inputs required that would feel more natural on a controller are not in the game (this may change in the future)
Disable Controller Rumble
By default the Unreal Engine has rumble support enabled by default with no option to turn it off. Players with a controller plugged in that do not want this on need to add the following line to the "Set Launch Options" box within Steam for Red Orchestra 2.
-NOFORCEFEEDBACK
To set this, players need to right click on RO 2 within steam, and go to properties. On the first tab (named General), there is a selectable button with the name "Set Launch Options". Clicking on this button will provide players with a text box to add launch options.