Bindings: Difference between revisions
Philosopher (talk | contribs) m (<syntaxhighlight>) |
|||
Line 20: | Line 20: | ||
=== dialog-close === | === dialog-close === | ||
Closes the active dialog. | Closes the active dialog. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>dialog-close</command> | |||
</binding> | |||
</syntaxhighlight> | |||
=== dialog-show === | === dialog-show === | ||
Shows a dialog, which should be present in <tt>[[$FG ROOT]]/gui/dialogs</tt>. Starting with FlightGear 2.7 dialog files located in <tt><Current aircraft directory>/gui/dialogs</tt> are also loaded. This should be used for dialogs specific to a certain aircraft. | Shows a dialog, which should be present in <tt>[[$FG ROOT]]/gui/dialogs</tt>. Starting with FlightGear 2.7 dialog files located in <tt><Current aircraft directory>/gui/dialogs</tt> are also loaded. This should be used for dialogs specific to a certain aircraft. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>dialog-show</command> | |||
<dialog-name>location-in-air</dialog-name> | |||
</binding> | |||
</syntaxhighlight> | |||
* '''dialog-name:''' the name of the dialog, as designated in its .xml file. | * '''dialog-name:''' the name of the dialog, as designated in its .xml file. | ||
=== nasal === | === nasal === | ||
[[Nasal]] is frequently used for complicated systems. | [[Nasal]] is frequently used for complicated systems. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>nasal</command> | |||
<script>b777.afds.input(0,1);</script> | |||
</binding> | |||
</syntaxhighlight> | |||
The cmadarg() function is often useful in these situations to extract offset values passed to the binding. | The cmadarg() function is often useful in these situations to extract offset values passed to the binding. | ||
=== property-adjust === | === property-adjust === | ||
Increases or decreases a property's value with a given step. Maximum and minimum values are optional. | Increases or decreases a property's value with a given step. Maximum and minimum values are optional. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-adjust</command> | |||
<property>/controls/lighting/panel-norm</property> | |||
<step>-0.05</step> | |||
<min>0</min> | |||
<max>1</max> | |||
</binding> | |||
</syntaxhighlight> | |||
=== property-assign === | === property-assign === | ||
One of the most important commands. It sets a property to a predefined value. | One of the most important commands. It sets a property to a predefined value. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-assign</command> | |||
<property>/autopilot/settings/target-speed-kt</property> | |||
<value>0</value> | |||
</binding> | |||
</syntaxhighlight> | |||
=== property-cycle === | === property-cycle === | ||
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is "value1", it will change to "value2"; if it is "value2", it will change to "value3", and so on, wrapping around the end. If the current value is not in the list, it will jump to the first one. | Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is "value1", it will change to "value2"; if it is "value2", it will change to "value3", and so on, wrapping around the end. If the current value is not in the list, it will jump to the first one. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-cycle</command> | |||
<property>/autopilot/autobrake/setting</property> | |||
<value type="string">ARM</value> | |||
<value type="string">DISARM</value> | |||
<value type="string">OFF</value> | |||
</binding> | |||
</syntaxhighlight> | |||
As of May 2013, the command supports additional behaviours to simplify use with the new [[Knob_/_slider_animation|knob and slider animations]]. The wrapping behaviour can be disabled by setting <wrap>0</wrap>, and the command uses the 'offset' argument to select a direction of movement. This means a property-cycle bound to a multi-position knob will function as expected for movement in both directions. | As of May 2013, the command supports additional behaviours to simplify use with the new [[Knob_/_slider_animation|knob and slider animations]]. The wrapping behaviour can be disabled by setting <wrap>0</wrap>, and the command uses the 'offset' argument to select a direction of movement. This means a property-cycle bound to a multi-position knob will function as expected for movement in both directions. | ||
Line 102: | Line 114: | ||
=== property-multiply === | === property-multiply === | ||
Multiply the value of a property by a given factor. | Multiply the value of a property by a given factor. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-multiply</command> | |||
<property>/controls/flight/aileron</property> | |||
<factor>0.5</factor> | |||
<min>-1</min> | |||
<max>1</max> | |||
<mask>all</mask> | |||
<wrap>true</wrap> | |||
</binding> | |||
</syntaxhighlight> | |||
*'''factor:''' the amount to multiply by. | *'''factor:''' the amount to multiply by. | ||
*'''min:''' minimum value. | *'''min:''' minimum value. | ||
Line 122: | Line 136: | ||
=== property-randomize === | === property-randomize === | ||
Assigns a random value (between min and max) to a property. | Assigns a random value (between min and max) to a property. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-randomize</command> | |||
<property>/orientation/pitch-deg</property> | |||
<min>0</min> | |||
<max>360</max> | |||
</binding> | |||
</syntaxhighlight> | |||
=== property-scale === | === property-scale === | ||
Set the value of a property based on an axis, often used in [[joystick]] configuration files. | Set the value of a property based on an axis, often used in [[joystick]] configuration files. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-scale</command> | |||
<property>/controls/flight/aileron</property> | |||
<offset>0.001</offset> | |||
<factor>-1</factor> | |||
<power>3</power> | |||
</binding> | |||
</syntaxhighlight> | |||
* '''offset:''' the offset to shift by, before applying the factor. | * '''offset:''' the offset to shift by, before applying the factor. | ||
Line 148: | Line 166: | ||
=== property-swap === | === property-swap === | ||
Swaps the values of two properties, useful for radio panels. | Swaps the values of two properties, useful for radio panels. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-swap</command> | |||
<property>/instrumentation/comm/frequencies/selected-mhz</property> | |||
<property>/instrumentation/comm/frequencies/standby-mhz</property> | |||
</binding> | |||
</syntaxhighlight> | |||
=== property-toggle === | === property-toggle === | ||
Toggles the value of a property on each click, between true (1) and false (0). | Toggles the value of a property on each click, between true (1) and false (0). | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-toggle</command> | |||
<property>/controls/gear/gear-down</property> | |||
</binding> | |||
</syntaxhighlight> | |||
Or - if defined - it toggles between two custom values. | Or - if defined - it toggles between two custom values. | ||
<syntaxhighlight> | |||
<binding> | |||
<command>property-toggle</command> | |||
<property>/controls/gear/gear-down</property> | |||
<value>2</value> | |||
<value>3</value> | |||
</binding> | |||
</syntaxhighlight> | |||
===request-metar === | ===request-metar === |
Revision as of 00:24, 10 September 2013
This article is incomplete. Please help improve the article, or discuss the issue on the talk page. |
Bindings define what happens when a user:
- clicks an object in the scenery or an aircraft
- press a key on the keyboard or joystick
- clicks a menu item
- click a buttons or fields in a dialog
You can assign multiple bindings to one object/button/key.
This article gives a small overview of frequently used bindings. Please refer to $FG_ROOT/Docs/README.commands for additional information and a complete list of available bindings.
All give codes are examples, found on various places in the FlightGear package.
Commands
Below are a number of useful commands. See further fg_commands.cxx.
To learn more about adding your own custom fgcommands to the source code, see Howto:Add new fgcommands to FlightGear
dialog-close
Closes the active dialog.
<binding>
<command>dialog-close</command>
</binding>
dialog-show
Shows a dialog, which should be present in $FG ROOT/gui/dialogs. Starting with FlightGear 2.7 dialog files located in <Current aircraft directory>/gui/dialogs are also loaded. This should be used for dialogs specific to a certain aircraft.
<binding>
<command>dialog-show</command>
<dialog-name>location-in-air</dialog-name>
</binding>
- dialog-name: the name of the dialog, as designated in its .xml file.
nasal
Nasal is frequently used for complicated systems.
<binding>
<command>nasal</command>
<script>b777.afds.input(0,1);</script>
</binding>
The cmadarg() function is often useful in these situations to extract offset values passed to the binding.
property-adjust
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.
<binding>
<command>property-adjust</command>
<property>/controls/lighting/panel-norm</property>
<step>-0.05</step>
<min>0</min>
<max>1</max>
</binding>
property-assign
One of the most important commands. It sets a property to a predefined value.
<binding>
<command>property-assign</command>
<property>/autopilot/settings/target-speed-kt</property>
<value>0</value>
</binding>
property-cycle
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is "value1", it will change to "value2"; if it is "value2", it will change to "value3", and so on, wrapping around the end. If the current value is not in the list, it will jump to the first one.
<binding>
<command>property-cycle</command>
<property>/autopilot/autobrake/setting</property>
<value type="string">ARM</value>
<value type="string">DISARM</value>
<value type="string">OFF</value>
</binding>
As of May 2013, the command supports additional behaviours to simplify use with the new knob and slider animations. The wrapping behaviour can be disabled by setting <wrap>0</wrap>, and the command uses the 'offset' argument to select a direction of movement. This means a property-cycle bound to a multi-position knob will function as expected for movement in both directions.
property-interpolate
Interpolates to a value with a given rate of change (per second).
<binding>
<command>property-interpolate</command>
<property>/controls/flight/aileron-trim</property>
<value type="double">0</value>
<rate>0.5</rate><!-- 2 seconds to 0 from 1 or -1 -->
</binding>
Instead of using <rate>, one could use
<binding>
<command>property-interpolate</command>
<property>/controls/flight/aileron-trim</property>
<value type="double">0</value>
<time>2</time><!-- 2 seconds to 0 from 1, 0.5, -1 etc. -->
</binding>
You can also interpolate to a value given by a property.
<binding>
<command>property-interpolate</command>
<property>/controls/flight/aileron-trim</property>
<property>/controls/flight/default-aileron-trim</property><!-- the value to interpolate to, is 0 -->
<rate>0.5</rate><!-- 2 seconds to 0 from 1 or -1 -->
</binding>
property-multiply
Multiply the value of a property by a given factor.
<binding>
<command>property-multiply</command>
<property>/controls/flight/aileron</property>
<factor>0.5</factor>
<min>-1</min>
<max>1</max>
<mask>all</mask>
<wrap>true</wrap>
</binding>
- factor: the amount to multiply by.
- min: minimum value.
- max: maximum value.
- mask:
- integer: mutiply only left of the decimal point.
- decimal: multiply only the right of the decimal point.
- all: multiply the entire value.
- wrap: true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.
property-randomize
Assigns a random value (between min and max) to a property.
<binding>
<command>property-randomize</command>
<property>/orientation/pitch-deg</property>
<min>0</min>
<max>360</max>
</binding>
property-scale
Set the value of a property based on an axis, often used in joystick configuration files.
<binding>
<command>property-scale</command>
<property>/controls/flight/aileron</property>
<offset>0.001</offset>
<factor>-1</factor>
<power>3</power>
</binding>
- offset: the offset to shift by, before applying the factor.
- factor: the factor to multiply by (use negative to reverse).
- squared: if true will square the resulting value (same as power=2).
- power: the resulting value will be taken to the power of this integer value (overrides squared).
Remember: ((property+offset)*factor)^power=result
property-swap
Swaps the values of two properties, useful for radio panels.
<binding>
<command>property-swap</command>
<property>/instrumentation/comm/frequencies/selected-mhz</property>
<property>/instrumentation/comm/frequencies/standby-mhz</property>
</binding>
property-toggle
Toggles the value of a property on each click, between true (1) and false (0).
<binding>
<command>property-toggle</command>
<property>/controls/gear/gear-down</property>
</binding>
Or - if defined - it toggles between two custom values.
<binding>
<command>property-toggle</command>
<property>/controls/gear/gear-down</property>
<value>2</value>
<value>3</value>
</binding>
request-metar
fgcommand("request-metar", var n = props.Node.new({ "path": "/foo/mymetar", "station":"LOWI"}));
If you pass an existing path, the station ID will be updated, and if you pass the same station ID as before, no additional request is made. As usual for metar-properties, there's a time-to-live and valid flags you can check, and the metar refreshes automatically every 900 seconds. You can also write to the station ID directly to change station, update the time-to-live, and wait for the valid signal. There's also an unregister command ('clear-metar') to cancel the binding into the property tree.[1]— James Turner
|
- ↑ James Turner (Sun, 23 Sep 2012 08:56:48 -0700). [Flightgear-devel] Requesting arbitrary metar.
Related content
- $FG_ROOT/Docs/README.commands view online
- Howto: Make a clickable panel