It’s been twenty years since the last proper MechWarrior game and MechWarrior 5: Mercenaries is out. Here’s how to get your X-55 to work with it quickly and easily.

If, like me, you want to play MechWarrior 5: Mercenaries and own a Saitek X-55 Rhino HOTAS, you need to remap the game’s generic stick profile to use it. And why wouldn’t you want to use it? A real sim must be played with a HOTAS, after all. If you’re even considering playing with mouse and keyboard – or gods help us a controller – what are you doing?

Unfortunately, remapping the default profile isn’t excatly intuitive, even with the documentation provided. Luckily, Ron Hockman comes to our rescue, as he has provided his remapping file.

START_BIND
NAME: Rhino X-55 Stick
VID: 0x0738
PID: 0x2215
BUTTON: InButton=GenericUSBController_Button1, OutButtons=Joystick_Button1
BUTTON: InButton=GenericUSBController_Button2, OutButtons=Joystick_Button2
BUTTON: InButton=GenericUSBController_Button3, OutButtons=Joystick_Button3
BUTTON: InButton=GenericUSBController_Button4, OutButtons=Joystick_Button4
BUTTON: InButton=GenericUSBController_Button5, OutButtons=Joystick_Button5
BUTTON: InButton=GenericUSBController_Button6, OutButtons=Joystick_Button6
BUTTON: InButton=GenericUSBController_Button7, OutButtons=Joystick_Button7
BUTTON: InButton=GenericUSBController_Button8, OutButtons=Joystick_Button8
BUTTON: InButton=GenericUSBController_Button9, OutButtons=Joystick_Button9
BUTTON: InButton=GenericUSBController_Button10, OutButtons=Joystick_Button10
BUTTON: InButton=GenericUSBController_Button11, OutButtons=Joystick_Button11
BUTTON: InButton=GenericUSBController_Button12, OutButtons=Joystick_Button12
BUTTON: InButton=GenericUSBController_Button13, OutButtons=Joystick_Button13
BUTTON: InButton=GenericUSBController_Button14, OutButtons=Joystick_Button14
BUTTON: InButton=GenericUSBController_Hat1, OutButtons=Joystick_Hat_1
BUTTON: InButton=GenericUSBController_Hat2, OutButtons=Joystick_Hat_2
BUTTON: InButton=GenericUSBController_Hat3, OutButtons=Joystick_Hat_3
BUTTON: InButton=GenericUSBController_Hat4, OutButtons=Joystick_Hat_4
BUTTON: InButton=GenericUSBController_Hat5, OutButtons=Joystick_Hat_5
BUTTON: InButton=GenericUSBController_Hat6, OutButtons=Joystick_Hat_6
BUTTON: InButton=GenericUSBController_Hat7, OutButtons=Joystick_Hat_7
BUTTON: InButton=GenericUSBController_Hat8, OutButtons=Joystick_Hat_8
AXIS: InAxis=HOTAS_YAxis, OutAxis=Joystick_Axis1, Invert=FALSE, Offset=-0.5, DeadZoneMin=-0.05, DeadZoneMax=0.05, MapToDeadZone=TRUE
AXIS: InAxis=HOTAS_XAxis, OutAxis=Joystick_Axis2, Invert=FALSE, Offset=-0.5, DeadZoneMin=-0.05, DeadZoneMax=0.05, MapToDeadZone=TRUE
AXIS: InAxis=HOTAS_RZAxis, OutAxis=Joystick_Axis3, Invert=FALSE, Offset=-0.5, DeadZoneMin=-0.05, DeadZoneMax=0.05, MapToDeadZone=TRUE


