81e0e06a31
- Improved multi-mode axis control with the new per-engine axis handlers. - Prepared all bindings for per-OS number selection
297 lines
7 KiB
XML
297 lines
7 KiB
XML
<?xml version="1.0"?>
|
|
<!-- Saitek Pro Flight Quadrant
|
|
|
|
Copyright (C) 2008 Ronald Jensen (wino(at)jentronics.com)
|
|
Copyright (C) 2009 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
|
|
This file is released under the GPL license version 2.
|
|
-->
|
|
<PropertyList>
|
|
<name>Saitek Saitek Pro Flight Quadrant</name>
|
|
<name>Saitek Pro Flight Quadrant</name>
|
|
<name>Saitek Pro Flight Throttle Quadrant</name>
|
|
|
|
<nasal>
|
|
<script>
|
|
<![CDATA[
|
|
var self = cmdarg().getParent();
|
|
var data = self.getNode("data");
|
|
var engine_select_mode = 0;
|
|
# TM0: All selected; TM1: #1-#3; TM2: #3-#6
|
|
var engine_axis_mode = 0;
|
|
# Valid only in TM1 and TM2.
|
|
# EA0: throttle
|
|
# EA1: mixure
|
|
# EA2: propeller
|
|
var pressed = [0,0,0,0,0,0];
|
|
var engine = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
|
|
# Do per-aircraft modifications
|
|
if (contains({"Aircraft/Short_Empire/Models/Short_Empire-model.xml" : 0,
|
|
"Aircraft/Lockheed1049/Models/Lockheed1049_twa.xml" : 0},
|
|
getprop("/sim/model/path"))) {
|
|
# Map port outer to axis 0, starboard outer to axis 2 and
|
|
# the inner engines to axis 1.
|
|
engine = [0, [1, 2], 3];
|
|
}
|
|
if (contains({"Aircraft/DO-X/Models/dox.xml" : 0},
|
|
getprop("/sim/model/path"))) {
|
|
engine = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]];
|
|
}
|
|
if (contains({"Aircraft/Nordstern/Models/Nordstern.xml" : 0},
|
|
getprop("/sim/model/path"))) {
|
|
engine = [0, 1, [2, 3]];
|
|
}
|
|
|
|
var kbdctrl = props.globals.getNode("/devices/status/keyboard/ctrl", 1);
|
|
var kbdalt = props.globals.getNode("/devices/status/keyboard/alt", 1);
|
|
|
|
var axis_handler = func(axis) {
|
|
if (engine_select_mode == 0) {
|
|
if (axis == 0) {
|
|
controls.throttleAxis();
|
|
} elsif (axis == 1) {
|
|
controls.propellerAxis();
|
|
} elsif (axis == 2) {
|
|
controls.mixtureAxis();
|
|
}
|
|
} else {
|
|
controls.perEngineSelectedAxisHandler(engine_axis_mode)
|
|
(engine[axis + 3*(engine_select_mode - 1)]);
|
|
}
|
|
}
|
|
|
|
var trace = func(str) {
|
|
# Uncomment the line below to trace button presses.
|
|
#print("Pro-Flight-Quadrant.xml: " ~ str);
|
|
}
|
|
]]>
|
|
</script>
|
|
</nasal>
|
|
|
|
<!-- Levers left to right. -->
|
|
<axis>
|
|
<name>Left lever</name>
|
|
<number>
|
|
<unix>0</unix>
|
|
<mac>0</mac>
|
|
<windows>0</windows>
|
|
</number>
|
|
<desc>TM0: throttle, TM1: throttle/propeller 1, TM2: throttle/propeller 4</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>axis_handler(0)</script>
|
|
</binding>
|
|
</axis>
|
|
<axis>
|
|
<name>Middle lever</name>
|
|
<number>
|
|
<unix>1</unix>
|
|
<mac>1</mac>
|
|
<windows>1</windows>
|
|
</number>
|
|
<desc>TM0: propeller, TM1: throttle/propeller 2, TM2: throttle/propeller 5</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>axis_handler(1)</script>
|
|
</binding>
|
|
</axis>
|
|
<axis>
|
|
<name>Right lever</name>
|
|
<number>
|
|
<unix>2</unix>
|
|
<mac>2</mac>
|
|
<windows>2</windows>
|
|
</number>
|
|
<desc>TM0: mixture, TM1: throttle/propeller 3, TM2: throttle/propeller 6</desc>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>axis_handler(2)</script>
|
|
</binding>
|
|
</axis>
|
|
|
|
<!-- 2-way rocker switches. Left to right. -->
|
|
<button>
|
|
<name>Left button up</name>
|
|
<number>
|
|
<unix>0</unix>
|
|
<mac>0</mac>
|
|
<windows>0</windows>
|
|
</number>
|
|
<desc>Flaps up</desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.flapsDown(-1)</script>
|
|
</binding>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.flapsDown(0)</script>
|
|
</binding>
|
|
</mod-up>
|
|
<mod-shift>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
trace("Button 0 + shift pressed!");
|
|
gui.popupTip("Saitek Quadrant: Throttle Mode 1");
|
|
engine_select_mode = 1;
|
|
</script>
|
|
</binding>
|
|
</mod-shift>
|
|
</button>
|
|
<button n="1">
|
|
<name>Left button down</name>
|
|
<number>
|
|
<unix>1</unix>
|
|
<mac>1</mac>
|
|
<windows>1</windows>
|
|
</number>
|
|
<desc>Flaps down</desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.flapsDown(1)</script>
|
|
</binding>
|
|
<mod-shift>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
trace("Button 1 + shift pressed!");
|
|
gui.popupTip("Saitek Quadrant: Throttle Mode 0");
|
|
engine_select_mode = 0;
|
|
</script>
|
|
</binding>
|
|
</mod-shift>
|
|
<mod-up>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.flapsDown(0)</script>
|
|
</binding>
|
|
</mod-up>
|
|
</button>
|
|
|
|
<button>
|
|
<name>Middle button up</name>
|
|
<number>
|
|
<unix>2</unix>
|
|
<mac>2</mac>
|
|
<windows>2</windows>
|
|
</number>
|
|
<desc>Elevator trim up</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.elevatorTrim(-0.75)</script>
|
|
</binding>
|
|
<mod-shift>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
trace("Button 2 + shift pressed!");
|
|
if (engine_select_mode) gui.popupTip("Saitek Quadrant: Throttle control");
|
|
engine_axis_mode = 0;
|
|
</script>
|
|
</binding>
|
|
</mod-shift>
|
|
</button>
|
|
<button>
|
|
<name>Middle button down</name>
|
|
<number>
|
|
<unix>3</unix>
|
|
<mac>3</mac>
|
|
<windows>3</windows>
|
|
</number>
|
|
<desc>Elevator trim down</desc>
|
|
<repeatable>true</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.elevatorTrim(0.75)</script>
|
|
</binding>
|
|
<mod-shift>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
trace("Button 3 + shift pressed!");
|
|
if (engine_select_mode)
|
|
gui.popupTip("Saitek Quadrant: Propeller control");
|
|
engine_axis_mode = 2;
|
|
</script>
|
|
</binding>
|
|
</mod-shift>
|
|
</button>
|
|
|
|
<button>
|
|
<name>Right button up</name>
|
|
<number>
|
|
<unix>4</unix>
|
|
<mac>4</mac>
|
|
<windows>4</windows>
|
|
</number>
|
|
<desc>Gear up</desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.gearDown(-1)</script>
|
|
</binding>
|
|
</button>
|
|
<button>
|
|
<name>Right button down</name>
|
|
<number>
|
|
<unix>5</unix>
|
|
<mac>5</mac>
|
|
<windows>5</windows>
|
|
</number>
|
|
<desc>Gear down</desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>controls.gearDown(1)</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<!-- Axis reverse area switches. -->
|
|
<button>
|
|
<name>Left lever reverse</name>
|
|
<number>
|
|
<unix>6</unix>
|
|
<mac>6</mac>
|
|
<windows>6</windows>
|
|
</number>
|
|
<desc></desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script></script>
|
|
</binding>
|
|
</button>
|
|
<button>
|
|
<name>Middle lever reverse</name>
|
|
<number>
|
|
<unix>7</unix>
|
|
<mac>7</mac>
|
|
<windows>7</windows>
|
|
</number>
|
|
<desc></desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script></script>
|
|
</binding>
|
|
</button>
|
|
<button>
|
|
<name>Right lever reverse</name>
|
|
<number>
|
|
<unix>8</unix>
|
|
<mac>8</mac>
|
|
<windows>8</windows>
|
|
</number>
|
|
<desc></desc>
|
|
<repeatable>false</repeatable>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script></script>
|
|
</binding>
|
|
</button>
|
|
|
|
</PropertyList>
|