224 lines
6.7 KiB
XML
224 lines
6.7 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!--
|
|
|
|
Copyright (c) 2020 Jonathan Schellhase
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
-->
|
|
|
|
<!--
|
|
|
|
Bindings for Thrustmaster TWCS Throttle
|
|
|
|
!Only tested on Ubuntu 18.04 with FlightGear 2910.2.0 (next) from March 7, 2020!
|
|
|
|
Assignments:
|
|
|
|
Axis 0: View heading (self-centering)
|
|
Axis 1: View pitch
|
|
Axis 2: Throttle
|
|
Axis 5: Rudder
|
|
Axis 7: Propeller pitch
|
|
Axis 8: Zoom
|
|
|
|
Button 0: Pause
|
|
Button 1: Left wheel brake
|
|
Button 2: Right wheel brake
|
|
Button 3: Elevator trim up
|
|
Button 4: Elevator trim down
|
|
Button 6: Aileron trim right
|
|
Button 8: Aileron trim left
|
|
Button 10: Rudder trim right
|
|
Button 12: Rudder trim left
|
|
|
|
-->
|
|
|
|
<PropertyList>
|
|
<name type="string">Thrustmaster TWCS Throttle</name>
|
|
<axis>
|
|
<desc type="string">View Horizontal Axis</desc>
|
|
<binding>
|
|
<command type="string">property-scale</command>
|
|
<property type="string">/sim/current-view/goal-heading-offset-deg</property>
|
|
<factor type="double">-180</factor>
|
|
<offset type="double">0</offset>
|
|
</binding>
|
|
</axis>
|
|
<axis n="1">
|
|
<desc type="string">View (vertical)</desc>
|
|
<low>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/current-view/goal-pitch-offset-deg") + 1);</script>
|
|
</binding>
|
|
<repeatable type="bool">true</repeatable>
|
|
</low>
|
|
<high>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/current-view/goal-pitch-offset-deg") - 1);</script>
|
|
</binding>
|
|
<repeatable type="bool">true</repeatable>
|
|
</high>
|
|
</axis>
|
|
<axis n="2">
|
|
<desc type="string">Throttle (all)</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.throttleAxis();</script>
|
|
</binding>
|
|
</axis>
|
|
<axis n="5">
|
|
<desc type="string">Rudder</desc>
|
|
<binding>
|
|
<command type="string">property-scale</command>
|
|
<property type="string">/controls/flight/rudder</property>
|
|
<factor type="double">1</factor>
|
|
<offset type="double">0</offset>
|
|
</binding>
|
|
</axis>
|
|
<axis n="7">
|
|
<desc type="string">Propeller All Engines</desc>
|
|
<binding>
|
|
<command type="string">property-scale</command>
|
|
<property type="string">/controls/engines/propeller-pitch-all</property>
|
|
<factor type="double">-1</factor>
|
|
<offset type="double">0</offset>
|
|
</binding>
|
|
</axis>
|
|
<axis n="8">
|
|
<desc type="string">Zoom</desc>
|
|
<low>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">view.increase(0.75);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</low>
|
|
<high>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">view.decrease(0.75);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</high>
|
|
</axis>
|
|
<button>
|
|
<desc type="string">Custom</desc>
|
|
<binding>
|
|
<command type="string">pause</command>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
<mod-up>
|
|
<binding type="string">
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<button n="1">
|
|
<desc type="string">Custom</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.applyBrakes(1, -1)</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.applyBrakes(0, -1)</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<button n="2">
|
|
<desc type="string">Custom</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.applyBrakes(1, 1)</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.applyBrakes(0, 1)</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<button n="3">
|
|
<desc type="string">Elevator trim up</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.elevatorTrim(-1);</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
<mod-up>
|
|
<binding type="string">
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<button n="4">
|
|
<desc type="string">Elevator trim down</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.elevatorTrim(1);</script>
|
|
<module type="string">__js1</module>
|
|
<offset type="double">1</offset>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
<mod-up>
|
|
<binding type="string">
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<button n="6">
|
|
<desc type="string">Aileron Trim Right</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.aileronTrim(1);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</button>
|
|
<button n="8">
|
|
<desc type="string">Aileron Trim Left</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.aileronTrim(-1);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</button>
|
|
<button n="10">
|
|
<desc type="string">Rudder Trim Right</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.rudderTrim(1);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</button>
|
|
<button n="12">
|
|
<desc type="string">Rudder Trim Left</desc>
|
|
<binding>
|
|
<command type="string">nasal</command>
|
|
<script type="string">controls.rudderTrim(-1);</script>
|
|
</binding>
|
|
<repeatable type="double">1</repeatable>
|
|
</button>
|
|
</PropertyList>
|