START_BIND
NAME: Rhino X-55 Throttle
VID: 0x0738
PID: 0xA215
BUTTON: InButton=GenericUSBController_Button1, OutButtons=Throttle_Button1
BUTTON: InButton=GenericUSBController_Button2, OutButtons=Throttle_Button2
BUTTON: InButton=GenericUSBController_Button3, OutButtons=Throttle_Button3
BUTTON: InButton=GenericUSBController_Button4, OutButtons=Throttle_Button4
BUTTON: InButton=GenericUSBController_Button5, OutButtons=Throttle_Button5
BUTTON: InButton=GenericUSBController_Button6, OutButtons=Throttle_Button6
BUTTON: InButton=GenericUSBController_Button7, OutButtons=Throttle_Button7
BUTTON: InButton=GenericUSBController_Button8, OutButtons=Throttle_Button8
BUTTON: InButton=GenericUSBController_Button9, OutButtons=Throttle_Button9
BUTTON: InButton=GenericUSBController_Button10, OutButtons=Throttle_Button10
BUTTON: InButton=GenericUSBController_Button11, OutButtons=Throttle_Button11
BUTTON: InButton=GenericUSBController_Button12, OutButtons=Throttle_Button12
BUTTON: InButton=GenericUSBController_Button13, OutButtons=Throttle_Button13
BUTTON: InButton=GenericUSBController_Button14, OutButtons=Throttle_Button14
BUTTON: InButton=GenericUSBController_Button15, OutButtons=Throttle_Button15
BUTTON: InButton=GenericUSBController_Button16, OutButtons=Throttle_Button16
BUTTON: InButton=GenericUSBController_Button17, OutButtons=Throttle_Button17
BUTTON: InButton=GenericUSBController_Button18, OutButtons=Throttle_Button18
BUTTON: InButton=GenericUSBController_Button19, OutButtons=Throttle_Button19
BUTTON: InButton=GenericUSBController_Button20, OutButtons=Throttle_DPad1_Up
BUTTON: InButton=GenericUSBController_Button21, OutButtons=Throttle_DPad1_Right
BUTTON: InButton=GenericUSBController_Button22, OutButtons=Throttle_DPad1_Down
BUTTON: InButton=GenericUSBController_Button23, OutButtons=Throttle_DPad1_Left
BUTTON: InButton=GenericUSBController_Button24, OutButtons=Throttle_DPad2_Up
BUTTON: InButton=GenericUSBController_Button25, OutButtons=Throttle_DPad2_Right
BUTTON: InButton=GenericUSBController_Button26, OutButtons=Throttle_DPad2_Down
BUTTON: InButton=GenericUSBController_Button27, OutButtons=Throttle_DPad2_Left
BUTTON: InButton=GenericUSBController_Button28, OutButtons=Throttle_Hat1
BUTTON: InButton=GenericUSBController_Button29, OutButtons=Throttle_Hat2
BUTTON: InButton=GenericUSBController_Button30, OutButtons=Throttle_Hat3
BUTTON: InButton=GenericUSBController_Button31, OutButtons=Throttle_Hat4
AXIS: InAxis=HOTAS_XAxis, OutAxis=Throttle_Axis1, Invert=TRUE, Offset=0.5, DeadZoneMin=-0.08, DeadZoneMax=0.08, MapToDeadZone=TRUE
AXIS: InAxis=HOTAS_YAxis, OutAxis=Throttle_Axis2, Invert=TRUE, Offset=0.5, DeadZoneMin=-0.08, DeadZoneMax=0.08, MapToDeadZone=TRUE
AXIS: InAxis=HOTAS_ZAxis, OutAxis=Throttle_Axis3, Invert=FALSE, Offset=0.5, DeadZoneMin=-0.00, DeadZoneMax=0.00, MapToDeadZone=FALSE
AXIS: InAxis=HOTAS_RXAxis, OutAxis=Throttle_Axis4, Invert=FALSE, Offset=0.5, DeadZoneMin=-0.00, DeadZoneMax=0.00, MapToDeadZone=FALSE
AXIS: InAxis=HOTAS_RYAxis, OutAxis=Throttle_Axis5, Invert=FALSE, Offset=0.5, DeadZoneMin=-0.00, DeadZoneMax=0.00, MapToDeadZone=FALSE

This needs to replace whatever you currently have in the file AppData\Local\MW5Mercs\Saved\SavedHOTAS\HOTASMappings.Remap in your Windows user’s directory.

After that, restart MechWarrior 5 and you can map the buttons of your X-55 in game. Works really well, actually. So thanks, Ron! That was a lifesaver.


Comment thread for this post in the Fediverse