Board index FlightGear Support Flying

How do I change aircraft specific Keybindings?

Controlling your aircraft, using the autopilot etc.

How do I change aircraft specific Keybindings?

Postby Thundr_pry_brd » Sat Nov 25, 2017 8:38 pm

I am running legacy version of Flightgear (v1.9.0.1b) because I wanted to find a decent game to install on an everyday laptop.

I successfully managed to change the keybindings in my Keyboard.xml file, they are as follows:
Code: Select all
<?xml version="1.0"?>
<!--
Key binding definitions.

Regular keycodes go up to 255; special keys start at 256, and can be
calculated by adding 256 to the GLUT key value in glut.h.

All Nasal code in this file lives in a common Nasal namespace __kbd.
All <nasal> blocks on the top level are executed in the order from
top down before the key bindings are parsed.
-->

<PropertyList>
 <nasal>
  <script>
      # /devices/status/keyboard/event/modifier/ and /devices/status/keyboard/
      # don't only have one BOOL child per modifier, but also contain the
      # modifier bitmap themselves, using these bit values:
      var mod = { shift: 1, ctrl: 2, alt: 4, meta: 8, super: 16, hyper: 32 };

      var modifiers = props.globals.getNode("/devices/status/keyboard");
      var shift = props.globals.getNode("/devices/status/keyboard/shift");
      var ctrl = props.globals.getNode("/devices/status/keyboard/ctrl");
      var alt = props.globals.getNode("/devices/status/keyboard/alt");

      var space_release = func nil;
      var space = func(state, mod) {
          if (!state) {
              space_release();
              return space_release = func nil;
          }
          if (mod == 0 or mod == 1) {
              controls.ptt(mod + 1);
              space_release = func controls.ptt(0);
          }
      }

      ## uncomment this line to get keycode reports printed to the terminal window
      #setlistener("devices/status/keyboard/event", func(n) debug.dump(n.getValues()));
  </script>
 </nasal>

 <key n="1">
  <name>Ctrl-A</name>
  <desc>Toggle autopilot altitude lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var node = props.globals.getNode("/autopilot/locks/altitude", 1);
     if ( node.getValue() == "altitude-hold" ) {
       node.setValue( "" );
     } else {
       node.setValue( "altitude-hold" );
     }
   </script>
  </binding>
 </key>

 <key n="2">
  <name>Ctrl-B</name>
  <desc>Toggle speedbrake</desc>
  <binding>
   <command>property-toggle</command>
   <property>/controls/flight/speedbrake</property>
  </binding>
 </key>

 <key n="3">
  <name>Ctrl-C</name>
  <desc>Toggle clickable panel hotspots</desc>
  <binding>
   <command>property-toggle</command>
   <property>/sim/panel-hotspots</property>
  </binding>
 </key>

 <key n="7">
  <name>Ctrl-G</name>
  <desc>Toggle autopilot glide slope lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var node = props.globals.getNode("/autopilot/locks/altitude", 1);
     if ( node.getValue() == "gs1-hold" ) {
       node.setValue( "" );
     } else {
       node.setValue( "gs1-hold" );
     }
   </script>
  </binding>
 </key>

 <key n="8">
  <name>Ctrl-H</name>
  <desc>Toggle autopilot heading lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var 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="101">
  <name>e</name>
  <desc>Move rudder right</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/rudder</property>
   <step type="double">0.05</step>
  </binding>
 </key>

 <key n="14">
  <name>Ctrl-N</name>
  <desc>Toggle autopilot nav1 lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var 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>
     var node = props.globals.getNode("/autopilot/locks/altitude", 1);
     if ( node.getValue() == "pitch-hold" ) {
       node.setValue( "" );
     } else {
       node.setValue( "pitch-hold" );
       var pitch = props.globals.getNode("/autopilot/settings/target-pitch-deg", 1);
       pitch.setValue( getprop("/orientation/pitch-deg") );
     }
   </script>
  </binding>
 </key>

 <key n="18">
  <name>Ctrl-R</name>
  <desc>Activate the instant replay system</desc>
  <binding>
   <command>replay</command>
  </binding>
 </key>

 <key n="19">
  <name>Ctrl-S</name>
  <desc>Toggle auto-throttle lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var 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>

 <key n="20">
  <name>Ctrl-T</name>
  <desc>Toggle autopilot terrain lock</desc>
  <binding>
   <command>nasal</command>
   <script>
     var node = props.globals.getNode("/autopilot/locks/altitude", 1);
     if ( node.getValue() == "agl-hold" ) {
       node.setValue( "" );
     } else {
       node.setValue( "agl-hold" );
       var agl = props.globals.getNode("/autopilot/settings/target-agl-ft", 1);
       agl.setValue( getprop("/position/altitude-agl-ft") );
     }
   </script>
  </binding>
 </key>

 <key n="21">
  <name>Ctrl-U</name>
  <desc>[Cheat] Add 1000ft of emergency altitude</desc>
  <binding>
   <command>property-adjust</command>
   <property>/position/altitude-ft</property>
   <step type="double">1000.0</step>
  </binding>
  <binding>
   <command>property-assign</command>
   <property>/sim/startup/onground</property>
   <value type="bool">false</value>
  </binding>
 </key>

 <key n="22">
  <name>Ctrl-V</name>
  <desc>Select initial view (view 0)</desc>
  <binding>
   <command>property-assign</command>
   <property>/sim/current-view/view-number</property>
   <value>0</value>
  </binding>
 </key>

 <key n="23">
  <name>Ctrl-W</name>
  <desc>Toggle autopilot wing leveler</desc>
  <binding>
   <command>nasal</command>
   <script>
     var node = props.globals.getNode("/autopilot/locks/heading", 1);
     if ( node.getValue() == "wing-leveler" ) {
       node.setValue( "" );
     } else {
       node.setValue( "wing-leveler" );
     }
   </script>
  </binding>
 </key>

 <key n="24">
  <name>Ctrl-X</name>
  <desc>Reset zoom to default</desc>
  <binding>
   <command>property-assign</command>
   <property>/sim/current-view/field-of-view</property>
   <property>/sim/view/config/default-field-of-view-deg</property>
  </binding>
 </key>

 <key n="27">w
  <name>ESC</name>
  <desc>Prompt and quit FlightGear</desc>
  <binding>
    <command>dialog-show</command>
    <dialog-name>exit</dialog-name>
  </binding>
  <mod-shift>
   <desc>Reset FlightGear</desc>
   <binding>
    <command>reset</command>
   </binding>
  </mod-shift>
 </key>

 <key n="32">
  <name>SPACE</name>
  <desc>PTT - Push To Talk (via VoIP)</desc>
  <binding>
   <command>nasal</command>
   <script>space(1, modifiers.getValue())</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>space(0, modifiers.getValue())</script>
   </binding>
  </mod-up>
  <mod-shift>
   <binding>
    <command>nasal</command>
    <script>space(1, modifiers.getValue())</script>
   </binding>
   <mod-up>
    <binding>
     <command>nasal</command>
     <script>space(0, modifiers.getValue())</script>
    </binding>
   </mod-up>
  </mod-shift>
 </key>

 <key n="33">
  <name>!</name>
  <desc>Select first engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.selectEngine(0)</script>
  </binding>
 </key>

 <key n="35">
  <name>#</name>
  <desc>Select third engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.selectEngine(2)</script>
  </binding>
 </key>

 <key n="36">
  <name>$</name>
  <desc>Select fourth engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.selectEngine(3)</script>
  </binding>
 </key>

 <key n="39">
  <name>'</name>
  <desc>Display a dialog relevant to the tuned in ATC service (if any)</desc>
  <binding>
    <command>ATC-dialog</command>
  </binding>
 </key>

 <key n="92">
  <name>\</name>
  <desc>Let ATC/instructor repeat last message</desc>
  <binding>
    <command>nasal</command>
    <script>screen.msg_repeat()</script>
  </binding>
 </key>

 <key n="122">
  <name>z</name>
  <desc>Left brake</desc>
  <binding>
   <command>nasal</command>
   <script>controls.applyBrakes(1, -1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.applyBrakes(0, -1)</script>
   </binding>
  </mod-up>
 </key>

 <key n="34">
  <name>"</name>
  <repeatable type="bool">false</repeatable>
  <desc>Chat Menu</desc>
  <binding>
     <command>dialog-show</command>
     <dialog-name>chat-menu</dialog-name>
  </binding>
 </key>

 <key n="99">
  <name>c</name>
  <desc>Right brake</desc>
  <binding>
   <command>nasal</command>
   <script>controls.applyBrakes(1, 1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.applyBrakes(0, 1)</script>
   </binding>
  </mod-up>
 </key>

 <key n="47">
  <name>/</name>
  <desc>Open property browser</desc>
  <binding>
   <condition>
    <not>
     <property>/sim/input/property-key-handler</property>
    </not>
   </condition>
   <command>nasal</command>
   <script>gui.property_browser()</script>
  </binding>
  <binding>
   <condition>
    <property>/sim/input/property-key-handler</property>
   </condition>
   <command>nasal</command>
   <script>prop_key_handler.start()</script>
  </binding>
 </key>

 <key n="113">
  <name>q</name>
  <desc>Move rudder left</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/rudder</property>
   <step type="double">-0.05</step>
  </binding>
 </key>

<key n="81">
  <name>Q</name>
  <desc>Move rudder left</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/rudder</property>
   <step type="double">-1</step>
  </binding>
 </key>

 <key n="">
  <name></name>
  <desc>Decrease elevator trim</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/elevator-trim</property>
   <step type="double">-0.001</step>
  </binding>
  <mod-shift>
    <desc>Look back left</desc>
    <binding>
     <command>property-assign</command>
     <property>/sim/current-view/goal-heading-offset-deg</property>
     <property>/sim/view/config/back-left-direction-deg</property>
    </binding>
  </mod-shift>
 </key>

 <key n="114">
  <name>r</name>
  <desc>Increase elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(-0.05, 100)
   </script>
  </binding>
  <mod-shift>
 </key>

 <key n="82">
  <name>R</name>
  <desc>Increase elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(-1, 100)
   </script>
  </binding>
  <mod-shift>
 </key>

 <key n="115">
  <name>s</name>
  <desc>Decrease throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incThrottle(-0.01, -1.0)
   </script>
  </binding>
  <mod-shift>
 </key>

 <key n="83">
  <name>S</name>
  <desc>Decrease throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incThrottle(-1, -1.0)
   </script>
  </binding>
  <mod-shift>
 </key>

 <key n="97">
  <name>a</name>
  <desc>Move aileron left (or adjust AP heading.)</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incAileron(-0.05, -1.0)
   </script>
  </binding>
 </key>

 <key n="65">
  <name>A</name>
  <desc>Move aileron left (or adjust AP heading.)</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incAileron(-1, -1.0)
   </script>
  </binding>
 </key>

 <key n="53">
  <name>5</name>
  <desc>Center aileron, elevator, and rudder</desc>
  <binding>
   <command>nasal</command>
   <script>controls.centerFlightControls()</script>
  </binding>
 </key>

 <key n="100">
  <name>d</name>
  <desc>Move aileron right (or adjust AP heading.)</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incAileron(0.05, 1.0)
   </script>
  </binding>
 </key>

 <key n="">
  <name></name>
  <desc>Increase elevator trim</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/elevator-trim</property>
   <step type="double">0.001</step>
  </binding>
 </key>

 <key n="102">
  <name>f</name>
  <desc>Decrease elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(0.05, -100)
   </script>
  </binding>
 </key>

 <key n="70">
  <name>F</name>
  <desc>Decrease elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(1, -100)
   </script>
  </binding>
 </key>

 <key n="119">
  <name>w</name>
  <desc>Increase throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
  <command>nasal</command>
   <script>
     controls.incThrottle(0.01, 1.0)
   </script>
  </binding>
 </key>

 <key n="87">
  <name>W</name>
  <desc>Increase throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
  <command>nasal</command>
   <script>
     controls.incThrottle(1, 1.0)
   </script>
  </binding>
 </key>

 <key n="58">
  <name>:</name>
  <desc>Start multikey command</desc>
  <binding>
   <command>nasal</command>
   <script>multikey.start()</script>
  </binding>
 </key>

 <key n="63">
  <name>?</name>
  <desc>Show help dialog</desc>
  <binding>
   <command>nasal</command>
   <script>gui.showHelpDialog("/sim/help", 1)</script>
  </binding>
 </key>

 <key n="64">
  <name>@</name>
  <desc>Select second engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.selectEngine(1)</script>
  </binding>
 </key>

 <key n="51">
  <name>3</name>
  <desc>Decrease speed-up</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/speed-up</property>
   <min>1</min>
   <step type="double">-1</step>
  </binding>
 </key>

 <key n="88">
  <name>X</name>
  <desc>Toggle parking brake on or off</desc>
  <binding>
   <command>nasal</command>
   <script>controls.applyParkingBrake(1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.applyParkingBrake(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="71">
  <name>G</name>
  <desc>Gear down</desc>
  <binding>
   <command>nasal</command>
   <script>controls.gearDown(1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.gearDown(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="72">
  <name>H</name>
  <desc>Cycle HUD Brightness</desc>
  <binding>
   <command>nasal</command>
   <script>aircraft.HUD.cycle_brightness()</script>
  </binding>
 </key>

 <key n="73">
  <name>I</name>
  <desc>Switch to and toggle alternative HUD types</desc>
  <binding>
   <command>nasal</command>
   <script>aircraft.HUD.cycle_type()</script>
  </binding>
 </key>

 <key n="77">
  <name>M</name>
  <desc>Mixture leaner</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>controls.adjMixture(-1)</script>
  </binding>
 </key>

 <key n="78">
  <name>N</name>
  <desc>Propeller Coarser</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>controls.adjPropeller(-1)</script>
  </binding>
 </key>

 <key n="80">
  <name>P</name>
  <desc>Toggle panel</desc>
  <binding>
   <command>property-toggle</command>
   <property>/sim/panel/visibility</property>
  </binding>
 </key>

 <key n="48">
  <name>0</name>
  <desc>Swap panels</desc>
  <binding>
   <condition>
     <not>
     <property>/sim/allow-toggle-cockpit</property>
     </not>
   </condition>
   <command>property-swap</command>
   <property>/sim/panel/path</property>
   <property>/sim/panel_2/path</property>
  </binding>
  <binding>
   <condition>
     <not>
     <property>/sim/allow-toggle-cockpit</property>
     </not>
   </condition>
   <command>panel-load</command>
  </binding>
 </key>

 <key n="56">
  <name>8</name>
  <desc>Decrease warp delta</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/time/warp-delta</property>
   <step type="int">-30</step>
  </binding>
 </key>

 <key n="86">
  <name>V</name>
  <desc>Scroll in reverse through views</desc>
  <binding>
   <command>nasal</command>
   <script>view.stepView(-1)</script>
  </binding>
 </key>

 <key n="54">
  <name>6</name>
  <desc>Decrease warp</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/time/warp</property>
   <step type="int">-60</step>
  </binding>
 </key>

 <key n="61">
  <name>=</name>
  <desc>Increase field of view</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>view.increase()</script>
  </binding>
 </key>

 <key n="45">
  <name>-</name>
  <desc>Decrease Visibility</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>decrease-visibility</command>
  </binding>
 </key>

 <key n="91">
  <name>[</name>
  <desc>Decrease flaps</desc>
  <binding>
   <command>nasal</command>
   <script>controls.flapsDown(-1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.flapsDown(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="93">
  <name>]</name>
  <desc>Increase flaps</desc>
  <binding>
   <command>nasal</command>
   <script>controls.flapsDown(1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.flapsDown(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="59">
  <name>;</name>
  <repeatable type="bool">false</repeatable>
  <desc>Compose Chat</desc>
  <binding>
    <command>nasal</command>
    <script>multiplayer.compose_message()</script>
  </binding>
 </key>

 <key n="52">
  <name>4</name>
  <desc>Increase speed-up</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/speed-up</property>
   <min>1</min>
   <step type="double">1</step>
  </binding>
 </key>

 <key n="98">
  <name>b</name>
  <desc>Apply all brakes</desc>
  <binding>
   <command>nasal</command>
   <script>controls.applyBrakes(1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.applyBrakes(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="67">
  <name>C</name>
  <desc>Toggle 3D/2D cockpit</desc>
  <binding>
   <command>nasal</command>
   <script>
    if(getprop("/sim/allow-toggle-cockpit")) {
        setprop("/sim/current-view/internal", !getprop("/sim/current-view/internal"));
        setprop("/sim/view/internal", getprop("/sim/current-view/internal"));
        setprop("/sim/virtual-cockpit", !getprop("/sim/virtual-cockpit"));
        if(getprop("/sim/current-view/internal")) {
          setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/config/heading-offset-deg"));
          setprop("/sim/current-view/pitch-offset-deg", getprop("/sim/current-view/config/pitch-offset-deg"));
        } else {
          setprop("/sim/current-view/heading-offset-deg", 0);
          setprop("/sim/current-view/pitch-offset-deg", 0);
        }
    }
   </script>
  </binding>
 </key>

 <key n="103">
  <name>g</name>
  <desc>Gear Up</desc>
  <binding>
   <command>nasal</command>
   <script>controls.gearDown(-1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.gearDown(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="104">
  <name>h</name>
  <desc>HUD Master Switch</desc>
  <binding>
   <command>nasal</command>
   <script>aircraft.HUD.cycle_color()</script>
  </binding>
 </key>

 <key n="105">
  <name>i</name>
  <desc>Normal HUD</desc>
  <binding>
   <command>nasal</command>
   <script>aircraft.HUD.normal_type()</script>
  </binding>
 </key>

 <key n="75">
  <name>K</name>
  <desc>Decrease spoilers</desc>
  <binding>
   <command>nasal</command>
   <script>controls.stepSpoilers(-1)</script>
  </binding>
 </key>

 <key n="107">
  <name>k</name>
  <desc>Increase spoilers</desc>
  <binding>
   <command>nasal</command>
   <script>controls.stepSpoilers(1)</script>
  </binding>
 </key>

 <key n="108">
  <name>l</name>
  <desc>Toggle tail-wheel lock</desc>
  <binding>
   <command>property-toggle</command>
   <property>/controls/gear/tailwheel-lock</property>
  </binding>
 </key>

 <key n="109">
  <name>m</name>
  <desc>Mixture richer</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>controls.adjMixture(1)</script>
  </binding>
 </key>

 <key n="110">
  <name>n</name>
  <desc>Propeller Finer</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>controls.adjPropeller(1)</script>
  </binding>
 </key>

 <key n="112">
  <name>p</name>
  <desc>Toggle the pause state of the sim</desc>
  <binding>
   <command>property-toggle</command>
   <property>/sim/freeze/master</property>
  </binding>
  <binding>
   <command>property-toggle</command>
   <property>/sim/freeze/clock</property>
  </binding>
  <binding>
   <condition>
     <property>/sim/freeze/replay-state</property>
   </condition>
   <command>property-assign</command>
   <property>/sim/freeze/replay-state</property>
   <value type="int">0</value>
  </binding>
 </key>

 <key n="121">
  <name>y</name>
  <desc>Fire Starter on Selected Engine(s)</desc>
  <binding>
   <command>nasal</command>
   <script>controls.startEngine()</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>props.setAll("/controls/engines/engine", "starter", 0)</script>
   </binding>
  </mod-up>
 </key>

 <nasal>
  <script>
    var t_id = 0;
  </script>
 </nasal>

 <key n="57">
  <name>9</name>
  <desc>Increase warp delta</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/time/warp-delta</property>
   <step type="int">30</step>
  </binding>
  <binding>
   <command>nasal</command>
   <script>
    (func(x) {
        settimer(func {
            x == t_id or return;
            gui.popupTip("resetting warp");
            setprop("/sim/time/warp-delta", 0);
        }, 1, 1)
    })(t_id += 1)
   </script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>t_id += 1</script>
   </binding>
  </mod-up>
 </key>

 <key n="118">
  <name>v</name>
  <desc>Scroll through views</desc>
  <binding>
   <command>nasal</command>
   <script>view.stepView(1)</script>
  </binding>
 </key>

 <key n="55">
  <name>7</name>
  <desc>Increase warp</desc>
  <binding>
   <command>property-adjust</command>
   <property>/sim/time/warp</property>
   <step type="int">60</step>
  </binding>
 </key>

 <key n="43">
  <name>+</name>
  <desc>Decrease field of view</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>view.decrease()</script>
  </binding>
 </key>

 <key n="95">
  <name>_</name>
  <desc>Increase Visibility</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>increase-visibility</command>
  </binding>
 </key>

 <key n="123">
  <name>{</name>
  <desc>Decrease Magneto on Selected Engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.stepMagnetos(-1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.stepMagnetos(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="125">
  <name>}</name>
  <desc>Increase Magneto on Selected Engine</desc>
  <binding>
   <command>nasal</command>
   <script>controls.stepMagnetos(1)</script>
  </binding>
  <mod-up>
   <binding>
    <command>nasal</command>
    <script>controls.stepMagnetos(0)</script>
   </binding>
  </mod-up>
 </key>

 <key n="126">
  <name>~</name>
  <desc>Select all engines</desc>
  <binding>
   <command>nasal</command>
   <script>controls.selectAllEngines()</script>
  </binding>
 </key>

 <key n="257">
  <name>F1</name>
  <mod-shift>
   <desc>Load flight</desc>
   <binding>
    <command>load</command>
   </binding>
  </mod-shift>
 </key>

 <key n="258">
  <mod-shift>
   <desc>Save flight</desc>
   <binding>
    <command>save</command>
    <write-all>false</write-all>
   </binding>
  </mod-shift>
 </key>

 <key n="259">
  <name>F3</name>
  <desc>Capture screen</desc>
  <binding>
   <command>nasal</command>
   <script>
     var success = fgcommand("screen-capture");
     var path = getprop("/sim/paths/screenshot-last");
     if (success)
         gui.popupTip("Screenshot written to '" ~ path ~ "'");
     else
         gui.popupTip("Error writing screenshot '" ~ path ~ "'");
   </script>
  </binding>
  <mod-shift>
   <desc>Load panel</desc>
   <binding>
    <command>panel-load</command>
   </binding>
  </mod-shift>
 </key>

 <key n="261">
  <name>F5</name>
  <repeatable type="bool">true</repeatable>
  <mod-shift>
   <desc>Scroll panel down</desc>
   <binding>
    <command>property-adjust</command>
    <property>/sim/panel/y-offset</property>
    <step type="int">-5</step>
   </binding>
  </mod-shift>
 </key>

 <key n="262">
  <name>F6</name>
  <desc>Toggle Autopilot Heading Mode</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
    var prop = "/autopilot/locks/heading";
    var curr = getprop(prop);
    if(curr == "true-heading-hold") { setprop(prop, ""); }
    else { setprop(prop, "true-heading-hold"); }
   </script>
  </binding>
  <mod-shift>
   <desc>Scroll panel up</desc>
   <binding>
    <command>property-adjust</command>
    <property>/sim/panel/y-offset</property>
    <step type="int">5</step>
   </binding>
  </mod-shift>
 </key>

 <key n="263">
  <name>F7</name>
  <repeatable type="bool">true</repeatable>
  <mod-shift>
   <desc>Scroll panel left</desc>
   <binding>
    <command>property-adjust</command>
    <property>/sim/panel/x-offset</property>
    <step type="int">-5</step>
   </binding>
  </mod-shift>
 </key>

 <key n="264">
  <name>F8</name>
  <desc></desc>
  <repeatable type="bool">true</repeatable>
  <mod-shift>
   <desc>Scroll panel right</desc>
   <binding>
    <command>property-adjust</command>
    <property>/sim/panel/x-offset</property>
    <step type="int">5</step>
   </binding>
  </mod-shift>
 </key>

 <key n="266">
  <name>F10</name>
  <desc>Toggle menubar</desc>
  <binding>
   <command>property-toggle</command>
   <property>/sim/menubar/visibility</property>
  </binding>
  <mod-shift>
   <desc>Switch to next GUI style</desc>
   <binding>
    <command>nasal</command>
    <script>gui.nextStyle()</script>
   </binding>
  </mod-shift>
 </key>

 <key n="267">
  <name>F11</name>
  <desc>Pop up autopilot dialog</desc>
  <binding>
   <command>dialog-show</command>
   <dialog-name>autopilot</dialog-name>
  </binding>
 </key>

 <key n="268">
  <name>F12</name>
  <desc>Pop up radio settings dialog</desc>
  <binding>
   <command>dialog-show</command>
   <dialog-name>radios</dialog-name>
  </binding>
 </key>

 <key n="269">
  <name>Enter</name>
  <desc>Move rudder right</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/rudder</property>
   <step type="double">0.05</step>
  </binding>
 </key>

 <key n="309">
  <name>Keypad 5</name>
  <desc>Center aileron, elevator, and rudder</desc>
  <binding>
   <command>nasal</command>
   <script>controls.centerFlightControls()</script>
  </binding>
 </key>

 <key n="356">
  <name>Left</name>
  <desc>Move aileron left (or adjust AP heading.)</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incAileron(-0.05, -1.0)
   </script>
  </binding>
  <mod-shift>
   <desc>Look left</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/left-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="357">
  <name>Up</name>
  <desc>Increase elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(0.05, -100)
   </script>
  </binding>
  <mod-shift>
   <desc>Look forward</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/front-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="358">
  <name>Right</name>
  <desc>Move aileron right (or adjust AP heading.)</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incAileron(0.05, 1.0)
   </script>
   <step type="double">0.05</step>
  </binding>
  <mod-shift>
   <desc>Look right</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/right-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="359">
  <name>Down</name>
  <desc>Decrease elevator or autopilot altitude</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incElevator(-0.05, 100)
   </script>
  </binding>
  <mod-shift>
   <desc>Look backwards</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/back-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="360">
  <name>PageUp</name>
  <desc>Increase throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incThrottle(0.01, 1.0)
   </script>
  </binding>
  <mod-shift>
   <desc>Look front right</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/front-right-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="361">
  <name>PageDown</name>
  <desc>Decrease throttle or autopilot autothrottle</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>nasal</command>
   <script>
     controls.incThrottle(-0.01, -1.0)
   </script>
  </binding>
  <mod-shift>
   <desc>Look back right</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/back-right-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="362">
  <name>Home</name>
  <desc>Increase elevator trim</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/elevator-trim</property>
   <step type="double">0.001</step>
  </binding>
  <mod-shift>
   <desc>Look front left</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/front-left-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="363">
  <name>End</name>
  <desc>Decrease elevator trim</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/elevator-trim</property>
   <step type="double">-0.001</step>
  </binding>
  <mod-shift>
   <desc>Look back left</desc>
   <binding>
    <command>property-assign</command>
    <property>/sim/current-view/goal-heading-offset-deg</property>
    <property>/sim/view/config/back-left-direction-deg</property>
   </binding>
  </mod-shift>
 </key>

 <key n="364">
  <name>Insert</name>
  <desc>Move rudder left</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
   <command>property-adjust</command>
   <property>/controls/flight/rudder</property>
   <step type="double">-0.05</step>
  </binding>
 </key>

</PropertyList>

<!-- end of keyboard.xml -->


These interfere with the F-14B specific controls, I found the F-14B's aircraft specific keybindings under f-14-b-set.xml

I changed the ASCII codes for the keybindings, but afterwards, was unable to use any of the controls.

Using the original ASCII codes for the F-14B, I was, however, able to fly the F-14, although the new keybindings didn't work with them.

How do I change the aircraft specific keybindings in Flightgear v1.9.0.1b?

Plz respond A.S.A.P.
Thundr_pry_brd
 
Posts: 4
Joined: Mon May 23, 2016 7:47 pm

Re: How do I change aircraft specific Keybindings?

Postby robelt » Tue Dec 12, 2017 6:13 pm

Here are the most common mistakes you may make while making key bindings.
1) Wrong ASCII character number. A workaround would-be, using python's default function "ord()", this will be used to return the ASCII representation of the character.
Code: Select all
ord("A")
One more thing would be, capital letters are Shift+keys in FG and the inverse of 'ord' is 'chr'.
2) If the file descriptor is not specified. When using a command in nasal script, make sure to specify the file descriptor in the XML file.
Code: Select all
<parent>
 <file>Aircraft/f-14b/Nasal/main.nas</file>
</parent>
...parent.func()...

3)Check for errors in the console,if you are not using the command-line, make sure to run the exe with cmd, and try debugging the errors.
4)Bro....v1.9.0.1b, are you experimenting with it. Where did you even got it? Anyway, upgrade your FG, it is more fun and yes, it is very portable.
Pilot : "Bogey1 is in range..."
Bogey1 : "The Pilot is in range..."
robelt
 
Posts: 20
Joined: Mon Sep 11, 2017 12:01 pm
Location: Angels 30
Callsign: Nemesis
Version: 2017.3.1
OS: Linux - Cyborg Hawk


Return to Flying

Who is online

Users browsing this forum: No registered users and 10 guests