476 lines
20 KiB
XML
476 lines
20 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!--
|
|
Bindings for THRUSTMASTER HOTAS Cougar stick/throttle combination.
|
|
|
|
Matthias Boerner <matthias-boerner@t-online.de>
|
|
-->
|
|
|
|
<PropertyList>
|
|
<name type="string">Thrustmaster Thrustmaster HOTAS Cougar</name>
|
|
<name type="string">Thrustmaster HOTAS Cougar</name>
|
|
|
|
<!-- begin definition of modifier button, on HOTAS: Pinky Switch -->
|
|
<button n="2">
|
|
<desc>modifier button 0</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
name = "/input/joysticks/js/button[2]";
|
|
mod = getprop(name);
|
|
if (mod == nil) {
|
|
setprop(name, 1);
|
|
} elsif (mod == 0) {
|
|
setprop(name, mod + 1);
|
|
}
|
|
</script>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
name = "/input/joysticks/js[0]/button[2]";
|
|
mod = getprop(name);
|
|
if (mod == nil) {
|
|
setprop(name, 0);
|
|
} elsif (mod == 1) {
|
|
setprop(name, mod - 1);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<!-- end definition of modifier button -->
|
|
|
|
<!-- begin main axis configuration -->
|
|
<axis>
|
|
<desc>Aileron</desc>
|
|
<number>
|
|
<unix>0</unix>
|
|
<windows>0</windows>
|
|
</number>
|
|
<binding>
|
|
<command>property-scale</command>
|
|
<property>/controls/flight/aileron</property>
|
|
</binding>
|
|
</axis>
|
|
|
|
<axis>
|
|
<desc>Elevator</desc>
|
|
<number>
|
|
<unix>1</unix>
|
|
<windows>1</windows>
|
|
</number>
|
|
<binding>
|
|
<command>property-scale</command>
|
|
<property>/controls/flight/elevator</property>
|
|
<factor type="double">-1.0</factor>
|
|
</binding>
|
|
</axis>
|
|
|
|
<axis>
|
|
<desc>Throttle</desc>
|
|
<number>
|
|
<unix>2</unix>
|
|
<windows>2</windows>
|
|
</number>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.throttleAxis()</script>
|
|
</binding>
|
|
</axis>
|
|
<!-- end main axis configuration -->
|
|
|
|
<!-- begin trim configuration -->
|
|
<!-- button on HOTAS: Trim and Pinky Switch -->
|
|
<axis n="6">
|
|
<desc>elevation trim/reset elevation trim</desc>
|
|
<low>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.elevatorTrim(1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/elevator-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</low>
|
|
<high>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.elevatorTrim(-1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/elevator-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</high>
|
|
</axis>
|
|
|
|
<axis n="5">
|
|
<desc>aileron trim/reset aileron trim</desc>
|
|
<low>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.aileronTrim(-1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/aileron-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</low>
|
|
<high>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.aileronTrim(1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/aileron-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</high>
|
|
</axis>
|
|
|
|
<!-- button on HOTAS: Countermeasures Management and Pinky Switch -->
|
|
<button n="17">
|
|
<desc>rudder trim left/reset rudder trim</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.rudderTrim(-1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/rudder-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="15">
|
|
<desc>rudder trim right/reset rudder trim</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.rudderTrim(1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/rudder-trim", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<!-- end trim configuration -->
|
|
|
|
<!-- begin view configuration -->
|
|
<!-- button on HOTAS: Display Management and Pinky Switch -->
|
|
<button n="10">
|
|
<desc>view up/view reset</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.panViewPitch(1)
|
|
} elsif (mod == 1) {
|
|
view.resetView()
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="12">
|
|
<desc>view down/view reset</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.panViewPitch(-1)
|
|
} elsif (mod == 1) {
|
|
view.resetView()
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="11">
|
|
<desc>view right/view reset</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.panViewDir(-1)
|
|
} elsif (mod == 1) {
|
|
view.resetView()
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="13">
|
|
<desc>view left/view reset</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.panViewDir(1)
|
|
} elsif (mod == 1) {
|
|
view.resetView()
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
<!-- end view configuration -->
|
|
|
|
<!-- begin switch view configuration -->
|
|
<!-- button on HOTAS: Target Management right and Pinky Switch -->
|
|
<button n="7">
|
|
<desc>switch view - forward/reset view to cockpit view</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.stepView(1)
|
|
} elsif (mod == 1) {
|
|
setprop("/sim/current-view/view-number", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<!-- button on HOTAS: Target Management left and Pinky Switch -->
|
|
<button n="9">
|
|
<desc>switch view - backward/reset view to cockpit view</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.stepView(-1)
|
|
} elsif (mod == 1) {
|
|
setprop("/sim/current-view/view-number", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<!-- end switch view configuration -->
|
|
|
|
<!-- begin zoom configuration (FOV)-->
|
|
<!-- button on HOTAS: Communications Switch and Pinky Switch -->
|
|
<button n="6">
|
|
<desc>zoom in/reset zoom</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.decrease(1);
|
|
} elsif (mod == 1) {
|
|
setprop("/sim/current-view/field-of-view", 55);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="8">
|
|
<desc>zoom out/reset zoom</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
view.increase(1);
|
|
} elsif (mod == 1) {
|
|
setprop("/sim/current-view/field-of-view", 55);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
<!-- end zoom configuration (FOV)-->
|
|
|
|
<!-- begin speedbrake configuration -->
|
|
<!-- button on HOTAS: SpeedBrake -->
|
|
<button n="27">
|
|
<desc>speedbrake</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>setprop("/controls/flight/speedbrake", 1)</script>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>setprop("/controls/flight/speedbrake", 0)</script>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<!-- end speedbrake configuration -->
|
|
|
|
<!-- begin gear configuration -->
|
|
<!-- button on HOTAS: Manual Range/Uncage Switch and Pinky Switch -->
|
|
<button n="23">
|
|
<desc>gear up or down/tail wheel lock</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
gearToggle = getprop("/controls/gear/gear-down");
|
|
if (gearToggle == 1) {
|
|
controls.gearDown(-1);
|
|
gui.popupTip("Gear up!");
|
|
} else {
|
|
controls.gearDown(1);
|
|
gui.popupTip("Gear down!");
|
|
}
|
|
} elsif (mod == 1) {
|
|
tailwheelLock = getprop("/controls/gear/tailwheel-lock");
|
|
if (tailwheelLock == 1) {
|
|
setprop("/controls/gear/tailwheel-lock", 0);
|
|
gui.popupTip("Tailwheel unlocked!");
|
|
} else {
|
|
setprop("/controls/gear/tailwheel-lock", 1);
|
|
gui.popupTip("Tailwheel locked!");
|
|
}
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<!-- begin nose wheel configuration -->
|
|
<button n="4">
|
|
<desc>nose wheel on/off</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
nosewheel = getprop("/controls/gear/nose-wheel-steering");
|
|
if (nosewheel == 1) {
|
|
setprop("/controls/gear/nose-wheel-steering", 0);
|
|
gui.popupTip("Nose wheel steering on!");
|
|
} else {
|
|
setprop("/controls/gear/nose-wheel-steering", 1);
|
|
gui.popupTip("Nose wheel steering off!");
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
<!-- end nose wheel steering configuration -->
|
|
<!-- end gear configuration -->
|
|
|
|
<!-- begin flaps configuration -->
|
|
<!-- botton on HOTAS: Countermeasures Management up/down and Pinky Switch -->
|
|
<button n="14">
|
|
<desc>flaps up</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.flapsDown(-1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/flaps", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button n="16">
|
|
<desc>flaps down</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
mod = getprop("/input/joysticks/js[0]/button[2]");
|
|
if (mod == nil or mod == 0) {
|
|
controls.flapsDown(1)
|
|
} elsif (mod == 1) {
|
|
setprop("/controls/flight/flaps", 0);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
<!-- end flaps configuration -->
|
|
|
|
<!-- begin thrust reverse configuration -->
|
|
<!-- button on HOTAS: Dogfight left-->
|
|
<button n="24">
|
|
<desc>thrust reverse</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
props.setAll("/controls/engines/engine", "reverser", 1);
|
|
gui.popupTip("Thrust reverse on!");
|
|
</script>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
props.setAll("/controls/engines/engine", "reverser", 0);
|
|
gui.popupTip("Thrust reverse off!");
|
|
</script>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<!-- end thrust reverse configuration -->
|
|
|
|
<!-- begin tailhook configuration -->
|
|
<!-- button on HOTAS: Dogfight right-->
|
|
<button n="25">
|
|
<desc>thrust reverse</desc>
|
|
<repeatable type="bool">false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
setprop("/controls/gear/tailhook", 1);
|
|
gui.popupTip("Tailhook down!");
|
|
</script>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
setprop("/controls/gear/tailhook", 0);
|
|
gui.popupTip("Tailhook up!");
|
|
</script>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
<!-- end tailhook configuration -->
|
|
|
|
</PropertyList>
|