Autopilot overhaul.
This commit is contained in:
parent
a67c4113e8
commit
76a08b6467
6 changed files with 605 additions and 163 deletions
|
@ -39,6 +39,8 @@
|
|||
<!-- Avionics outputs tied directly to bus, note that this is a -->
|
||||
<!-- simple way to provide electrical outputs if you don't need -->
|
||||
<!-- to put a circuit breaker or switch in front of the output. -->
|
||||
<!-- *AND* if you don't care about back propogating the output -->
|
||||
<!-- current. -->
|
||||
<prop>/systems/electrical/outputs/avionics-fan</prop>
|
||||
<prop>/systems/electrical/outputs/gps-mfd</prop>
|
||||
<prop>/systems/electrical/outputs/hsi</prop>
|
||||
|
|
|
@ -176,6 +176,111 @@ adjEngControl = func {
|
|||
}
|
||||
}
|
||||
|
||||
##
|
||||
# arg[0] is the throttle increment
|
||||
# arg[1] is the auto-throttle target speed increment
|
||||
incThrottle = func {
|
||||
auto = props.globals.getNode("/autopilot/locks/speed", 1);
|
||||
if ( !auto.getValue() or auto.getValue() == 0 ) {
|
||||
engs = props.globals.getNode("/controls/engines").getChildren("engine");
|
||||
foreach(e; engs) {
|
||||
node = e.getNode("throttle", 1);
|
||||
node.setValue(node.getValue() + arg[0]);
|
||||
if ( node.getValue() < -1.0 ) {
|
||||
node.setValue( -1.0 );
|
||||
}
|
||||
if ( node.getValue() > 1.0 ) {
|
||||
node.setValue( 1.0 );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
node = props.globals.getNode("/autopilot/settings/target-speed-kt", 1);
|
||||
if ( node.getValue() == nil ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
node.setValue(node.getValue() + arg[1]);
|
||||
if ( node.getValue() < 0.0 ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
# arg[0] is the aileron increment
|
||||
# arg[1] is the autopilot target heading increment
|
||||
incAileron = func {
|
||||
auto = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
if ( !auto.getValue() or auto.getValue() == 0 ) {
|
||||
aileron = props.globals.getNode("/controls/flight/aileron");
|
||||
if ( aileron.getValue() == nil ) {
|
||||
aileron.setValue( 0.0 );
|
||||
}
|
||||
aileron.setValue(aileron.getValue() + arg[0]);
|
||||
if ( aileron.getValue() < -1.0 ) {
|
||||
aileron.setValue( -1.0 );
|
||||
}
|
||||
if ( aileron.getValue() > 1.0 ) {
|
||||
aileron.setValue( 1.0 );
|
||||
}
|
||||
}
|
||||
if ( auto.getValue() == "dg-heading-hold" ) {
|
||||
node = props.globals.getNode("/autopilot/settings/heading-bug-deg", 1);
|
||||
if ( node.getValue() == nil ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
node.setValue(node.getValue() + arg[1]);
|
||||
if ( node.getValue() < 0.0 ) {
|
||||
node.setValue( node.getValue() + 360.0 );
|
||||
}
|
||||
if ( node.getValue() > 360.0 ) {
|
||||
node.setValue( node.getValue() - 360.0 );
|
||||
}
|
||||
}
|
||||
if ( auto.getValue() == "true-heading-hold" ) {
|
||||
node = props.globals.getNode("/autopilot/settings/true-heading-deg", 1);
|
||||
if ( node.getValue() == nil ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
node.setValue(node.getValue() + arg[1]);
|
||||
if ( node.getValue() < 0.0 ) {
|
||||
node.setValue( node.getValue() + 360.0 );
|
||||
}
|
||||
if ( node.getValue() > 360.0 ) {
|
||||
node.setValue( node.getValue() - 360.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
# arg[0] is the elevator increment
|
||||
# arg[1] is the autopilot target alitude increment
|
||||
incElevator = func {
|
||||
auto = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
if ( !auto.getValue() or auto.getValue() == 0 ) {
|
||||
elevator = props.globals.getNode("/controls/flight/elevator");
|
||||
if ( elevator.getValue() == nil ) {
|
||||
elevator.setValue( 0.0 );
|
||||
}
|
||||
elevator.setValue(elevator.getValue() + arg[0]);
|
||||
if ( elevator.getValue() < -1.0 ) {
|
||||
elevator.setValue( -1.0 );
|
||||
}
|
||||
if ( elevator.getValue() > 1.0 ) {
|
||||
elevator.setValue( 1.0 );
|
||||
}
|
||||
}
|
||||
if ( auto.getValue() == "altitude-hold" ) {
|
||||
node = props.globals.getNode("/autopilot/settings/target-altitude-ft", 1);
|
||||
if ( node.getValue() == nil ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
node.setValue(node.getValue() + arg[1]);
|
||||
if ( node.getValue() < 0.0 ) {
|
||||
node.setValue( 0.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
# Joystick axis handlers. Don't call from other contexts.
|
||||
#
|
||||
|
|
|
@ -4,167 +4,409 @@
|
|||
|
||||
<name>autopilot</name>
|
||||
<width>500</width>
|
||||
<height>330</height>
|
||||
<height>550</height>
|
||||
<modal>false</modal>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>300</y>
|
||||
<y>520</y>
|
||||
<label>AutoPilot Settings</label>
|
||||
</text>
|
||||
|
||||
<!-- Headings -->
|
||||
<!-- Heading Modes -->
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>260</y>
|
||||
<label>Function</label>
|
||||
<y>480</y>
|
||||
<label>Heading Modes:</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<!--
|
||||
<input>
|
||||
<name>heading-modes</name>
|
||||
<x>150</x>
|
||||
<y>260</y>
|
||||
<label>Activated</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<x>250</x>
|
||||
<y>260</y>
|
||||
<label>Setting</label>
|
||||
</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>230</y>
|
||||
<label>Heading</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>230</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<y>480</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/locks/heading</property>
|
||||
</checkbox>
|
||||
</input>
|
||||
-->
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>480</y>
|
||||
<legend>Deactivate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
node.setValue( "" );
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>450</y>
|
||||
<label>Wing Leveler:</label>
|
||||
</text>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>450</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
node.setValue( "wing-leveler" );
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>420</y>
|
||||
<label>Heading Bug:</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<x>250</x>
|
||||
<y>230</y>
|
||||
<name>heading-bug</name>
|
||||
<x>150</x>
|
||||
<y>420</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/heading-bug-deg</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>420</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
node.setValue( "dg-heading-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>390</y>
|
||||
<label>True Heading:</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<name>true-heading</name>
|
||||
<x>150</x>
|
||||
<y>390</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/true-heading-deg</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>390</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
node.setValue( "true-heading-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>360</y>
|
||||
<label>NAV1 CDI Hold:</label>
|
||||
</text>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>360</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
node.setValue( "nav1-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<!-- Pitch/Alt Modes -->
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>320</y>
|
||||
<label>Pitch/Altitude Modes:</label>
|
||||
</text>
|
||||
|
||||
<!--
|
||||
<input>
|
||||
<name>pitch-modes</name>
|
||||
<x>150</x>
|
||||
<y>320</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/locks/heading</property>
|
||||
</input>
|
||||
-->
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>320</y>
|
||||
<legend>Deactivate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "" );
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>290</y>
|
||||
<label>Pitch Hold:</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<name>pitch-deg</name>
|
||||
<x>150</x>
|
||||
<y>290</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/target-pitch-deg</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>290</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "pitch-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>260</y>
|
||||
<label>AOA Hold:</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<name>aoa-deg</name>
|
||||
<x>150</x>
|
||||
<y>260</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/target-aoa-deg</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>260</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "aoa-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>230</y>
|
||||
<label>Altitude Hold:</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<name>altitude</name>
|
||||
<x>150</x>
|
||||
<y>230</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/target-altitude-ft</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>230</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "altitude-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>200</y>
|
||||
<label>Altitude</label>
|
||||
<label>AGL Hold:</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>200</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/altitude</property>
|
||||
</checkbox>
|
||||
|
||||
<input>
|
||||
<x>250</x>
|
||||
<name>agl</name>
|
||||
<x>150</x>
|
||||
<y>200</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/altitude-ft</property>
|
||||
<property>/autopilot/settings/target-agl-ft</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>200</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "agl-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>170</y>
|
||||
<label>VOR 1</label>
|
||||
<label>NAV1 GS Hold:</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>170</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/nav</property>
|
||||
</checkbox>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
node.setValue( "gs1-hold" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<!-- Velocity Modes -->
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>140</y>
|
||||
<label>Glideslope</label>
|
||||
<y>130</y>
|
||||
<label>Velocity Hold:</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>140</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/glide-slope</property>
|
||||
</checkbox>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>110</y>
|
||||
<label>Autothrottle</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>110</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/auto-throttle</property>
|
||||
</checkbox>
|
||||
|
||||
<!--
|
||||
<input>
|
||||
<x>250</x>
|
||||
<y>110</y>
|
||||
<name>velocity-modes</name>
|
||||
<x>150</x>
|
||||
<y>130</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/speed-kt</property>
|
||||
<property>/autopilot/locks/heading</property>
|
||||
</input>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>80</y>
|
||||
<label>Terrain Follow</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>80</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/terrain</property>
|
||||
</checkbox>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<label>Vertical Speed</label>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<x>150</x>
|
||||
<y>50</y>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
<property>/autopilot/locks/vert-speed</property>
|
||||
</checkbox>
|
||||
-->
|
||||
|
||||
<input>
|
||||
<x>250</x>
|
||||
<y>50</y>
|
||||
<name>autospeed-w-pitch</name>
|
||||
<x>150</x>
|
||||
<y>130</y>
|
||||
<width>150</width>
|
||||
<height>25</height>
|
||||
<property>/autopilot/settings/vertical-speed-fpm</property>
|
||||
<property>/autopilot/settings/target-speed-kt</property>
|
||||
</input>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>130</y>
|
||||
<legend>Deactivate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/speed", 1);
|
||||
node.setValue( "" );
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>100</y>
|
||||
<label>Speed w/ Throttle:</label>
|
||||
</text>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>100</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/speed", 1);
|
||||
node.setValue( "speed-with-throttle" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>70</y>
|
||||
<label>Speed w/ Pitch:</label>
|
||||
</text>
|
||||
|
||||
<button>
|
||||
<x>310</x>
|
||||
<y>70</y>
|
||||
<legend>Activate</legend>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/speed", 1);
|
||||
node.setValue( "speed-with-pitch" );
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<!-- Button Group -->
|
||||
|
||||
|
|
|
@ -233,6 +233,14 @@
|
|||
</binding>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<label>Reconfig Autopilot</label>
|
||||
<binding>
|
||||
<command>reinit</command>
|
||||
<subsystem>xml-autopilot</subsystem>
|
||||
</binding>
|
||||
</item>
|
||||
|
||||
</menu>
|
||||
|
||||
<menu>
|
||||
|
|
190
keyboard.xml
190
keyboard.xml
|
@ -19,8 +19,15 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-A</name>
|
||||
<desc>Toggle autopilot altitude lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/altitude</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
if ( node.getValue() == "altitude-hold" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "altitude-hold" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -46,8 +53,15 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-G</name>
|
||||
<desc>Toggle autopilot glide slope lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/glide-slope</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
if ( node.getValue() == "gs1-hold" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "gs1-hold" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -55,17 +69,24 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-H</name>
|
||||
<desc>Toggle autopilot heading lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/heading</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
if ( node.getValue() == "dg-heading-hold" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "dg-heading-hold" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
<key n="13">
|
||||
<name>Enter</name>
|
||||
<desc>Move rudder right or increase autopilot heading.</desc>
|
||||
<desc>Move rudder right.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/rudder</property>
|
||||
<property>/controls/flight/rudder</property>
|
||||
<step type="double">0.05</step>
|
||||
</binding>
|
||||
</key>
|
||||
|
@ -74,8 +95,33 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-N</name>
|
||||
<desc>Toggle autopilot nav1 lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/nav[0]</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
if ( node.getValue() == "nav1-hold" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "nav1-hold" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
<key n="16">
|
||||
<name>Ctrl-P</name>
|
||||
<desc>Toggle pitch hold.</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
if ( node.getValue() == "pitch-hold" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "pitch-hold" );
|
||||
pitch = props.globals.getNode("/autopilot/settings/target-pitch-deg", 1);
|
||||
pitch.setValue( getprop("/orientation/pitch-deg") );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -83,8 +129,15 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-S</name>
|
||||
<desc>Toggle auto-throttle lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/auto-throttle</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/speed", 1);
|
||||
if ( node.getValue() == "speed-with-throttle" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "speed-with-throttle" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -92,8 +145,17 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-T</name>
|
||||
<desc>Toggle autopilot terrain lock.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/terrain</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/altitude", 1);
|
||||
if ( node.getValue() == "terrain-follow" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "terrain-follow" );
|
||||
agl = props.globals.getNode("/autopilot/settings/target-agl-ft", 1);
|
||||
agl.setValue( getprop("/position/altitude-agl-ft") );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -126,8 +188,15 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Ctrl-W</name>
|
||||
<desc>Toggle autopilot wing leveler.</desc>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/autopilot/locks/wing-leveler</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
node = props.globals.getNode("/autopilot/locks/heading", 1);
|
||||
if ( node.getValue() == "wing-leveler" ) {
|
||||
node.setValue( "" );
|
||||
} else {
|
||||
node.setValue( "wing-leveler" );
|
||||
}
|
||||
</script>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
|
@ -242,10 +311,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="48">
|
||||
<name>0</name>
|
||||
<desc>Move rudder left or increase autopilot heading.</desc>
|
||||
<desc>Move rudder left.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/rudder</property>
|
||||
<property>/controls/flight/rudder</property>
|
||||
<step type="double">-0.05</step>
|
||||
</binding>
|
||||
</key>
|
||||
|
@ -272,9 +341,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>2</name>
|
||||
<desc>Increase elevator or autopilot altitude.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/elevator</property>
|
||||
<step type="double">-0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(-0.05, 100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look back.</desc>
|
||||
|
@ -306,11 +376,12 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="52">
|
||||
<name>4</name>
|
||||
<desc>Move aileron left.</desc>
|
||||
<desc>Move aileron left (or adjust AP heading.)</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/controls/flight/aileron</property>
|
||||
<step type="double">-0.05</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(-0.05, -1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look left.</desc>
|
||||
|
@ -333,11 +404,12 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="54">
|
||||
<name>6</name>
|
||||
<desc>Move aileron right.</desc>
|
||||
<desc>Move aileron right (or adjust AP heading.)</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/controls/flight/aileron</property>
|
||||
<step type="double">0.05</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(0.05, 1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look right.</desc>
|
||||
|
@ -371,9 +443,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>8</name>
|
||||
<desc>Decrease elevator or autopilot altitude.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/elevator</property>
|
||||
<step type="double">0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(0.05, -100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look forward.</desc>
|
||||
|
@ -888,10 +961,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="269">
|
||||
<name>Enter</name>
|
||||
<desc>Move rudder right or increase autopilot heading.</desc>
|
||||
<desc>Move rudder right.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/rudder</property>
|
||||
<property>/controls/flight/rudder</property>
|
||||
<step type="double">0.05</step>
|
||||
</binding>
|
||||
</key>
|
||||
|
@ -907,11 +980,12 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="356">
|
||||
<name>Left</name>
|
||||
<desc>Move aileron left.</desc>
|
||||
<desc>Move aileron left (or adjust AP heading.)</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/controls/flight/aileron</property>
|
||||
<step type="double">-0.05</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(-0.05, -1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look left.</desc>
|
||||
|
@ -927,9 +1001,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Up</name>
|
||||
<desc>Increase elevator or autopilot altitude.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/elevator</property>
|
||||
<step type="double">0.05</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(0.05, -100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look forward.</desc>
|
||||
|
@ -943,10 +1018,12 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="358">
|
||||
<name>Right</name>
|
||||
<desc>Move aileron right.</desc>
|
||||
<desc>Move aileron right (or adjust AP heading.)</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/controls/flight/aileron</property>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(0.05, 1.0)
|
||||
</script>
|
||||
<step type="double">0.05</step>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
|
@ -963,9 +1040,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>Down</name>
|
||||
<desc>Decrease elevator or autopilot altitude.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/elevator</property>
|
||||
<step type="double">-0.05</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(-0.05, 100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look backwards.</desc>
|
||||
|
@ -981,9 +1059,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>PageUp</name>
|
||||
<desc>Increase throttle or autopilot autothrottle.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/throttle</property>
|
||||
<step type="double">0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incThrottle(0.01, 1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look front right.</desc>
|
||||
|
@ -999,9 +1078,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
<name>PageDown</name>
|
||||
<desc>Decrease throttle or autopilot autothrottle.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/throttle</property>
|
||||
<step type="double">-0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incThrottle(-0.01, -1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Look back right.</desc>
|
||||
|
@ -1051,10 +1131,10 @@ calculated by adding 256 to the GLUT key value in glut.h.
|
|||
|
||||
<key n="364">
|
||||
<name>Insert</name>
|
||||
<desc>Move rudder left or decrease autopilot heading.</desc>
|
||||
<desc>Move rudder left.</desc>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/control-overrides/rudder</property>
|
||||
<property>/controls/flight/rudder</property>
|
||||
<step type="double">-0.05</step>
|
||||
</binding>
|
||||
</key>
|
||||
|
|
|
@ -62,6 +62,11 @@ Started September 2000 by David Megginson, david@megginson.com
|
|||
<path>Huds/Default/default.xml</path>
|
||||
<visibility type="bool">false</visibility>
|
||||
</hud>
|
||||
<systems>
|
||||
<autopilot>
|
||||
<path>Aircraft/Generic/generic-autopilot.xml</path>
|
||||
</autopilot>
|
||||
</systems>
|
||||
<instrument-options>
|
||||
<nav n="0">
|
||||
<has-gs-needle type="bool">true</has-gs-needle>
|
||||
|
|
Loading…
Add table
Reference in a new issue