Skip to content

Instantly share code, notes, and snippets.

@boarnoah
Created April 2, 2022 16:41
Show Gist options
  • Save boarnoah/a88471cfa4b65a3f7c7dea54eeaa8d04 to your computer and use it in GitHub Desktop.
Save boarnoah/a88471cfa4b65a3f7c7dea54eeaa8d04 to your computer and use it in GitHub Desktop.
These are bindings for Saitek X55 Hotas for https://github.com/solidshadow1126/VTOLVRPhysicalInput. Unfortunately the button and axis bindings as reported (by joy.cpl, or sites such as https://gamepad-tester.com/) differ from what DirectX via SharpDX (library used by this mod) understands. These bindings were created by hooking up the mod to a d…
<!--
These are bindings for Saitek X55 Hotas for https://github.com/solidshadow1126/VTOLVRPhysicalInput.
Unfortunately the button and axis bindings as reported (by joy.cpl, or sites such as https://gamepad-tester.com/)
differ from what DirectX via SharpDX (library used by this mod) understands.
These bindings were created by hooking up the mod to a debugger and trial and error.
Please consult the "map" to actual HOTAS keys (as reported by tools such as the config app for the HOTAS) below:
Stick:
Pitch and Roll are bound as expected
Trigger / TriggerAxis: Trigger
Pickle Button: A
Weapon selector switch: (H2) Castle Hat up
Sensor slew depress: (H2) Castle Hat Down
Sensor slew axis: POV
Throttle:
Throttle: Right Throttle
Tilt Up/Down: (H3) Top Hat Forward/Back
Sensor Control: (H4) Bottom Hat Up/Down
Brake: (H) Right front button
Countermeasures: (E) Red button
-->
<?xml version="1.0" encoding="utf-8" ?>
<Mappings>
<StickMappings>
<StickName>Saitek Pro Flight X-55 Rhino Stick</StickName>
<!--Roll-->
<AxisToVectorComponent>
<InputAxis>0</InputAxis>
<Invert>true</Invert>
<OutputDevice>Stick</OutputDevice>
<OutputSet>StickXyz</OutputSet>
<OutputComponent>Roll</OutputComponent>
<MappingRange>Full</MappingRange>
</AxisToVectorComponent>
<!--Pitch-->
<AxisToVectorComponent>
<InputAxis>Y</InputAxis>
<Invert>true</Invert>
<OutputDevice>Stick</OutputDevice>
<OutputSet>StickXyz</OutputSet>
<OutputComponent>Pitch</OutputComponent>
<MappingRange>Full</MappingRange>
</AxisToVectorComponent>
<!--Yaw-->
<!--This can be bound natively in game under settings -> bindings as a rudder axis -->
<!--
<AxisToVectorComponent>
<InputAxis>6</InputAxis>
<Invert>false</Invert>
<OutputDevice>Stick</OutputDevice>
<OutputSet>StickXyz</OutputSet>
<OutputComponent>Yaw</OutputComponent>
<MappingRange>Full</MappingRange>
</AxisToVectorComponent>
-->
<!--Trigger-->
<ButtonToButton>
<InputButton>1</InputButton>
<OutputDevice>Stick</OutputDevice>
<OutputButton>Trigger</OutputButton>
</ButtonToButton>
<!--Pickle Button for bombs-->
<ButtonToButton>
<InputButton>2</InputButton>
<OutputDevice>Stick</OutputDevice>
<OutputButton>Trigger</OutputButton>
</ButtonToButton>
<!--TriggerAxis for F45 Canon-->
<ButtonToVectorComponent>
<InputButton>1</InputButton>
<OutputDevice>Stick</OutputDevice>
<OutputSet>TriggerAxis</OutputSet>
<OutputComponent>TriggerAxis</OutputComponent>
<PressValue>1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<!--Weapon selector switch/Menu button-->
<ButtonToButton>
<InputButton>11</InputButton>
<OutputDevice>Stick</OutputDevice>
<OutputButton>Menu</OutputButton>
</ButtonToButton>
<!-- Sensor slew depress (for selecting targets on radar) -->
<ButtonToButton>
<InputButton>13</InputButton>
<OutputDevice>Stick</OutputDevice>
<OutputButton>Thumbstick</OutputButton>
</ButtonToButton>
<!-- Sensor slew axis (for moving icon on radar/TGP etc) -->
<PovToTouchpad>
<InputPov>1</InputPov>
<OutputDevice>Stick</OutputDevice>
<OutputSet>Touchpad</OutputSet>
</PovToTouchpad>
</StickMappings>
<StickMappings>
<StickName>Saitek Pro Flight X-55 Rhino Throttle</StickName>
<!--Throttle Power-->
<AxisToVectorComponent>
<InputAxis>4</InputAxis>
<Invert>true</Invert>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>Throttle</OutputSet>
<OutputComponent>Throttle</OutputComponent>
<MappingRange>High</MappingRange>
</AxisToVectorComponent>
<!-- (Tilt)-->
<ButtonToVectorComponent>
<InputButton>25</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>ThrottleTouchpad</OutputSet>
<OutputComponent>Y</OutputComponent>
<PressValue>1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<ButtonToVectorComponent>
<InputButton>27</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>ThrottleTouchpad</OutputSet>
<OutputComponent>Y</OutputComponent>
<PressValue>-1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<!--Sensor control switch-->
<ButtonToVectorComponent>
<InputButton>21</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>ThrottleTouchpad</OutputSet>
<OutputComponent>X</OutputComponent>
<PressValue>1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<ButtonToVectorComponent>
<InputButton>22</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>ThrottleTouchpad</OutputSet>
<OutputComponent>X</OutputComponent>
<PressValue>-1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<!--Brake-->
<ButtonToVectorComponent>
<InputButton>4</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputSet>Trigger</OutputSet>
<OutputComponent>Trigger</OutputComponent>
<PressValue>1</PressValue>
<ReleaseValue>0</ReleaseValue>
</ButtonToVectorComponent>
<!--Countermeasures-->
<ButtonToButton>
<InputButton>1</InputButton>
<OutputDevice>Throttle</OutputDevice>
<OutputButton>Menu</OutputButton>
</ButtonToButton>
</StickMappings>
</Mappings>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment