From d027cf4044b8f1cd089cfd3797dae4efc92fd17f Mon Sep 17 00:00:00 2001 From: j4strngs Date: Sun, 8 Sep 2002 20:52:28 +0000 Subject: [PATCH] Fixed minor error spotted by Dave Perry --- Docs/InstallGuide/html/getstartch4.html | 3584 +++++++++++------------ Docs/getstart.pdf | Bin 807530 -> 807532 bytes Docs/source/takeoff.tex | 1678 +++++------ 3 files changed, 2631 insertions(+), 2631 deletions(-) diff --git a/Docs/InstallGuide/html/getstartch4.html b/Docs/InstallGuide/html/getstartch4.html index 1aebf5f51..8ab715c1b 100644 --- a/Docs/InstallGuide/html/getstartch4.html +++ b/Docs/InstallGuide/html/getstartch4.html @@ -1,1792 +1,1792 @@ - - -4 Takeoff: How to start the program - - - - - - - - -

Chapter 4
Takeoff: How to start the program

-

4.1 Launching the simulator under Unix/Linux

- - -

Under Linux (or any other flavor of Unix), FlightGear will be invoked by -

runfgfs --option1 --option2..., -

where the options will be described in Section 4.4 below. -

If something strange happens while using this shell script, if you want to do some -debugging (i.e. using ”strace”) or if you just feel nice to be ”keen”, then you can start -FlightGear directly by executing the ”fgfs” binary. In this case you should at least add -one variable to your environment, which is needed to locate the (mostly) shared library -built from the sources of the SimGear package. Please add the respective directory to -your LD_LIBRARY_PATH. You can do so with the following on Bourne shell -(compatibles): - - - -
- LD_LIBRARY_PATH=/usr/local/FlightGear/lib:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH/
-
-
-

or on C shell (compatibles): - - - -
- setenv LD_LIBRARY_PATH
- /usr/local/FlightGear/lib:$LD_LIBRARY_PATH
-
-
-

Besides this (used by the dynamic linker) ”fgfs” knows about the following environment -variable: -

FG_ROOT: root directory for the FlightGear base package, -

which corresponds to the --fg-root=path option as described in Sec. 4.4.1 -

4.2 Launching the simulator under Windows

- - -

For launching FlightGear from Windows explorer, change to the directory -/FlightGear and double-click the file runfgfs.bat. You can also pass command -line options from Sec. 4 to the batch file (if running it form a Command shell). -However, you have to enclose them in double quotes in this case as follows: -

runfgfs.bat ''--aircraft=4a-yasim'' ''--airport-id=KLAX''. - - - -

-

Fig. 3: Ready for takeoff. Waiting at the default startup position at San Francisco Itl., -KSFO. -

Alternatively, if for one or the other reason the batch file above does not work or is -missing, you can open a command shell, change to the directory where your binary -resides (typically something like c:/FlightGear/bin where you might have to -substitute c: in favor of your FlightGear directory), set the environment variable via -(note the backslashes!) -

SET FG_ROOT=c:\FlightGear\ -

and invoke FlightGear (within the same Command shell, as environment settings are -only valid locally within the same shell) via -

fgfs --option1 --option2.... -

Of course, you can create your own runfgfs.bat with Windows Editor using -the two lines above. -

For getting maximum performance it is recommended to minimize (iconize) the text -output window while running FlightGear. - - - -

4.3 Launching the simulator under Mac OS X

- - -

Say, you downloaded the base package and binary to your home directory. Then you can -open Terminal.app and execute the following sequence: -

setenv FG_ROOT  /fgfs-base-X.X.X ./fgfs-X.X.X.-date -
--option1 -- option 2 (one line) -

or -

./fgfs-X.X.X-version-date --fg-root=~/  fgfs-base-X.X.X -
--option1 --option2. (one line) -

4.4 Command line parameters

- -

Following is a complete list and short description of the numerous command line options -available for FlightGear. If you are running FlightGear under Windows you can include -these into runfgfs.bat. -

However, in case of options you want to re-use continually it is recommended to -include them into a file called .fgfsrc under Unix systems and system.fgfsrc, -resp. under Windows. This file has to be in the top FlightGear directory (for instance -/usr/local/Flightgear). As it depends on your preferences, it is not delivered with -FlightGear, but can be created with any text editor (notepad, emacs, vi, if you -like). -

4.4.1 General Options

- -

4.4.2 Features

- -

4.4.3 Aircraft

- -

4.4.4 Flight model

- -

4.4.5 Initial Position and Orientation

- -

4.4.6 Rendering Options

- -

4.4.7 HUD Options

- -

4.4.8 Time Options

- -

4.4.9 Network Options

- -

4.4.10 Route/Waypoint Options

- - - - -

Note: These options are rather geared to the advanced user who knows what he is -doing. -

4.4.11 IO Options

- - - - -

4.4.12 Debugging options

- -

4.5 Joystick support

- -

Could you imagine a pilot in his or her Cessna controlling the machine with a keyboard -alone? For getting the proper feeling of flight you will need a joystick/yoke plus rudder -pedals, right? However, the combination of numerous types of joysticks, flightsticks, -yokes, pedals etc. on the market with the several target operating systems, makes joystick -support a nontrivial task in FlightGear. -

Beginning with version 0.8.0, FlightGear has a reworked integrated joystick support, -which automatically detects any joystick, yoke, or pedals attached. Just try it! If this does -work for you, lean back and be happy! -

Unfortunately, given the several combinations of operating systems supported by -FlightGear (possibly in foreign languages) and joysticks available, chances are your -joystick does not work out of the box. Basically, there are two alternative approaches to -get it going, with the first one being preferred. -

4.5.1 Built-in joystick support

-
General remarks
In order for joystick auto-detection to work, a joystick bindings xml -file must exist for each joystick. This file describes what axes and buttons are to -be used to control which functions in FlightGear. The associations between -functions and axes or buttons are called ”bindings”. This bindings file can have any -name as long as a corresponding entry exists in the joysticks description file -

/FlightGear/joysticks.xml -

which tells FlightGear where to look for all the bindings files. We will look at examples -later. - - - -

FlightGear includes several such bindings files for several joystick manufacturers in -folders named for each manufacturer. For example, if you have a CH Products joystick, -look in the folder -

/FlightGear/Input/Joysticks/CH -

for a file that might work for your joystick. If such a file exists and your joystick is -working with other applications, then it should work with FlightGear the first time you -run it. If such a file does not exist, then we will discuss in a later section how to create -such a file by cutting and pasting bindings from the examples that are included with -FlightGear. -

Verifying your joystick is working
Does your computer see your joystick? One way -to answer this question under Linux is to reboot your system and immediately enter on -the command line -

dmesg | grep Joystick -

which pipes the boot message to grep which then prints every line in the boot message -that contains the string ”Joystick”. When you do this with a Saitek joystick attached, you -will see a line similar to this one: -

input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on -usb2:3.0 - This line tells us that a joystick has identified itself as SAITEK CYBORG 3D USB to -the operating system. It does not tell us that the joystick driver sees your joystick. If you -are working under Windows, the method above does not work, but you can still go on -with the next paragraph. -

Confirming that the driver recognizes your joystick
FlightGear ships with a utility -called js demo. It will report the number of joysticks attached to a system, their -respective ”names”, and their capabilities. Under Linux, you can run js demo from the -folder /FlightGear/bin as follows: -

$ cd /usr/local/FlightGear/bin -
$ ./js demo -

Under Windows, open a command shell (Start|All Programs|Accessories), go to the -FlightGear binary folder and start the program as follows (given FlightGear is installed -under c:\Flightgear) - - - -

cd \FlightGear\bin -
js demo.exe -

On our system, the first few lines of output are (stop the program with ^  C if it is -quickly scrolling past your window!) as follows: -

Joystick test program. -
Joystick 0: ''CH PRODUCTS CH FLIGHT SIM YOKE USB '' -
Joystick 1: ''CH PRODUCTS CH PRO PEDALS USB'' -
Joystick 2 not detected -
Joystick 3 not detected -
Joystick 4 not detected -
Joystick 5 not detected -
Joystick 6 not detected -
Joystick 7 not detected -
+--------------------JS.0----------------------+--------------------JS.1----------------------+ -
| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 | Btns Ax:0 Ax:1 Ax:2 | -
+----------------------------------------------+----------------------------------------------+ -
| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0 . | 0000 -1.0 -1.0 -1.0 . . . . . | -
- First note that js demo reports which number is assigned to each joystick recognized -by the driver. Also, note that the ”name” each joystick reports is also included between -quotes. We will need the names for each bindings file when we begin writing the binding -xml files for each joystick. -

Identifying the numbering of axes and buttons
Axis and button numbers can be -identified using js demo as follows. By observing the output of js demo while working -your joystick axes and buttons you can determine what axis and button numbers are -assigned to each joystick axis and button. It should be noted that numbering generally -starts with zero. -

The buttons are handled internally as a binary number in which bit 0 (the least significant -bit) represents button 0, bit 1 represents button 1, etc., but this number is displayed on the -screen in hexadecimal notation, so: -

0001 ==> button 0 pressed -
0002 ==> button 1 pressed -
0004 ==> button 2 pressed -
0008 ==> button 3 pressed -
0010 ==> button 4 pressed -
0020 ==> button 5 pressed - - - -
0040 ==> button 6 pressed -
... etc. up to ... -
8000 ==> button 15 pressed -
... and ... -
0014 ==> buttons 2 and 4 pressed simultaneously -
... etc. -

For Linux users, there is another option for identifying the ”name” and the numbers -assigned to each axis and button. Most Linux distributions include a very handy program, -”jstest”. With a CH Product Yoke plugged into the system, the following output lines are -displayed by jstest: -

jstest /dev/js3 -
Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB) has 7 axes and 12 buttons. Driver version is 2.1.0 -
Testing...(interrupt to exit) -
Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:on 4:off 5:off 6:off 7:off 8:off -9:off 10:off 11:off -
- Note the ”name” between parentheses. This is the name the system associates with -your joystick. -

When you move any control, the numbers change after the axis number -corresponding to that moving control and when you depress any button, the ”off” after -the button number corresponding to the button pressed changes to ”on”. In this way, you -can quickly write down the axes numbers and button numbers for each function without -messing with binary. -

Writing or editing joystick binding xml files
At this point, you have confirmed that -the operating system and the joystick driver both recognize your joystick(s). You also -know of several ways to identify the joystick ”name” your joystick reports to -the driver and operating system. You will need a written list of what control -functions you wish to have assigned to which axis and button and the corresponding -numbers. -

Make the following table from what you learned from js demo or jstest above (pencil -and paper is fine). Here we assume there are 5 axes including 2 axes associated with the -hat. - - - -

- - - - - - - -
Axis Button


elevator = 0 view cycle = 0
rudder = 1 all brakes = 1
aileron = 2 up trim = 2
throttle = 3 down trim = 3
leftright hat = 4 extend flaps = 4
foreaft hat = 5 retract flaps = 5
decrease RPM = 6
increase RPM = 7
-
-

We will assume that our hypothetical joystick supplies the ”name” QUICK STICK 3D -USB to the system and driver. With all the examples included with FlightGear, -the easiest way to get a so far unsupported joystick to be auto detected, is to -edit an existing binding xml file. Look at the xml files in the sub-folders of -/FlightGear/Input/Joysticks/. After evaluating at several of the xml binding -files supplied with FlightGear, we decide to edit the file -

/FlightGear/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml. -

This file has all the axes functions above assigned to axes and all the button functions -above assigned to buttons. This makes our editing almost trivial. -

Before we begin to edit, we need to choose a name for our bindings xml file, create -the folder for the QS joysticks, and copy the original xml file into this directory with this -name. -

$ cd /usr/local/FlightGear/Input/Joysticks -
$ mkdir QS -
$ cd QS -
$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/ -
Cyborg-Gold-3d-USB.xml QuickStick.xml - Here, we obviously have supposed a Linux/UNIX system with FlightGear being -installed under /usr/local/FlightGear. For a similar procedure under Windows -with FlightGear being installed under c:FlightGear, open a command shell and -type -

c: -
cd /FlightGear/Input/Joysticks -
mkdir QS -
cd QS -
copy /FlightGear/Input/Joysticks/Saitek/ -
Cyborg-Gold-3d-USB.xml QuickStick.xml - - - - Next, open QuickStick.xml with your favorite editor. Before we forget to -change the joystick name, search for the line containing <name>. You should find the -line -

<name>SAITEK CYBORG 3D USB</name> -

and change it to -

<name>QUICK STICK 3D USB</name>. -

This line illustrates a key feature of xml statements. They begin with a <tag> and end -with a </tag>. -

You can now compare your table to the comment table at the top of your file copy. -Note that the comments tell us that the Saitek elevator was assigned to axis 1. Search for -the string -

<axis n="2"> -

and change this to -

<axis n="1">. -

Next, note that the Saitek rudder was assigned to axis 2. Search for the string -

<axis n="2"> -

<axis n="1">. -

Continue comparing your table with the comment table for the Saitek and changing the -axis numbers and button numbers accordingly. Since QUICKSTICK USB and the Saitek -have the same number of axes but different number of buttons, you must delete the -buttons left over. Just remember to double check that you have a closing tag for each -opening tag or you will get an error using the file. -

Finally, be good to yourself (and others when you submit your new binding file to a -FlightGear developers or users archive!), take the time to change the comment table in -the edited file to match your changed axis and button assignments. The new -comments should match the table you made from the js demo output. Save your -edits. -

Telling FlightGear about your new bindings xml file
Before FlightGear can use -your new xml file, you need to edit the file -

/FlightGear/joysticks.xml, -

adding a line that will include your new file if the ”name” you entered between the name -tags matches the name supplied to the driver by your joystick. Add the following line to -joysticks.xml. - - - -

<js-named include="Input/Joysticks/QS/QuickStick.xml"/> -

Some hints for Windows users
Basically, the procedures described above should -work for Windows as well. If your joystick/yoke/pedals work out of the box or if you get -it to work using the methods above, fine. Unfortunately there may be a few -problems. -

The first one concerns users of non-US Windows versions. As stated above, -you can get the name of the joystick from the program js demo. If you have a -non-US version of Windows and the joystick .xml files named above do not -contain that special name, just add it on top of the appropriate file in the style of -

<name>Microsoft-PC-Joysticktreiber </name> -

No new entry in the base joysticks.xml file is required. -

Unfortunately, there is one more loophole with Windows joystick support. In case -you have two USB devices attached (for instance a yoke plus pedals), there may be -cases, where the same driver name is reported twice. In this case, you can get -at least the yoke to work by assigning it number 0 (out of 0 and 1). For this -purpose, rotate the yoke (aileron control) and observe the output of js demo. If -figures in the first group of colons (for device 0) change, assignment is correct. If -figures in the second group of colons (for device 1) change, you have to make -the yoke the preferred device first. For doing so, enter the Windows ”Control -panel”, open ”Game controllers” and select the ”Advanced” button. Here you -can select the yoke as the ”Preferred” device. Afterward you can check that -assignment by running js demo again. The yoke should now control the first group of -figures. -

Unfortunately, we did not find a way to get the pedals to work, too, that way. Thus, in -cases like this one (and others) you may want to try an alternative method of assigning -joystick controls. -

4.5.2 Joystick support via .fgfsrc entries

Fortunately, there is a tool available now, -which takes most of the burden from the average user who, maybe, is not that -experienced with XML, the language which these files are written in. -

For configuring your joystick using this approach, open a command shell (command -prompt under windows, to be found under Start—All programs—Accessories). Change -to the directory /FlightGear/bin via e.g. (modify to your path) -

cd c:\FlightGear\bin - - - -

and invoke the tool fgjs via -

./fgjs -

on a UNIX/Linux machine, or via -

fgjs -

on a Windows machine. The program will tell you which joysticks, if any, were -detected. Now follow the commands given on screen, i.e. move the axis and press the -buttons as required. Be careful, a minor touch already ”counts” as a movement. -Check the reports on screen. If you feel something went wrong, just re-start the -program. -

After you are done with all the axis and switches, the directory above will hold a file -called fgfsrc.js. If the FlightGear base directory FlightGear does not already -contain an options file .fgfsrc (under UNIX)/system.fgfsrc (under Windows) -mentioned above, just copy -

fgfsrc.js into .fgfsrc (UNIX)/system.fgfsrc (Windows) -

and place it into the directory FlightGear base directory FlightGear. In case you -already wrote an options file, just open it as well as fgfsrc.js with an editor and copy -the entries from fgfsrc.js into .fgfsrc/system.fgfsrc. One hint: The output -of fgjs is UNIX formatted. As a result, Windows Editor may not display it the proper -way. I suggest getting an editor being able to handle UNIX files as well (and oldie but -goldie in this respect is PFE, just make a web search for it). My favorite freeware file -editor for that purpose, although somewhat dated, is still PFE, to be obtained -from -

http://www.lancs.ac.uk/people/cpaap/pfe/. -

The the axis/button assignment of fgjs should, at least, get the axis assignments -right, its output may need some tweaking. There may be axes moving the opposite -way they should, the dead zones may be too small etc. For instance, I had to -change -

--prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0 -

into -

--prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0 -

(USB CH Flightsim Yoke under Windows XP). Thus, here is a short introduction into -the assignments of joystick properties. -

Basically, all axes settings are specified via lines having the following structure: -

--prop:/input/joysticks/js[n]/axis[m]/binding -
/command=property-scale (one line) -
--prop:/input/joysticks/js[n]/axis[m]/binding -
/property=/controls/steering option (one line) - - - -
--prop:/input/joysticks/js[n]/axis[m]/binding -
/dead-band=db (one line) -
--prop:/input/joysticks/js[n]/axis[m]/binding -
/offset=os (one line) -
--prop:/input/joysticks/js[n]/axis[m]/binding -
/factor=fa (one line) -
-

where -

- - - - - - -
n = number of device (usually starting with 0)
m = number of axis (usually starting with 0)
steering option = elevator, aileron, rudder, throttle, mixture, pitch
dead-band = range, within which signals are discarded;
useful to avoid jittering for minor yoke movements
offset = specifies, if device not centered in its neutral position
factor = controls sensitivity of that axis; defaults to +1,
with a value of -1 reversing the behavior
-
-

You should be able to at least get your joystick working along these lines. Concerning all -the finer points, for instance, getting the joystick buttons working, John Check has -written a very useful README being included in the base package to be found -under FlightGear/Docs/Readme/Joystick.html. In case of any -trouble with your input device, it is highly recommended to have a look into this -document. -

4.6 A glance over our hangar

- - -

The following is a Table 1 of all the aircraft presently available for use with FlightGear. -In the first column, you will find the name of the aircraft, the second one tells the start -option, the third one names the FDM (flight dynamics management model, see Sec. 1.4), -and the last column includes some remarks. Here, ”no exterior model” means, that there -is no aircraft specific external model provided with the base package. As a result, you -will see the default blue-yellow glider, when you change to the external view. However, -you can download external views for these models from Wolfram Kuss’ site -at -

http://home.t-online.de/home/Wolfram.Kuss/. -

Moreover, this list is complete insofar as it covers all aircraft available via the ---aircraft= option. - - - -

Tab. 1: Presently available aircraft in FlightGear. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aircraft type Start option FDM Remarks




Boeing 747 --aircraft=747-yasim YASim
BA A4 Hawk --aircraft=a4-yasim YASim
North American X-15 --aircraft=X15 JSBSim experimental supersonic plane
Airwave Xtreme 150 --aircraft=airwaveXtreme150-
v1-nl-uiuc UIUC hang glider!
Beech 99 --aircraft=beech99-v1-uiuc UIUC no exterior model
Cessna 172 --aircraft=c172-3d JSBSim sports a 3D cockpit
Cessna 172 --aircraft=c172-3d-yasim YASim sports a 3D cockpit
Cessna 172 --aircraft=c172-ifr JSBSim with IFR panel
Cessna 172 --aircraft=c172-larcsim LaRCsim
Cessna 172 --aircraft=c172 JSBSim default
Cessna 172 --aircraft=c172-yasim YASim
Cessna 172p --aircraft=c172p-3d JSBSim sports a 3D cockpit
Cessna 172p --aircraft=c172p JSBSim
Cessna 172 --aircraft=c172x JSBSim flight dynamics testbed
Cessna 182 --aircraft=c182 JSBSim
Cessna 310 --aircraft=c310 JSBSim
Cessna 310 --aircraft=c310-yasim YASim twin-prop machine
Cessna 310U3A --aircraft=c310u3a-3d JSBSim twin-prop machine, 3D cockpit
Cessna 310U3A --aircraft=c310u3a JSBSim twin-prop machine
Douglas DC-3 --aircraft=dc3-yasim YASim
BA Harrier --aircraft=harrier-yasim YASim no exterior model
Piper Cub J3 Trainer --aircraft=j3cub-yasim YASim
Siai Marchetti S.211 --aircraft=marchetti-v1-uiuc UIUC no exterior model
Space Shuttle --aircraft=shuttle JSBSim no exterior model
UFO --aircraft=ufo JSBSim ’White Project’ (UNESCO)
1903 Wright Flyer --aircraft=wrightFlyer1903-
v1-nl-uiuc UIUC historical model
X-24B --aircraft=x24b JSBSim USAF/NACA reentry testbed
Cessna 172 --aircraft=c172-610x JSBSim full screen, hi-res panel (IFR)
UFO --aircraft=ufo Magic Carpet UFO
-
- - - -

- - - -

- + + +4 Takeoff: How to start the program + + + + + + + + +

Chapter 4
Takeoff: How to start the program

+

4.1 Launching the simulator under Unix/Linux

+ + +

Under Linux (or any other flavor of Unix), FlightGear will be invoked by +

runfgfs --option1 --option2..., +

where the options will be described in Section 4.4 below. +

If something strange happens while using this shell script, if you want to do some +debugging (i.e. using ”strace”) or if you just feel nice to be ”keen”, then you can start +FlightGear directly by executing the ”fgfs” binary. In this case you should at least add +one variable to your environment, which is needed to locate the (mostly) shared library +built from the sources of the SimGear package. Please add the respective directory to +your LD_LIBRARY_PATH. You can do so with the following on Bourne shell +(compatibles): + + + +
+ LD_LIBRARY_PATH=/usr/local/FlightGear/lib:$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH/
+
+
+

or on C shell (compatibles): + + + +
+ setenv LD_LIBRARY_PATH
+ /usr/local/FlightGear/lib:$LD_LIBRARY_PATH
+
+
+

Besides this (used by the dynamic linker) ”fgfs” knows about the following environment +variable: +

FG_ROOT: root directory for the FlightGear base package, +

which corresponds to the --fg-root=path option as described in Sec. 4.4.1 +

4.2 Launching the simulator under Windows

+ + +

For launching FlightGear from Windows explorer, change to the directory +/FlightGear and double-click the file runfgfs.bat. You can also pass command +line options from Sec. 4 to the batch file (if running it form a Command shell). +However, you have to enclose them in double quotes in this case as follows: +

runfgfs.bat ''--aircraft=4a-yasim'' ''--airport-id=KLAX''. + + + +

+

Fig. 3: Ready for takeoff. Waiting at the default startup position at San Francisco Itl., +KSFO. +

Alternatively, if for one or the other reason the batch file above does not work or is +missing, you can open a command shell, change to the directory where your binary +resides (typically something like c:/FlightGear/bin where you might have to +substitute c: in favor of your FlightGear directory), set the environment variable via +(note the backslashes!) +

SET FG_ROOT=c:\FlightGear\ +

and invoke FlightGear (within the same Command shell, as environment settings are +only valid locally within the same shell) via +

fgfs --option1 --option2.... +

Of course, you can create your own runfgfs.bat with Windows Editor using +the two lines above. +

For getting maximum performance it is recommended to minimize (iconize) the text +output window while running FlightGear. + + + +

4.3 Launching the simulator under Mac OS X

+ + +

Say, you downloaded the base package and binary to your home directory. Then you can +open Terminal.app and execute the following sequence: +

setenv FG_ROOT  /fgfs-base-X.X.X ./fgfs-X.X.X.-date +
--option1 -- option 2 (one line) +

or +

./fgfs-X.X.X-version-date --fg-root=~/  fgfs-base-X.X.X +
--option1 --option2. (one line) +

4.4 Command line parameters

+ +

Following is a complete list and short description of the numerous command line options +available for FlightGear. If you are running FlightGear under Windows you can include +these into runfgfs.bat. +

However, in case of options you want to re-use continually it is recommended to +include them into a file called .fgfsrc under Unix systems and system.fgfsrc, +resp. under Windows. This file has to be in the top FlightGear directory (for instance +/usr/local/Flightgear). As it depends on your preferences, it is not delivered with +FlightGear, but can be created with any text editor (notepad, emacs, vi, if you +like). +

4.4.1 General Options

+ +

4.4.2 Features

+ +

4.4.3 Aircraft

+ +

4.4.4 Flight model

+ +

4.4.5 Initial Position and Orientation

+ +

4.4.6 Rendering Options

+ +

4.4.7 HUD Options

+ +

4.4.8 Time Options

+ +

4.4.9 Network Options

+ +

4.4.10 Route/Waypoint Options

+ + + + +

Note: These options are rather geared to the advanced user who knows what he is +doing. +

4.4.11 IO Options

+ + + + +

4.4.12 Debugging options

+ +

4.5 Joystick support

+ +

Could you imagine a pilot in his or her Cessna controlling the machine with a keyboard +alone? For getting the proper feeling of flight you will need a joystick/yoke plus rudder +pedals, right? However, the combination of numerous types of joysticks, flightsticks, +yokes, pedals etc. on the market with the several target operating systems, makes joystick +support a nontrivial task in FlightGear. +

Beginning with version 0.8.0, FlightGear has a reworked integrated joystick support, +which automatically detects any joystick, yoke, or pedals attached. Just try it! If this does +work for you, lean back and be happy! +

Unfortunately, given the several combinations of operating systems supported by +FlightGear (possibly in foreign languages) and joysticks available, chances are your +joystick does not work out of the box. Basically, there are two alternative approaches to +get it going, with the first one being preferred. +

4.5.1 Built-in joystick support

+
General remarks
In order for joystick auto-detection to work, a joystick bindings xml +file must exist for each joystick. This file describes what axes and buttons are to +be used to control which functions in FlightGear. The associations between +functions and axes or buttons are called ”bindings”. This bindings file can have any +name as long as a corresponding entry exists in the joysticks description file +

/FlightGear/joysticks.xml +

which tells FlightGear where to look for all the bindings files. We will look at examples +later. + + + +

FlightGear includes several such bindings files for several joystick manufacturers in +folders named for each manufacturer. For example, if you have a CH Products joystick, +look in the folder +

/FlightGear/Input/Joysticks/CH +

for a file that might work for your joystick. If such a file exists and your joystick is +working with other applications, then it should work with FlightGear the first time you +run it. If such a file does not exist, then we will discuss in a later section how to create +such a file by cutting and pasting bindings from the examples that are included with +FlightGear. +

Verifying your joystick is working
Does your computer see your joystick? One way +to answer this question under Linux is to reboot your system and immediately enter on +the command line +

dmesg | grep Joystick +

which pipes the boot message to grep which then prints every line in the boot message +that contains the string ”Joystick”. When you do this with a Saitek joystick attached, you +will see a line similar to this one: +

input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on +usb2:3.0 + This line tells us that a joystick has identified itself as SAITEK CYBORG 3D USB to +the operating system. It does not tell us that the joystick driver sees your joystick. If you +are working under Windows, the method above does not work, but you can still go on +with the next paragraph. +

Confirming that the driver recognizes your joystick
FlightGear ships with a utility +called js demo. It will report the number of joysticks attached to a system, their +respective ”names”, and their capabilities. Under Linux, you can run js demo from the +folder /FlightGear/bin as follows: +

$ cd /usr/local/FlightGear/bin +
$ ./js demo +

Under Windows, open a command shell (Start|All Programs|Accessories), go to the +FlightGear binary folder and start the program as follows (given FlightGear is installed +under c:\Flightgear) + + + +

cd \FlightGear\bin +
js demo.exe +

On our system, the first few lines of output are (stop the program with ^  C if it is +quickly scrolling past your window!) as follows: +

Joystick test program. +
Joystick 0: ''CH PRODUCTS CH FLIGHT SIM YOKE USB '' +
Joystick 1: ''CH PRODUCTS CH PRO PEDALS USB'' +
Joystick 2 not detected +
Joystick 3 not detected +
Joystick 4 not detected +
Joystick 5 not detected +
Joystick 6 not detected +
Joystick 7 not detected +
+--------------------JS.0----------------------+--------------------JS.1----------------------+ +
| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 | Btns Ax:0 Ax:1 Ax:2 | +
+----------------------------------------------+----------------------------------------------+ +
| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0 . | 0000 -1.0 -1.0 -1.0 . . . . . | +
+ First note that js demo reports which number is assigned to each joystick recognized +by the driver. Also, note that the ”name” each joystick reports is also included between +quotes. We will need the names for each bindings file when we begin writing the binding +xml files for each joystick. +

Identifying the numbering of axes and buttons
Axis and button numbers can be +identified using js demo as follows. By observing the output of js demo while working +your joystick axes and buttons you can determine what axis and button numbers are +assigned to each joystick axis and button. It should be noted that numbering generally +starts with zero. +

The buttons are handled internally as a binary number in which bit 0 (the least significant +bit) represents button 0, bit 1 represents button 1, etc., but this number is displayed on the +screen in hexadecimal notation, so: +

0001 ==> button 0 pressed +
0002 ==> button 1 pressed +
0004 ==> button 2 pressed +
0008 ==> button 3 pressed +
0010 ==> button 4 pressed +
0020 ==> button 5 pressed + + + +
0040 ==> button 6 pressed +
... etc. up to ... +
8000 ==> button 15 pressed +
... and ... +
0014 ==> buttons 2 and 4 pressed simultaneously +
... etc. +

For Linux users, there is another option for identifying the ”name” and the numbers +assigned to each axis and button. Most Linux distributions include a very handy program, +”jstest”. With a CH Product Yoke plugged into the system, the following output lines are +displayed by jstest: +

jstest /dev/js3 +
Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB) has 7 axes and 12 buttons. Driver version is 2.1.0 +
Testing...(interrupt to exit) +
Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:on 4:off 5:off 6:off 7:off 8:off +9:off 10:off 11:off +
+ Note the ”name” between parentheses. This is the name the system associates with +your joystick. +

When you move any control, the numbers change after the axis number +corresponding to that moving control and when you depress any button, the ”off” after +the button number corresponding to the button pressed changes to ”on”. In this way, you +can quickly write down the axes numbers and button numbers for each function without +messing with binary. +

Writing or editing joystick binding xml files
At this point, you have confirmed that +the operating system and the joystick driver both recognize your joystick(s). You also +know of several ways to identify the joystick ”name” your joystick reports to +the driver and operating system. You will need a written list of what control +functions you wish to have assigned to which axis and button and the corresponding +numbers. +

Make the following table from what you learned from js demo or jstest above (pencil +and paper is fine). Here we assume there are 5 axes including 2 axes associated with the +hat. + + + +

+ + + + + + + +
Axis Button


elevator = 0 view cycle = 0
rudder = 1 all brakes = 1
aileron = 2 up trim = 2
throttle = 3 down trim = 3
leftright hat = 4 extend flaps = 4
foreaft hat = 5 retract flaps = 5
decrease RPM = 6
increase RPM = 7
+
+

We will assume that our hypothetical joystick supplies the ”name” QUICK STICK 3D +USB to the system and driver. With all the examples included with FlightGear, +the easiest way to get a so far unsupported joystick to be auto detected, is to +edit an existing binding xml file. Look at the xml files in the sub-folders of +/FlightGear/Input/Joysticks/. After evaluating at several of the xml binding +files supplied with FlightGear, we decide to edit the file +

/FlightGear/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml. +

This file has all the axes functions above assigned to axes and all the button functions +above assigned to buttons. This makes our editing almost trivial. +

Before we begin to edit, we need to choose a name for our bindings xml file, create +the folder for the QS joysticks, and copy the original xml file into this directory with this +name. +

$ cd /usr/local/FlightGear/Input/Joysticks +
$ mkdir QS +
$ cd QS +
$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/ +
Cyborg-Gold-3d-USB.xml QuickStick.xml + Here, we obviously have supposed a Linux/UNIX system with FlightGear being +installed under /usr/local/FlightGear. For a similar procedure under Windows +with FlightGear being installed under c:FlightGear, open a command shell and +type +

c: +
cd /FlightGear/Input/Joysticks +
mkdir QS +
cd QS +
copy /FlightGear/Input/Joysticks/Saitek/ +
Cyborg-Gold-3d-USB.xml QuickStick.xml + + + + Next, open QuickStick.xml with your favorite editor. Before we forget to +change the joystick name, search for the line containing <name>. You should find the +line +

<name>SAITEK CYBORG 3D USB</name> +

and change it to +

<name>QUICK STICK 3D USB</name>. +

This line illustrates a key feature of xml statements. They begin with a <tag> and end +with a </tag>. +

You can now compare your table to the comment table at the top of your file copy. +Note that the comments tell us that the Saitek elevator was assigned to axis 1. Search for +the string +

<axis n="1"> +

and change this to +

<axis n="0">. +

Next, note that the Saitek rudder was assigned to axis 2. Search for the string +

<axis n="2"> +

<axis n="1">. +

Continue comparing your table with the comment table for the Saitek and changing the +axis numbers and button numbers accordingly. Since QUICKSTICK USB and the Saitek +have the same number of axes but different number of buttons, you must delete the +buttons left over. Just remember to double check that you have a closing tag for each +opening tag or you will get an error using the file. +

Finally, be good to yourself (and others when you submit your new binding file to a +FlightGear developers or users archive!), take the time to change the comment table in +the edited file to match your changed axis and button assignments. The new +comments should match the table you made from the js demo output. Save your +edits. +

Telling FlightGear about your new bindings xml file
Before FlightGear can use +your new xml file, you need to edit the file +

/FlightGear/joysticks.xml, +

adding a line that will include your new file if the ”name” you entered between the name +tags matches the name supplied to the driver by your joystick. Add the following line to +joysticks.xml. + + + +

<js-named include="Input/Joysticks/QS/QuickStick.xml"/> +

Some hints for Windows users
Basically, the procedures described above should +work for Windows as well. If your joystick/yoke/pedals work out of the box or if you get +it to work using the methods above, fine. Unfortunately there may be a few +problems. +

The first one concerns users of non-US Windows versions. As stated above, +you can get the name of the joystick from the program js demo. If you have a +non-US version of Windows and the joystick .xml files named above do not +contain that special name, just add it on top of the appropriate file in the style of +

<name>Microsoft-PC-Joysticktreiber </name> +

No new entry in the base joysticks.xml file is required. +

Unfortunately, there is one more loophole with Windows joystick support. In case +you have two USB devices attached (for instance a yoke plus pedals), there may be +cases, where the same driver name is reported twice. In this case, you can get +at least the yoke to work by assigning it number 0 (out of 0 and 1). For this +purpose, rotate the yoke (aileron control) and observe the output of js demo. If +figures in the first group of colons (for device 0) change, assignment is correct. If +figures in the second group of colons (for device 1) change, you have to make +the yoke the preferred device first. For doing so, enter the Windows ”Control +panel”, open ”Game controllers” and select the ”Advanced” button. Here you +can select the yoke as the ”Preferred” device. Afterward you can check that +assignment by running js demo again. The yoke should now control the first group of +figures. +

Unfortunately, we did not find a way to get the pedals to work, too, that way. Thus, in +cases like this one (and others) you may want to try an alternative method of assigning +joystick controls. +

4.5.2 Joystick support via .fgfsrc entries

Fortunately, there is a tool available now, +which takes most of the burden from the average user who, maybe, is not that +experienced with XML, the language which these files are written in. +

For configuring your joystick using this approach, open a command shell (command +prompt under windows, to be found under Start—All programs—Accessories). Change +to the directory /FlightGear/bin via e.g. (modify to your path) +

cd c:\FlightGear\bin + + + +

and invoke the tool fgjs via +

./fgjs +

on a UNIX/Linux machine, or via +

fgjs +

on a Windows machine. The program will tell you which joysticks, if any, were +detected. Now follow the commands given on screen, i.e. move the axis and press the +buttons as required. Be careful, a minor touch already ”counts” as a movement. +Check the reports on screen. If you feel something went wrong, just re-start the +program. +

After you are done with all the axis and switches, the directory above will hold a file +called fgfsrc.js. If the FlightGear base directory FlightGear does not already +contain an options file .fgfsrc (under UNIX)/system.fgfsrc (under Windows) +mentioned above, just copy +

fgfsrc.js into .fgfsrc (UNIX)/system.fgfsrc (Windows) +

and place it into the directory FlightGear base directory FlightGear. In case you +already wrote an options file, just open it as well as fgfsrc.js with an editor and copy +the entries from fgfsrc.js into .fgfsrc/system.fgfsrc. One hint: The output +of fgjs is UNIX formatted. As a result, Windows Editor may not display it the proper +way. I suggest getting an editor being able to handle UNIX files as well (and oldie but +goldie in this respect is PFE, just make a web search for it). My favorite freeware file +editor for that purpose, although somewhat dated, is still PFE, to be obtained +from +

http://www.lancs.ac.uk/people/cpaap/pfe/. +

The the axis/button assignment of fgjs should, at least, get the axis assignments +right, its output may need some tweaking. There may be axes moving the opposite +way they should, the dead zones may be too small etc. For instance, I had to +change +

--prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0 +

into +

--prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0 +

(USB CH Flightsim Yoke under Windows XP). Thus, here is a short introduction into +the assignments of joystick properties. +

Basically, all axes settings are specified via lines having the following structure: +

--prop:/input/joysticks/js[n]/axis[m]/binding +
/command=property-scale (one line) +
--prop:/input/joysticks/js[n]/axis[m]/binding +
/property=/controls/steering option (one line) + + + +
--prop:/input/joysticks/js[n]/axis[m]/binding +
/dead-band=db (one line) +
--prop:/input/joysticks/js[n]/axis[m]/binding +
/offset=os (one line) +
--prop:/input/joysticks/js[n]/axis[m]/binding +
/factor=fa (one line) +
+

where +

+ + + + + + +
n = number of device (usually starting with 0)
m = number of axis (usually starting with 0)
steering option = elevator, aileron, rudder, throttle, mixture, pitch
dead-band = range, within which signals are discarded;
useful to avoid jittering for minor yoke movements
offset = specifies, if device not centered in its neutral position
factor = controls sensitivity of that axis; defaults to +1,
with a value of -1 reversing the behavior
+
+

You should be able to at least get your joystick working along these lines. Concerning all +the finer points, for instance, getting the joystick buttons working, John Check has +written a very useful README being included in the base package to be found +under FlightGear/Docs/Readme/Joystick.html. In case of any +trouble with your input device, it is highly recommended to have a look into this +document. +

4.6 A glance over our hangar

+ + +

The following is a Table 1 of all the aircraft presently available for use with FlightGear. +In the first column, you will find the name of the aircraft, the second one tells the start +option, the third one names the FDM (flight dynamics management model, see Sec. 1.4), +and the last column includes some remarks. Here, ”no exterior model” means, that there +is no aircraft specific external model provided with the base package. As a result, you +will see the default blue-yellow glider, when you change to the external view. However, +you can download external views for these models from Wolfram Kuss’ site +at +

http://home.t-online.de/home/Wolfram.Kuss/. +

Moreover, this list is complete insofar as it covers all aircraft available via the +--aircraft= option. + + + +

Tab. 1: Presently available aircraft in FlightGear. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Aircraft type Start option FDM Remarks




Boeing 747 --aircraft=747-yasim YASim
BA A4 Hawk --aircraft=a4-yasim YASim
North American X-15 --aircraft=X15 JSBSim experimental supersonic plane
Airwave Xtreme 150 --aircraft=airwaveXtreme150-
v1-nl-uiuc UIUC hang glider!
Beech 99 --aircraft=beech99-v1-uiuc UIUC no exterior model
Cessna 172 --aircraft=c172-3d JSBSim sports a 3D cockpit
Cessna 172 --aircraft=c172-3d-yasim YASim sports a 3D cockpit
Cessna 172 --aircraft=c172-ifr JSBSim with IFR panel
Cessna 172 --aircraft=c172-larcsim LaRCsim
Cessna 172 --aircraft=c172 JSBSim default
Cessna 172 --aircraft=c172-yasim YASim
Cessna 172p --aircraft=c172p-3d JSBSim sports a 3D cockpit
Cessna 172p --aircraft=c172p JSBSim
Cessna 172 --aircraft=c172x JSBSim flight dynamics testbed
Cessna 182 --aircraft=c182 JSBSim
Cessna 310 --aircraft=c310 JSBSim
Cessna 310 --aircraft=c310-yasim YASim twin-prop machine
Cessna 310U3A --aircraft=c310u3a-3d JSBSim twin-prop machine, 3D cockpit
Cessna 310U3A --aircraft=c310u3a JSBSim twin-prop machine
Douglas DC-3 --aircraft=dc3-yasim YASim
BA Harrier --aircraft=harrier-yasim YASim no exterior model
Piper Cub J3 Trainer --aircraft=j3cub-yasim YASim
Siai Marchetti S.211 --aircraft=marchetti-v1-uiuc UIUC no exterior model
Space Shuttle --aircraft=shuttle JSBSim no exterior model
UFO --aircraft=ufo JSBSim ’White Project’ (UNESCO)
1903 Wright Flyer --aircraft=wrightFlyer1903-
v1-nl-uiuc UIUC historical model
X-24B --aircraft=x24b JSBSim USAF/NACA reentry testbed
Cessna 172 --aircraft=c172-610x JSBSim full screen, hi-res panel (IFR)
UFO --aircraft=ufo Magic Carpet UFO
+
+ + + +

+ + + +

+ diff --git a/Docs/getstart.pdf b/Docs/getstart.pdf index 6b0d2a4e04c42d2042382ceadbcb10d8ebbd2d45..22ffa6a49dcc0778a76510965b82104721a00ca0 100644 GIT binary patch delta 8382 zcmZXWbySpH_xE9Fh6d>tB}8DD8HVnXZV5?2M5IAV7)n5pjtdE;TaX;OQ;?Dd=@5_* z0V&~~d7fvzYyIwf);jBRzTdsi+1Ebj{4u-vke~UGpfKz(P#8`vu9z`WF_VPnlqN~- zFG-R@!^JggCYikZn;*aSWE<@zkQMvnlY`Du%pV`Rrg_?q7O?Ttem4|65@Of_UL+MT zm5P`I3G9ka(+nv@(ZfXZBXenVlQ~n}Z_JF2ko)@EzS1nCuYot!z+gMi;Rf_@x^wmo zheT;O!q@1YiIZd>PKXe49p-aNWIGJ9PU0Y{v1VY2S)l0i%awl9bHq3(a``#xo^^dj zVzw$vicGIweHFp*r#}zOlY9EA^^&G0SCg7bk4fmn^{^E8yexW--qZ%m&A4$#bD25P zG{6S!(-Z3VlI#C=eD_QtHQDlv-8fG&w;evWE)6z%L{j1LEz+14nI2x-dTI@Cs_|Fb zn6P%`)e^ziKs3qH$>grC1WhF8?4|w48DO1H2&V1{nyS|+V21|(D3(($McmPAgiwwe zY20a|?DDa$H46sK-x1c(n*t$595o2DXCzwNoZINfMQW)d?;c`v=Q=r9ux>`YkVpyq zwO8C3daZ1qHi%D+Wb9NXlX+oA;ops2Hx*{6tK1ZoOIbM-T8eLRwATBGTbv!KD-0O^GdUJJYkaK5f7H0_-LXI!zNx` zy()RT*$tAeMZOSdC|lh0V!W#h@glP1jGk#x&y$&Sf^IhU&kwKla_Zp65o$ z;aoDN1#uBPkhfF5Y*$`x`|T#VwjNDs?@a&BB{+N>LDGLk8DnzxkmaE=Kw$ov>K$IO z*tPJOI_J{XsI*GxaZ^*tgWpi>+SX`R5zYjzYvADSa%AL~Q;+h^R}AjqQK-)Fb?91@%vh!Cf;u4xCras|M zB7IIx4&SieP~aq&xMs+8)SOoC*vVFxyEsqug!dr{H&jC0#^qK)sPY51m}9KsvPH5~ z5zw>h{q?OZvsy;69JlDca&H6C7j~qRU95B@qVGS7oS!3N+VyAcoNYZk-R-QM zi0vXiKfy&0JoLav4+8WcL=Pg==O@HZ$FaqLU^y@^QqR$VdWIH1p){xbSntu4pE3PC z_ea8=6ja3Y?7@+`$w!G1J;PxdkDj@v$?CCkN*C*-*il9c_(nzPSsPLolP8=y1@az)cH*%V@u0h)ZqaXol4F)3kx3XeRav26Z$P#rZwuhW$44#xyVno=k`R-PKw zOW8!7cYPnmxOxplSK8lLn}2CGV3g0-%MDt{*FfISR_qcjgkaI@j?b34mNLmZTyWcJ zJ`@;tfR)kAzdcUU`g^Z(ESItSkmN~5?p;dIfGa)6=aNaDjZdNspgi&Y$?{}_=Q;(1 z>J#i8IHrAT{Ql8-B~%7+9o9T01~@75Nl_YWg!tNq@)wAbP?iR9c`A1A+rN(7N!G+P zcQ=vYG`OxeR@!}IY!ExD;9WWXh~8CMnuPg7tzY`-Zz1={@{Flgj$494*lF+?;fe-5 zI1CiB5c+W(MQz?^HA0#B61gacd5DxI-Qh*c)!xB7NzgTL`(E+4`w}>G@ty`7E3CdX77ffc5-lb^SDXErItU^dSsc z1Z$GH9zUJ?Ui*96>%pPIwc4fY%}Kf$!cuBbYiV-azWRdd6$^i1FOX%@NcZ;o@OxL; zI(f)1zD0uoU+2Xe``Aj&lWB?XgD59;Ts%ABGNyZNg7$7{euhW_Qt|kfF&c9|V@iQc zvE@BKTVJBj=VLPkT=SKUyas1O!@&Z`LaUB~jla$g&PHyk$uJw+r7B_qyRVWlF0SzJ zR3$FvGr6bT0$cC*W;VpRX1v`4qO+6xTHn>ZeOgK1E-)|l*Wo&vu61;oX3UJ05Bh{Z zQ(Gh2{g3p@$E_{to|oHWpDF{MdA`*xZf{VDx>oRWN~NoHxZPj=I48-6GakYuhSWmD z1#Z1qn>YaX*Is?Oy=S(4q45P8I97@huXO$rCw!~B|g`)atJy7&F2Z0nF`m6_$aY=FSGV1#u2O2gQm z)gSeboorEe-^FyRw9wj`kvqQ!T9DDFvTd;LE4s4ZIdyNtwGQW#`VP1G=Lm+NQqw=x zr7fsUYs?*e_|xkCq-Ebw+8TcFJt!&OkuYS?CEQ(`T2A;p2YOGFp?sU8tOy(-$qEgzma=FFI%kN!A@vp(@pkqpgy z>o$t|$!6d2HD%tE8~>+m8*{d*J5-FxE_PY%qxjRlt>ln>szkT*sln1U)mQb6_7}W@ zbncta3n;*r{8FDxUO@IoPR6;By(3%pJzJqO^5>+R%~rPycdYl6`T7D5U&ZXXGgp#q zdtZC@=@%xpz9n7G5Ph8DJmx*}$Yqx=%l>f%`HAa--!rei?L|Q?I+$~PnnHPEc;~Wl z=>p2qyM>X;q3lh)BGJj>wo0Ca`=_PRFP3seE%py*q;#zHRk!Op6+&=R|feQ zm}LBwjlPxL`EC33?~8%-tZSgqM+Dk7rXVM9xb+p{l1mZ!nVM`WA?DMw3_rT*AO%_zK#F%JK$47#!>f{_p&Of~MvpKt~;t_{mzqb!uNIas&bv(WB^!=+2@~A$<`F5A9tMx49 z*C0ex$supThqfCf{Kq$$`zR z3d$Lb?+8~d!oeQymxa-Qqa*91Q)hGOaYY|?gB&In41~kfT=hF%4;JEeXcAK-2;Cvf zrq6XkQiMDXbrrlNH+#_gH(%bGLeNb&uu8XG{Wq1h^=>6D7vxct91o!)E(M?IBhrY} zRy=u-ae9OBP@j){+9*{oF^8;KxYb)W{!m;Fp}sgAh-40~X%|O=RRK|phdS-c#?G77 zW^c2Hqn^BUU7G^47)yEEzi$maq0<#6k4=hX92QWrzA(r>=Z@-dIciQmw zAkVN#7-P1=9-Ap%=+V4UoSks$ZoU+W4gSR-8&9%E9dW?^dM5Kcae5JI(l)gmkYiV} zbLR?`n+<+^)oz+3<)fi*JVVW1&+N1{^3ky3Th>_mY+9~JGP9B0&!4|DqJteyMsx3j8X+7bS~vZ~h-=NJNqvUi zFXc%Ts}cDZK7wE`Bi9qg))4_zJlhbmWb>i21V~)WU~;;+!{dygGQ=RGud0=j0Gr*S|%QiJvW zb)fQsr+5oYE6;1T0Ae4bGQ;69S=BKGX5u&z6`?);D^AkdJZ_L&{`04Lv_RkQx;D@le`E_Fmn6x%V>ZllzSToz|lw z3KTWhRuZ|T#pvXy%LwoB^ohAdq3P|nr!guY&wl+z8Z`%SW*CJ;L3CZ`Rr8z+6WZWn z?q^Sah0`=g-aJhbG1~Kcgr}7up<2ZHoI>M-9O?FZo8U})_=!p^h0LNpoi_3nx1t2X zq2Ie!T(P!&lJvY7$=dd;PmkWTL|t|Jc1m7yVomn2ZT9w85TyOdUA|7i+amJ$ZTA*# zm)Q2GmW0E$O+ihvE$&>-^*8B)5nHclMi)u=&71kbO5E&vEVau~_VtjjfmUO+ zm(h)Evz5IF$1o$kZd+w&f<+aHg!=(6gx7=W>SzM8bbsk|d+i@RxAdv)O5u}mBjKBv z;3aJma-~SGKUhJQ@u~c_#-20d06fZGCy6l;bR2zqXUn`$w!D?A|koacO z{%G+VGf8|N{n3cSp9ZNGvRdzyeA22dlSyO1uWROJ{(i?#Ed1D8<^AmO*iC=Lc~J+O ze2`$64^KGP@fhw}J9Y#(uLQ7^2EV~K)>eCLWCZL=gJ1k_jxv=2>w=K}k_NtPv`miG zW_yWY;;M>UA#P659F4Kfi>RktBoPq%bOvA$PNgg`2v_1XP#gTjrN&XFlV~>0iSiuR zGb#O(T_3Rj@$hQq%6If)`}N1e-~NH4zHRL?fl=-vXD`AHdceYR^vrNjYBmAA$y_tV z5f*lIKMx;c6?;6+T@vKec$^(fWb?CdTY zvK2hvZW0pb!32iTaIE4hJK?it<=1`{W?9 zd-8=_5|(%t$)(_+V9`mO^bhiHjh6J0GSDELDy#=##8vcVC099jJd7yrkR4fmhpz{D zrr8V}6)FTV%27wpuvfsW>WP?1be*iodI_?FJw?4l`0@55wvp;iDmu?JR!EoEq#pb`OhDlU`QAIIW3%DV)*`G8?uDo;a;z-kDy=TBt zlw_^UYfF^47t|XjmR^W^1MD(eYb)=%6w+RUm`g&*E!lm=&*84NP4EuG7e-W*pkmRJU;uvDf}+Q?`VI!V*r zqLtcu8-}LFZT{+AB$4$jB;~&iBC@FF(y4HO@B?L(en4T&?>73knB`Dtit(3 z@EcEQC{#P)foO%iY0Z__Oo%x?qi22JZ8mLN?{+7?$fMepj^Jqj zG90@F3V6;wUra9q)n*|k@r%jN6l0-T=P(!kvLU5+nz{KMIwCpwV?H@C{Tb@$%HfkT z&b_vAB(-z@U}|r80H^Nhoc_$cWpMx+$4K#?b2zF;q*jb8u9O5elC7ZL`654k zIZKY|o-p@nwm}Lp%pxs+`W}VNWTwuJxM+$VsiofS za*n0y(E@}G3-dW2rSC6fhGd2zC3@2+w^AR__?#gH#|%0~tLLd+`NuX^eO>pUyMN-E zz9m%n=i)teTcPiYYFBzwzoz3Cnj-7RN;i(p)i*)vxnEuG!(JXUwfOJ|lg%>h)=RGp zPb2eeU)K4Q2Klkn`p6!RjUC8wNB1@Z->NH5u&nX+eOmD=JM*{Q5!EhRtB2)Zn_yDl zYnz&(?4g*Oq&yv_=Gh6i^X!hL59E<;7ne+b&ajQO-Lv(d;(eV$l(w6QYkJAO9X`^S z&;y)3FRQp{gl)YhAJuO9EPB^c17b1JbjZRPUwaxm2dUF~(V|}1?-zsDX|lPIQG3Hk8}3F+~0>H7+y3Sr0aZalMlVS z3gN4>69E+W_bB#Av=`ne>1eIrWmsxCux|g^ke?qD>PE*tk(F#F!7~|^!7n42-i92k zSvtrAyWG~j^8M~_;dETEAd@7}^fL5z!~gV~$%oVZPNJb56BGf>hMI5S$hKZIDfe>) zZ{{zusb{+=o0OCT-3hH9x;>!X4?+fU7RHyqY+=Oj44* zG&%fp9&gG#csAwjt34Dp#H={aoKB1kjWcSYrii?-eJ9$>Eo#9^bid5yy|1vn{&QHy zdvX@HTsHT5dU9LBuv6ueCwGz)jPThkvlt&6_3hxAo4mFayDeASbWF(LUU5x3N24(!PbCRkBgc|zOIc`_c5PO7EjL3BE1#d zzyZ`(A9iDjr1=D;7@B@a$1w4|GAN#;GhKLoy-n&m>hCOx^tjF{zi(V`Kfk;w8&&Oa zD`fVgB5+UAH~MC-4nn;XXxG~inXJ)Ceh?tPe9I~_;_wwdwJPCPb??X9r3??Zw*Evz zyUeYv{wa(8jcC!AHOVY2Y$6*!dyx-Sd2E4EJTK3Ix3Cx)qoL+iItiwaa51)l{nzWO zi!({-ZcBrCJQb7T?KbQlwITZ@X^{y;>Aa4KWx-kT;%&&t<(yT!0JtzP8#R z%M+hYDYAXt_w--gaG$mw1fg(7@%wR{U>OHfe28IfhYj#M?(zI!$1Vc z#Q+K%_y2dj`~apT1V|hJYXgQ55^~^Z04#_8Lg7Jl9=cNu#DED5L;%h&|5@z*1-%F& z1ax5}0-zc~0|wX(p z5CPUOfC9oJU`-r|kPr|ug4PIN0s|PpIf~vKePHgRXekVIVE_fF#?XKRHW;A$#Q+L` z#?h(hqtU|<-CFKA+7<(jF%m8W$WNdp0!YLF2CPk>T?7OW{)U$5L&gAou^0#goRerk z0e1}GKoY1JxLyo1I1j3g}J$w{$Ls=+ej2;C^(pX$I_#xyV`YJmwV0 z=D^X|VyN^vup@{U&Mt)cu{*O9V~BtWiNRt2@ZeAcR0t)o2&TeAKM$1rDj0>$EBucn zC_+T&U!Is46#YKe!QzgU0^*Z1ifx=%LeiooHKn2}hK*mXFPridO%2Hib=p42}K zJkd{2u4LfMk()#l8*>rfWB$h$ORS~ID?xBs^L5c5138*O zSY381q0aI{-2wiul8^2KkPkjw{ki)bc70?9By}23o@QsN^wf?cphX9jWFIH8R}44+ z(wCagYQZ+m6S&Qn6eRfgDJ8^~{YqrY=i_gPv)J$|8lnVn(+QPSNg(>IW$%Vw$3Aa( zQa=8gybn~kLPS0O>78v-Ic?)JD?0^@*3}meQgG?GxzkY7XVhB5WK__xfj7@hKn54|l zvkW3i)WUG89X+Av|H;|^s+`ZyRgqu5=6l+FbxQYzI}3K`m#N2JFdc@2>XF$pE)NB! zrhzoTD5=-Eb>{DsXD1`qO$qbMnXi7-qQ4}3W&<Sh`9=tzPRlLfswsMx+QE183UP|T{M3$QL%ltV)K|C8-KhutDqaBRLn;|! z#__oh94<*y3IVanJJ_G|?6(^ftkwx|pKhBF5Hz997QXt{d8F3shcmcYdiO=DjiCJK zHz2}_@>m>kF3FfOH=|{lo=cc_V0qf{LfdG(s09AVwEz)M%@fDH603g}jLB;cQL5R3 z`m$+FHF)hBh2Kv&g5Sz z?vGmWZ)(DiK;D*hvndKFK`dP!$B59A!d0DG^1hNw)3P z-!u^D7`_MXoY}36w4> z#O(Rum{>|N%H4b~dzP8JHN8cwJlR|@DDVZ!hH7J83o|GymsOV&Ok))Hpq{*B(5B19; zyYUd4>7ym%&JW>&yyV0r@2RTEpWXn1_fFvu;eOWKQwJ-QPnrXIU*>~ zNxGCTig>2Pt{P#eU1~$}SdrZXo1sMBMqvzxqn@!MyCo5Gwu?bDhfwhmQ8YH2(!+3) zrvfkZO_MXYN-42#kfKFe2w*7km{_0sC@l%0j$fokpg0qR(Wyb?22=5WsV;O!@^~sf z+IePg#(UKMivPpyd%%sn{+0}{M177@l(dK*XJgmbRq)0*i~1FLrDKq>!oW<7LS#v~ zZO3|rO|3~wZ(;(u624+0LB1|#u|+nf&NopaEfa-562&jM<5TcddjfBd>kS6gBwtV> z^#1tLSKry|^k&J~O>*6vh`wm}LPH;!R~9~eg6Dk?_{qOXo=8DP z565`OZi;WiT$a|W1b)$irRL-vPT9?$e784>CkV?*1jn}FHioA@kPI#gPM%-OrKOMg zK};+nZ1XhG{{A@;YsXHF&#gv+O5$rXgefKQb9dG@fXs`?$obhlmDsX;4v%2E`xKKd z^s}8raa%kkM=O68+NPG=ynBtZ``v#qfV5N_8gkeChc<`r{W|k&ej{;v4;OLzWkbAw z?A-<_H|MvtYBuhww?Sqp9^wP0OF{QW&xKFp{?%;OS8#i(sjuAFN zg*)BW%egC~(q86t&vLt~ir!Fvt!VN)nMq!*(_#*#{Zhq#kx!|izmOi&`gBC@kk&H$ zIeDCs?fbpq6RHb2pD>U7hSeY1Up%}h>4%HNB_4%|>{S1F;DEr7@?rC+;r?V;t-+Jk zI({AWsEN=tba%%w?!?QJ2)Gpw&WlF~(?1n!T@xA{<0p(yReCE7H~v;s`Z(_#R9Rxy zeOCF?40^lU`=av?>`L3^EZd^}iFVM2)#75xu}R$;u%C4W{m~o0y5p5F{XUxLWoGKn zScaM$S$r&rjCAym1NZWSdXW*&WA7Q03j#fP)2bB>yUgtm;kWzSVE!1YdDs+d)JtooXYzNFU3lL+jbkruWc?g z*Ya~U3r1gasfDjYJo#47|3^D_F?pMHM`#IO*+Fb}UsKA8 z%IdRaAwn?i^F>K?Z?mZ za8Z8dd(_j&o*aBWbtb*mGd;I*t2)b4F228ddURY#6YpQ~f#BdzFdhzK+V^;eyUDBJ z&3UBj!M$Fs147!os|2$9tdXd-cDZ#OY zT1=iQl$vEMg3Ng4v^}4Upq%S;y4-#_*L6v<^(8NSi6-%<%6*=jU;bLoCs|bq)c!X? zeVXMdZR+n1w9>0aCVxKIae(=y3P0tW!v#w>gyXdJ~^66QrnesGrB(i z`PHQR$v!Mgs0NGq;%cJtO-Sa250Qyp8I#_|WHWf>wz+z;v#n4{1mU2JFtus>NwHxj zAROqy%xWMp?P>Y`dD?wnS3~G5(}hKaV8b1k3Uef&vUPvalh^ApOt8`oUbEzhzw=Ju zOQW0T!;^|ADT%x9zn?!YsrdfW?{??vDjmF|@H`aLr!BzRqKG4JGb>q9`TO3>vWp%W z+l4XguuF`fG4bcVgUN{b&m~|AfTSF$(xLT0iFru}mb z_wT4&<)sxN^7adb6`uYKy2ztOW=DFozEO(J0^N=*9&*w3U1mv?vya27~gN; zlq7Drq#&@<$&&_vYbYoZWT301^vLwSqL!9A@J$0m1!TiO26+E@aw2__~4unocF z1NWp`v#HsGy_Ce4%Qat_ZXI%tXG zu{bLby;AC5@963FO|&P2ACoKMgn*B>Ho&4edqnh6l#y~qnxmrxg&cpo(GnqTHBwUnVskeZdEmF_^ zzFZ2T6pv8kj>Ps}GBCA}OURaG@yXMITh2D@Hp>xO!;%NFKP&Ou%J@bwq;@ObgbzmA-q!@jQK@1~BomWIJ=yGys7>z>pxgj`XA^#*clpGd z0eMAY&GPLF&eS5Q>9-g)0w8bguJMahMwX-P=o73b>=mN)?i~$wPB&6wY6)ug?|u@R zB8c(2b4nXxi0tX{dM_tEIGg_nzfp)`kWVAV-OT?|+QBc?&i%KR-B zc%bq5U|+F?rXX)wClfhOf5gX~^f|DhiBp~WD%OZ|&B38>+to_ET`pe0f%U72n=!S} zesE1&xPY!_?Kc@{;W3ZphdnoM{s-2r2RCko=KL|M@ezctgELxKJdLlKv-)ZcWvUQ= zkxsj7L0eZm+Fou3ujpIA4e|7q!7XcjA&5t#pE}L@Mq*v-zRk~?WR!t)I?8~3fnuGB zhlMpdB~yNJM?-dqMJL7*+q@ZCH#M>^Wqf~g-VaUZTuZCHO;%scS{FcM^7t4iJ%#KQ z*>6%f$j+`9rv6}UQu*+CSaSV?cTgZ=xNk)^Tl#@xJ$TLIT=n9HdbqD9)E4t^?r~{b zxl~)kVKI^k0as8qAyip;?)3H0W6RKiB`8EKC+n}!eU02NtM#>6?(aW~zh+J0v~|yI zlrNtjHrr)XyjO`l_ zBH287*&Q{DG(cd=((M~%zsSz`peG4M)y=dnhh<#c)^i;huZml zi)i*Tg~PhNV$bx=-+!BuF->wpWD!g6S65ep<1*LGeGT7gyJ&?o$T7@Dt&WkD6i*CD zsp}^Xs#ba0?{34K=z>avE13;G-Ce~lZjAlG32ZOTlGDmD4vz!ZAokP>{rglbL9Unk zR|O>Mv$lWxd4)#j&h&pDAboYU5L3Z)U@P6C$-C%e`o`n#{SE<9Dw~ITqGCW?d z+ezEgcWTebv>JGLIlJtX_o`lP`_qjs{}wX$@ZMSWh&GN}=$ex$XFm}-1R~RFl>t|- zg*vjEeKKPY&)Fbg~wK5Z&=g)OV zXp7A6J&?}~0*3^=EjZ-}@)jJKiMg(IcedC~?QN|Y4rH_a6G$AOV~o2Y7cy{1cbQ90 z9>d1kJ@H(YR`nMD!n_awY-K@FL`Ei$RdrNR??(Oqz8bORP_M@Snn(*dkRBEyP}(q< z)!5S_Iryhpk}iJifFS*~&?|f9Yx{O)F(-I}iz5R3-jRffV~; zzeFLSW<%kbU|r;OGotO#`fx{PC-)?@ZS3$$X6Nem_L6^KasDIYB)QH2j;*&5q3H`@ z8+(VtM;+KWf-Hr3Ha)N8g%d;(uOA8*fyjM*3BvQ+>Ezk4o(oyRT7>mLg&6egf-Fqu zzqhe8RHOhkv+#V@o>ygTRMl8btM6FLAL25E%P2zLE9A@t!ZlSHI8_|MqF+T- zym+C@dq-mMu~+Mcff%xj3v%If#Zjv8ns}Er(~JI z7*O_Qk_`*41NGTuDk{NThl?_b4cvmJ*f8L}CS32f2Tjwjtg)UWV1^MS`s{d0cTyF% zxK>(oO2_T|RO3Cm;d{fj;r9+5E_1=jYHGUGK*RtxGHuQPLJP?&RXgiRc8!n(P-HS{+J)+L(G9 zr?4ML8M*fpdj)6_<9n6}dDh7qA2LFPsP5Ahiu%m8@i`02J`%Wexv#1FU2i|W=cb9= zjr~z8@sHKdZ~8b#yBjxSLXq}@#pWv0t#l1_rSHUgT8>`sxefQbav{zb{94RZVy>jw z8@DXxqdCSe3=w`A3CE}TFMI3d+5=M5hx~eX(O+|xAb*CQI<;%3oaX47E;EGJRIa07TVbV#U#^I^wttF_ zPUy)qo0W$!_J!M@iazF(_b%e63B=Eg|6UgCwH4I8-qr+LTz;~12V}?$Sl=5mrNYl7 ziLZ%+S}L+NTYZ zt6Xr-8<0Q*b)CT%YUitU;I*>Bd(BE0Q8Cj^b~>lp_A&xuG7;%dQWZlM@%4qx+eN`8 zYn2ZYGG)R~nQk7k;VSVPw#HS753CZ%?e_iBUkUfvAO?jDEH37k*+D6umRmPqUkcf+ z>U^%1ahR$$G|3JdA>+ZmK8%+o%g_yFdn`*BoMeF@=(0@oY*7HMfkuF-?^3g7RHQ9Q z--vuNIB~0|iUqg$2MLl?uKhLGly{K^BMj_TO(7AgcNaHWxNZx^=89fpHRAP6h+kci z_q3nv`vukK8DX=mPt{YdMk8O1w!NeyQ|`g~qF^C$ znY)1SPf4hx)!Z`q_>z`vmxXarMykUfWI+Q|;v3rSbt2qhYd zRQ58xF8p5aW-L4E6=7Se_UChbM_+D_ObRZON8@XXwdlzbIr`lznZ+d1%Nu`XkRP@w zyyUc<7^-&=2bA`IlK&(oTZ&TFHU7)Vuv&X-+dk458TtC=bh;zWKOJK{=76 zHpD{V>aRkdn_IU7?*|vsOPd-2Av~78tE6{>7keK*AI~E3c?CZ>S+eRT-ru^C%+(YU z&&eZOdB!Jprxapt!u~-h%hNx(m)YMRPo&iQ7CPKUBxhE0S z+*7xxWH@*kY`I~m`sr3|<7(SXw@n(I_65<5>q z-*A6aGuYnlH?mgU0ZF+dQy7?8#W#QTB7|awoq#c1f8PNjiPv(*qhG!;i7^2%N!E^^ zAsfG@=aMs?<$SlIHh0ao2EUUu>pa#~>ruo1ngSb~?Vv8w9x>A4*l)4K@x+tU4BGJc zgy5HCp0eid{k{r0)E20xCVPL*L>ZNQ#zkDqyG4}bcNHj@td5)w3$oGP?6&r1g7Lg1 zOIWrw?r-e5&zLLBLbBjNKx&hzrRm>{eR+4(d1JkfK>hynAi`bvJAQ2__zr8lH|r0e zrvZw>GuGDDR?-8OH9&6v`!`Zc6U2gtyG1=c14BO51GNg{q-N;q0^o2^B#w@rsVN{I zf%>Mu7!G>!ABjZCV`*$rC>VgYfvPaYfXz0L4ki?Uwxb{lM4}-EOrs$VaCLyRv7nNG zZwE@kfF3j;0CgwIm4E~GohS(g>d=q?aJo`Ui(SQPVXov$i{U}HP zhG;;6A~e9jY5#xYl?KoyC4rQI|IFP)LkxfpqJU}>4GCZx4Jg1hgaR1w9YRHj!hs&N zgaOpUC_n)FVU!Dz1nSUI6u=olNiZBRL{kja=g5ETQ#8PU(kKdIKnfaAU=t10Mt=oq zVT($_fyl2Y4FjgpfB;-$=uD{19YaY`pa%t@unR;1aE*iHP)Y2^Q9i0yG{6AP1iBuo zE}E#eiY8FD1aOL$P&lA8iIOlN1q}$WIf-(`B?0IZN}@Ix1we5Wm3ngum0A?wnnwAk zhEV{-zM}l;X_Sv@dFDU!?a>ee>d-)SJo}%?hO_@&KoOd#1)R=;`cY3?=0E}HqnrmV zqPK&50ThoZfy`O}xnc2(v5BHTY@TdHXi7juC1H?%crY;u2plQ845GwET@a+wHxLq& zU-Tc7#3aN~Y0x?Te=;#iNioz7-2gp6_iwX-S_T+7zX4*x!W2iIZh`RsU0)0;35WkP zjW`@Gisae_VPj%Kk$gWu8(5eSB=J7T2@?}_2@gQLm@s740Z0)GQxv&=2x`VcodPoJ zHz*lhNAwINf`y8+xd0*1aqCxTUli$k0}{rbTL6??T|iGRjIMa9AY z_QWJ$|Hub}LSX;9ONjq>bTDzre-(yFi2kcEOacu5=VD+IVqow;i%5t`{@a7X|L>JC y5tR^!!bPF~2o{$Fi~aK+p*)HI8;pvTgn<9;iAh2MYJFl|0#PDvZe<-6qW=L)mKFa1 diff --git a/Docs/source/takeoff.tex b/Docs/source/takeoff.tex index 45b4472b0..2f004939c 100644 --- a/Docs/source/takeoff.tex +++ b/Docs/source/takeoff.tex @@ -1,840 +1,840 @@ -%% -%% getstart.tex -- Flight Gear documentation: Installation and Getting Started -%% Chapter file -%% -%% Copyright (C) 2002 Michael Basler (pmb@epost.de) -%% & Bernhard Buckel (buckel@wmad95.mathematik.uni-wuerzburg.de) -%% -%% This program is free software; you can redistribute it and/or -%% modify it under the terms of the GNU General Public License as -%% published by the Free Software Foundation; either version 2 of the -%% License, or (at your option) any later version. -%% -%% This program is distributed in the hope that it will be useful, but -%% WITHOUT ANY WARRANTY; without even the implied warranty of -%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%% General Public License for more details. -%% -%% You should have received a copy of the GNU General Public License -%% along with this program; if not, write to the Free Software -%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -%% -%% $Id: takeof.tex,v 0.6 2002/09/09 michael -%% (Log is kept at end of this file) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Takeoff: How to start the program\label{takeoff}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\markboth{\thechapter.\hspace*{1mm} -TAKEOFF}{\thesection\hspace*{1mm} Command line parameters} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Launching the simulator under Unix/Linux}\index{Launching Flightgear!Linux}\index{Starting Flightgear!Linux} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Under Linux (or any other flavor of Unix), \FlightGear{} will be invoked by - \medskip - - \texttt{runfgfs -$ $-option1 -$ $-option2\dots}, - \medskip - -\noindent - where the options will be described in Section \ref{options} below. - -If something strange happens while using this shell script, if you want to do some -debugging (i.e. using ''strace'') or if you just feel nice to be ''keen'', then you can -start \FlightGear{} directly by executing the ''fgfs'' binary. In this case you should at -least add one variable to your environment,\index{environment variables} which is needed -to locate the (mostly) shared library built from the sources of the \SimGear{} -package. Please add the respective directory to your \verb/LD_LIBRARY_PATH/. You can do -so with the following on Bourne shell (compatibles): - -\begin{verbatim} -LD_LIBRARY_PATH=/usr/local/FlightGear/lib:$LD_LIBRARY_PATH -export LD_LIBRARY_PATH/ -\end{verbatim} - -\noindent - or on C shell (compatibles): - -\begin{verbatim} -setenv LD_LIBRARY_PATH -/usr/local/FlightGear/lib:$LD_LIBRARY_PATH -\end{verbatim} - - \noindent -Besides this (used by the dynamic linker) ''fgfs'' knows about the following environment variable: -\noindent - -\verb/FG_ROOT/: root directory for the \FlightGear{} base package, - -\noindent - which corresponds to the \texttt{-$ $-fg-root={\it path}} option as described in Sec. \ref{generaloptions} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Launching the simulator under Windows}\index{Launching Flightgear!Windows}\index{Starting Flightgear!Windows} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -For launching \FlightGear{} from Windows explorer, change to the directory \texttt{/FlightGear} and double-click the file \texttt{runfgfs.bat}. You can also pass command line options from Sec. \ref{takeoff} to the batch file (if running it form a Command shell). However, you have to enclose them in double quotes in this case as follows: -\medskip - -\noindent -\texttt{runfgfs.bat ''-$ $-aircraft=4a-yasim'' ''-$ $-airport-id=KLAX''}. - \medskip - - \centerline{\fbox{ -\includegraphics[clip,width=12.5cm]{ksfo} -}} -\smallskip - - \noindent -Fig.\,3: \textit{Ready for takeoff. Waiting at the default startup position at San -Francisco Itl., KSFO.} -\medskip - -Alternatively, if for one or the other reason the batch file above does not work or is missing, -you can open a command shell, change to the directory where your binary resides -(typically something like \texttt{c:/FlightGear/bin} where you might have to substitute -\texttt{c:} in favor of your \FlightGear{} directory), set the \Index{environment -variable} via (note the backslashes!) - \medskip - -\texttt{SET FG\_ROOT=c:$\backslash$FlightGear$\backslash$} - \medskip - -\noindent - and invoke \FlightGear{} (within the same Command shell, as environment - settings are only valid locally within the same shell) via - \medskip - -\texttt{fgfs -$ $-option1 -$ $-option2\dots}. - \medskip - -Of course, you can create your own \texttt{runfgfs.bat} with Windows \texttt{Editor} using the -two lines above. - -For getting maximum performance it is recommended to minimize (iconize) the text output -window while running \FlightGear{}$\!$. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Launching the simulator under Mac OS X}\index{Launching Flightgear!Mac OS X}\index{Starting Flightgear!Mac OS X} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Say, you downloaded the base package and binary to your home directory. Then you can open \texttt{Terminal.app} and execute the following sequence: -\medskip - -\noindent -\texttt{setenv FG\_ROOT ~/fgfs-base-X.X.X ./fgfs-X.X.X.-date}\\ -\texttt{-$ $-option1 -$ $- option 2} (one line) -\medskip - -\noindent -or -\medskip - -\noindent -\texttt{./fgfs-X.X.X-version-date} - \texttt{-$ $-fg-root=\~/fgfs-base-X.X.X}\\ - \texttt{-$ $-option1 -$ $-option2}. (one line) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Command line parameters\label{options}}\index{command line options} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Following is a complete list and short description of the numerous \Index{command line options} -available for \FlightGear{}$\!$. If you are running \FlightGear{} under \Index{Windows} you can include these into -\texttt{runfgfs.bat}. - -However, in case of options you want to re-use continually it is recommended to include them into a file called -\texttt{.fgfsrc}\index{.fgfsrc} under Unix systems and -\texttt{system.fgfsrc},\index{system.fgfsrc} resp. under Windows. This file has to be in -the top \FlightGear{} directory (for instance /usr/local/Flightgear). As it depends on your -\Index{preferences}, it is not delivered with \FlightGear{}$\!$, but can be created with -any text editor (notepad, emacs, vi, if you like). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{General Options}\index{options!general}\label{generaloptions} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-help}}: Shows the most relevant command line options only. -\item{\texttt{-$ $-help} \texttt{-verbose}}: Shows all command line options. -\item{\texttt{-$ $-fg-root={\it path}}}: Tells \FlightGear{} where to look for its root data - files if you didn't compile it with the \Index{default settings}. -\item{\texttt{-$ $-fg-scenery={\it path}}}: Allows specification of a path to the base scenery path \index{scenery directory!path}, in case scenery is not at the default position under\\ - \texttt{\$FG\underline{~}ROOT/Scenery}; this might be especially useful in case you -have scenery on a CD-ROM. -\item{\texttt{-$ $-disable-game-mode}}: Disables \Index{full screen display}. -\item{\texttt{-$ $-enable-game-mode}}: Enables full screen display. -\item{\texttt{-$ $-disable-splash-screen}}: Turns off the rotating 3DFX logo - when the accelerator board gets initialized (3DFX only). -\item{\texttt{-$ $-enable-splash-screen}}: If you like advertising, set this! -\item{\texttt{-$ $-disable-intro-music}}: No audio sample is being played when - \FlightGear{} starts up. Suggested in case of trouble with playing the intro. -\item{\texttt{-$ $-enable-intro-music}}: If your machine is powerful enough, enjoy - this setting. -\item{\texttt{-$ $-disable-mouse-pointer}}: Disables extra \Index{mouse pointer}. -\item{\texttt{-$ $-enable-mouse-pointer}}: Enables extra \Index{mouse pointer}. Useful in -full screen mode for old Voodoo based cards. -\item{\texttt{-$ $-enable-random-objects}}: Include random scenery objects (buildings/trees). This is the default. -\item{\texttt{-$ $-disable-random-objects}}: Exclude random scenery objects (buildings/trees). -\item{\texttt{-$ $-disable-freeze}}: This will put you into \FlightGear{} with the - engine running, ready for Take-Off. -\item{\texttt{-$ $-enable-freeze}}: Starts \FlightGear{} in \Index{frozen state}. -\item{\texttt{-$ $-disable-fuel-freeze}}: Fuel is consumed normally. -\item{\texttt{-$ $-enable-fuel-freeze}}: Fuel tank quantity is forced to remain constant. -\item{\texttt{-$ $-disable-clock-freeze}}: Time of day advances normally. -\item{\texttt{-$ $-enable-clock-freeze}}: Do not advance time of day. -\item{\texttt{-$ $-control-mode}}: Specify your \Index{control device} (\Index{joystick}, - keyboard, mouse) Defaults to \Index{joystick} (\Index{yoke}). -\item{\texttt{-$ $-disable-auto-coordination}}: Switches \Index{auto coordination} between -aileron/rudder off (default). -\item{\texttt{-$ $-enable-auto-coordination}}: Switches auto coordination between -aileron/rudder on (recommended without pedals). -\item{\texttt{-$ $-browser-app=/path/to/app}}: specify location of your web browser. Example: -\texttt{-$ $-browser-app=}\\ \texttt{''C:$\backslash$Programme$\backslash$Internet~Explorer$\backslash$iexplore.exe''} (Note the '' '' because of the broken word Internet Explorer!). -\item{\texttt{-$ $-prop:name=value:}} set property \texttt{name} to \texttt{value}\\Example: -\texttt{-$ $-prop:/engines/engine0/running=true} for starting with running engines. Another example:\\ -\texttt{-$ $-aircraft=c172}\\ -\texttt{-$ $-prop:/consumables/fuels/tank[0]/level-gal=10}\\ -\texttt{-$ $-prop:/consumables/fuels/tank[1]/level-gal=10}\\ -filles the Cessna for a short flight. -\item{\texttt{-$ $-config=path:}} Load additional properties from the given path. Example: \texttt{runfgfs -$ $-config=./Aircraft/X15-set.xml} -\item{\texttt{-$ $-units-feed}}: Use feet for distances. -\item{\texttt{-$ $-units-meters}}: Use meters for distances. -\end{itemize} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Features}\index{options!features} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-disable-hud}}: Switches off the \Index{HUD} (\textbf{H}ead \textbf{U}p - \textbf{D}isplay). -\item{\texttt{-$ $-enable-hud}}: Turns the \Index{HUD} on. -\item{\texttt{-$ $-enable-anti-aliased-hud}}: Turns on \Index{anti-aliaseded HUD lines} for better quality, -if hardware supports this. -\item{\texttt{-$ $-disable-anti-aliased-hud}}: Turns off anti-aliaseded HUD lines. -\item{\texttt{-$ $-enable-panel}}: Turns the \Index{instrument panel} on (default). -\item{\texttt{-$ $-disable-panel}}: Turns the \Index{instrument panel} off. -\item{\texttt{-$ $-disable-sound}}: Self explaining. -\item{\texttt{-$ $-enable-sound}}: See above. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Aircraft\index{aircraft!selection}}\index{options!aircraft} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{itemize} -\item{\texttt{-$ $-aircraft={\it name of aircraft definition file}}} Example: \texttt{-$ $-aircraft=c310}. For possible choices check the directory \texttt{/FlightGear/Aircraft}. Do not include the extension \texttt{''-set.xml''} into the aircraft name but use the remaining beginning of the respective file names for choosing an aircraft. This way flight model, panel etc. are all loaded in a consistent way. For a full list, see Sec. \ref{hangar} below. -\item{\texttt{-$ $-show-aircraft}}: Print a list of the currently available aircraft types. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Flight model\index{flight dynamics model}}\index{options!flight model}\label{flight dynamics model} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-fdm={\it abcd}}} Select the core \Index{flight model}. -Options are \texttt{jsb, larcsim, yasim, magic, balloon, external, ada, null}. Default value is -\texttt{jsb} (\JSBSim)\index{JSBSim}. larcsim is the flight model which \FlightGear{} inherited from the LaRCSim simulator. yasim is Any Ross' Yet Another Flight Dynamics Simulator. Magic is a slew mode (which drives the UFO aircraft). Balloon is a hot air balloon. External refers to remote control of the simulator. Null selects no flight dynamics model at all. The \Index{UIUC flight model} is not chosen this way but via the next option! For further information on flight models cf. Section \ref{flight models} and below. -\item{\texttt{-$ $-aero={\it abcd}}} Specifies the \Index{aircraft model} to load. Default is a Cessna c172. Alternatives available depend on the flight model chosen. -\item{\texttt{-$ $-model-hz={\it n}}} Run the Flight Dynamics Model with this rate -(iterations per second). -\item{\texttt{-$ $-speed={\it n}}} Run the Flight Dynamics Model this much faster than real -time. -\item{\texttt{-$ $-notrim}} Do NOT attempt to trim the model when initializing JSBSim. -\item{\texttt{-$ $-on-ground}}: Start up at ground level (default). -\item{\texttt{-$ $-in-air}}: Start up in the air. Naturally, you have to specify an -initial altitude as below for this to make sense. This is a must for the X15. -\item{\texttt{-$ $-wind={\it DIR@SPEED}}}: Specify wind coming from the direction DIR (in -degrees) at speed SPEED (knots). Values may be specified as a range by using a clon separator; e.g. 180:220@10:15 -\item{\texttt{-$ $-random-wind}}: Adds random wind to make flying more incentive -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Initial Position and Orientation\label{aiportid}}\index{options!initial position}\index{options!orientation} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-airport-id={\it ABCD}}}: If you want to start directly at an \Index{airport}, - enter its international code,\index{airport code} i.e. KJFK for JFK airport in New York etc. - A long/short list of the IDs of the airports being implemented can - be found in \texttt{/Flight Gear/Airports}. You only have to unpack - one of the files with \texttt{gunzip}. Keep in mind, you need the - terrain data for the relevant region, though!\index{airport code} -\item{\texttt{-$ $-offset-distance={\it nm}}}: Here you can specify the distance to -threshold in nm. -\item{\texttt{-$ $-offset-azimuth={\it deg}}}: Here you can specify the heading to -threshold in degrees. -\item{\texttt{-$ $-lon={\it degrees}}}: This is the \Index{startup longitude} in degrees (west = --). -\item{\texttt{-$ $-lat={\it degrees}}}: This is the \Index{startup latitude} in degrees (south = --). -\item{\texttt{-$ $-altitude={\it feet}}}: This is useful if you want to start in free -flight in connection with \texttt{-$ $-in-air}. Altitude specified in feet unless you -choose \texttt{-$ $-units-meters}. -\item{\texttt{-$ $-heading={\it degrees}}}: Sets the \Index{initial heading} (yaw angle) in degrees. -\item{\texttt{-$ $-roll={\it degrees}}}: Sets the \Index{startup roll angle} (roll angle) in degrees. -\item{\texttt{-$ $-pitch={\it degrees}}}: Sets the \Index{startup pitch angle} (pitch angle) in degrees. -\item{\texttt{-$ $-uBody={\it feet per second}}}: Speed along the body X axis in feet per second, unless you -choose \texttt{-$ $-units-meters}. -\item{\texttt{-$ $-vBody={\it feet per second}}}: Speed along the body Y axis in feet per second, unless you -choose \texttt{-$ $-units-meters}. -\item{\texttt{-$ $-wBody={\it feet per second}}}: Speed along the body Z axis in feet per second, unless you -choose \texttt{-$ $-units-meters}. -\item{\texttt{-$ $-vc={\it knots}}}: Allows specifying the initial airspeed in knots -(only in connection with \texttt{-$ $-fdm=jsb}). -\item{\texttt{-$ $-mach={\it num}}}: Allows specifying the initial airspeed as Mach -number (only in connection with \texttt{-$ $-fdm=jsb}). -\item{\texttt{-$ $-glideslope={\it degrees}}}: Allows specifying the flight path angle (can be positive). -\item{\texttt{-$ $-roc={\it fpm}}}: Allows specifying the initial climb rate (can be negative). -\end{itemize} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Rendering Options\index{options!rendering}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-bpp={\it depth}}}: Specify the bits per pixel. -\item{\texttt{-$ $-fog-disable}}: To cut down the rendering efforts, distant - regions are vanishing in \Index{fog} by default. If you disable \Index{fog}ging, - you'll see farther but your frame rates will drop. -\item{\texttt{-$ $-fog-fastest}}: The scenery will not look very nice but - \Index{frame rate} will increase. -\item{\texttt{-$ $-fog-nicest}}: This option will give you a fairly realistic - view of flying on a hazy day.\index{haze} -\item{\texttt{-$ $-enable-clouds}}: Enable \Index{cloud layer} (default). -\item{\texttt{-$ $-disable-clouds}}: Disable cloud layer. -\item{\texttt{-$ $-fov={\it degrees}}}: Sets the \Index{field of view} in degrees. -Default is 55.0. -\item{\texttt{-$ $-disable-fullscreen}}: Disable \Index{full screen mode} (default). -\item{\texttt{-$ $-enable-fullscreen}}: Enable full screen mode. -\item{\texttt{-$ $-shading-flat}}: This is the fastest mode but the terrain will look ugly! -This option might help if your video processor is really slow. -\item{\texttt{-$ $-shading-smooth}}: This is the recommended (and default) setting - things will look really nice. -\item{\texttt{-$ $-disable-skyblend}}: No fogging or \Index{haze}, sky will be displayed - using just one color. Fast but ugly! -\item{\texttt{-$ $-enable-skyblend}}: Fogging/haze is enabled, sky and \Index{terrain} look realistic. This is the default and recommended setting. -\item{\texttt{-$ $-disable-textures}}: Terrain details will be disabled. Looks ugly, but might help if your video board is slow. -\item{\texttt{-$ $-enable-textures}}: Default and recommended. -\item{\texttt{-$ $-enable-wireframe}}: If you want to know how the world of \FlightGear{} looks like internally, try -this!\index{wireframe} -\item{\texttt{-$ $-disable-wireframe}}: No wireframe. Default. -\item{\texttt{-$ $-geometry={\it WWWxHHH}}}: Defines the size of the window used, i.e. -\texttt{WWWxHHH} can be \texttt{640x480}, \texttt{800x600}, or -\texttt{1024x768}.\index{window size} -\item{\texttt{-$ $-view-offset={\it xxx}}}: Allows setting the default forward view direction as an offset from straight -ahead. Possible values are \texttt{LEFT, RIGHT, CENTER}, or a specific number of degrees. -Useful for multi-window display.\index{offset} -\item{\texttt{-$ $-visibility={\it meters}}}: You can specify the initial visibility in meters here. -\item{\texttt{-$ $-visibility-miles={\it miles}}}: You can specify the initial visibility in miles here. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{HUD Options\index{HUD}\index{options!HUD}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-hud-tris}}: HUD displays the number of \Index{triangles} rendered. -\item{\texttt{-$ $-hud-culled}}: HUD displays percentage of triangles culled. -\end{itemize} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Time Options}\index{time options}\index{options!time} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-time-offset={\it [+-]hh:mm:ss}}}: Offset local \Index{time} by this amount. -\item{\texttt{-$ $-time-match-real}}: Synchronize real-world and \FlightGear{} time. -\item{\texttt{-$ $-time-match-local}}: Synchronize local real-world and \FlightGear{} time. -\item{\texttt{-$ $-start-date-sys={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a \Index{starting time} and date. Uses your system time. -\item{\texttt{-$ $-start-date-gmt={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a starting time and -date. Time is Greenwich Mean Time. -\item{\texttt{-$ $-start-date-lat={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a starting time and -date. Uses local aircraft time. -\end{itemize} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Network Options}\index{network options}\index{options!network} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-httpd={\it port}}}: Enable \Index{http server} on the specified port. -\item{\texttt{-$ $-telnet={\it port}}}: Enable \Index{telnet server} on the specified port. -\item{\texttt{-$ $-jpg-httpd={\it port}}}: Enable screen shot http server on the specified port. -\item{\texttt{-$ $-enable-network-olk}}: Enables Oliver Delises's multi-pilot mode. -\item{\texttt{-$ $-disable-network-olk}}: Disables Oliver Delises's multi-pilot mode (default). -\item{\texttt{-$ $-net-hud}}: HUD displays network info. -\item{\texttt{-$ $-net-id={\it name}}}: Specify your own \Index{callsign} - \end{itemize} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Route/Waypoint Options}\index{options!route}\index{options!waypoint} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-wp={\it ID[@alt]}}}: Allows specifying a waypoint for the GC autopilot; it -is possible to specify multiple waypoints (i.e. a route) via multiple instances of this -command. -\item{\texttt{-$ $-flight-plan={\it [file]}}}: This is more comfortable if -you have several waypoints. You can specify a file to read them from. -\end{itemize} - -Note: These options are rather geared to the advanced user who knows what he is doing. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{IO Options}\index{options!IO} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-garmin={\it params}}}: Open connection using the Garmin GPS protocol. -\item{\texttt{-$ $-joyclient={\it params}}}: Open connection to an Agwagon joystick. -\item{\texttt{-$ $-native-ctrls={\it params}}}: Open connection using the FG native Controls protocol. -\item{\texttt{-$ $-native-fdm={\it params}}}: Open connection using the FG Native FDM protocol. -\item{\texttt{-$ $-native={\it params}}}: Open connection using the FG Native protocol. -\item{\texttt{-$ $-nmea={\it params}}}: Open connection using the NMEA protocol. -\item{\texttt{-$ $-opengc={\it params}}}: Open connection using the OpenGC protocol. -\item{\texttt{-$ $-props={\it params}}}: Open connection using the interactive property manager. -\item{\texttt{-$ $-pve={\it params}}}: Open connection using the PVE protocol. -\item{\texttt{-$ $-ray={\it params}}}: Open connection using the RayWoodworth motion chair protocol. -\item{\texttt{-$ $-rul={\it params}}}: Open connection using the RUL protocol. -\item{\texttt{-$ $-atc610x}}: Enable atc610x interface. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Debugging options}\index{options!debugging} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{itemize} -\item{\texttt{-$ $-trace-read={\it params}}}: Trace the reads for a property; multiple instances are allowed. -\item{\texttt{-$ $-trace-write={\it params}}}: Trace the writes for a property; multiple instances are allowed. -\end{itemize} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Joystick support\label{joysticksupp}}\index{joystick} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Could you imagine a pilot in his or her Cessna controlling the machine with -a keyboard alone? For getting the proper feeling of flight you will need a -joystick/yoke plus rudder pedals, right? However, the combination of -numerous types of \Index{joystick}s, flightsticks, \Index{yoke}s, -\Index{pedal}s etc. on the market with the several target operating systems, -makes joystick support a nontrivial task in \FlightGear{}$\!$. - -Beginning with version 0.8.0, \FlightGear{} has a reworked integrated -joystick support, which automatically detects any joystick, yoke, or pedals -attached. Just try it! If this does work for you, lean back and be happy! - -Unfortunately, given the several combinations of operating systems supported -by \FlightGear{} (possibly in foreign languages) and joysticks available, -chances are your joystick does not work out of the box. Basically, there are -two alternative approaches to get it going, with the first one being -preferred. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Built-in joystick support\label{joystickbuiltin}}\index{options!joystick} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{General remarks\label{generalremarks}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -In order for joystick auto-detection to work, a joystick bindings xml file -must exist for each joystick. This file describes what axes and buttons are -to be used to control which functions in \FlightGear{}. The associations -between functions and axes or buttons are called ''bindings''. This -bindings file can have any name as long as a corresponding entry exists in -the joysticks description file -\medskip - - \texttt{/FlightGear/joysticks.xml} -\medskip - -\noindent -which tells \FlightGear{} where to look for all the bindings files. We will -look at examples later. - -\FlightGear{} includes several such bindings files for several joystick -manufacturers in folders named for each manufacturer. For example, if you -have a CH Products joystick, look in the folder -\medskip - - \texttt{/FlightGear/Input/Joysticks/CH} - \medskip - -\noindent -for a file that might work for your joystick. If such a file exists and -your joystick is working with other applications, then it should work with -\FlightGear{} the first time you run it. If such a file does not exist, -then we will discuss in a later section how to create such a file by cutting -and pasting bindings from the examples that are included with \FlightGear{}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Verifying your joystick is working\label{verifying}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Does your computer see your joystick? One way to answer this question under Linux is to reboot your system and immediately enter on the command line -\medskip - - \texttt{dmesg | grep Joystick} -\medskip - -\noindent -which pipes the boot message to grep which then prints every line in the -boot message that contains the string ''Joystick''. When you do this with a -Saitek joystick attached, you will see a line similar to this one: -\medskip - -\begin{ttfamily} -\noindent - input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0 -\end{ttfamily} -\medskip - -\noindent -This line tells us that a joystick has identified itself as SAITEK CYBORG 3D USB to the operating system. It does not tell us that the joystick driver sees your joystick. If you are working under Windows, the method above does not work, but you can still go on with the next paragraph. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Confirming that the driver recognizes your joystick\label{confirming}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\FlightGear{} ships with a utility called js\underline{~}demo. It will report the number of joysticks attached to a system, their respective ''names'', and their capabilities. Under Linux, you can run js\underline{~}demo from the folder \texttt{/FlightGear/bin} as follows: -\medskip - -\noindent - \texttt{\$ cd /usr/local/FlightGear/bin}\\ - \texttt{\$ ./js\underline{~}demo} -\medskip - -\noindent -Under Windows, open a command shell (Start$\left|\right.$All Programs$\left|\right.$Accessories), go to the \FlightGear{} binary folder and start the program as follows (given \FlightGear{} is installed under \texttt{c:$\backslash$Flightgear}) -\medskip - -\noindent - \texttt{cd {$\backslash$}FlightGear{$\backslash$}bin}\\ - \texttt{js\underline{~}demo.exe} -\medskip - -On our system, the first few lines of output are (stop the program with \^{~}C if it is quickly scrolling past your window!) as follows: -\medskip - -\begin{ttfamily} -\tiny -\noindent -\underline{Joystick test program}.\\ -Joystick 0: ''CH PRODUCTS CH FLIGHT SIM YOKE USB\, ''\\ -Joystick 1: ''CH PRODUCTS CH PRO PEDALS USB\,''\\ -Joystick 2 not detected\\ -Joystick 3 not detected\\ -Joystick 4 not detected\\ -Joystick 5 not detected\\ -Joystick 6 not detected\\ -Joystick 7 not detected\\ -+--------------------JS.0----------------------+--------------------JS.1----------------------+\\ -| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 | Btns Ax:0 Ax:1 Ax:2 |\\ -+----------------------------------------------+----------------------------------------------+\\ -| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0 . | 0000 -1.0 -1.0 -1.0 . . . . . |\\ -\end{ttfamily} - -\noindent -First note that js\underline{~}demo reports which number is assigned to each joystick recognized by the driver. Also, note that the ''name'' each joystick reports is also included between quotes. We will need the names for each bindings file when we begin writing the binding xml files for each joystick. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Identifying the numbering of axes and buttons\label{identifying}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Axis and button numbers can be identified using js\underline{~}demo as follows. By observing the output of js\underline{~}demo while working your joystick axes and buttons you can determine what axis and button numbers are assigned to each joystick axis and button. It should be noted that numbering generally starts with zero. - -The buttons are handled internally as a binary number in which bit 0 (the least significant bit) represents button 0, bit 1 represents button 1, etc., but this number is displayed on the screen in hexadecimal notation, so: -\medskip - -\noindent - 0001 $\Rightarrow$ button 0 pressed\\ - 0002 $\Rightarrow$ button 1 pressed\\ - 0004 $\Rightarrow$ button 2 pressed\\ - 0008 $\Rightarrow$ button 3 pressed\\ - 0010 $\Rightarrow$ button 4 pressed\\ - 0020 $\Rightarrow$ button 5 pressed\\ - 0040 $\Rightarrow$ button 6 pressed\\ - ... etc. up to ...\\ - 8000 $\Rightarrow$ button 15 pressed\\ - ... and ...\\ - 0014 $\Rightarrow$ buttons 2 and 4 pressed simultaneously\\ - ... etc. - \medskip - -For Linux users, there is another option for identifying the ''name'' and the numbers assigned to each axis and button. Most Linux distributions include a very handy program, ''jstest''. With a CH Product Yoke plugged into the system, the following output lines are displayed by jstest: -\medskip - -\begin{ttfamily} -\tiny -\noindent -jstest /dev/js3\\ -Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB) has 7 axes and 12 buttons. Driver version is 2.1.0\\ -Testing\ldots (interrupt to exit)\\ -Axes: 0:\quad 0 1:\quad 0 2:\quad 0 3:\quad 0 4:\quad 0 5:\quad 0 6:\quad 0 Buttons: 0:off 1:off 2:off 3:on 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off\\ -\end{ttfamily} - -\noindent -Note the ''name'' between parentheses. This is the name the system associates with your joystick. - -When you move any control, the numbers change after the axis number corresponding to that moving control and when you depress any button, the ''off'' after the button number corresponding to the button pressed changes to ''on''. In this way, you can quickly write down the axes numbers and button numbers for each function without messing with binary. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Writing or editing joystick binding xml files\label{writing}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -At this point, you have confirmed that the operating system and the joystick driver both recognize your joystick(s). You also know of several ways to identify the joystick ''name'' your joystick reports to the driver and operating system. You will need a written list of what control functions you wish to have assigned to which axis and button and the corresponding numbers. - - Make the following table from what you learned from js\underline{~}demo or jstest above (pencil and paper is fine). Here we assume there are 5 axes including 2 axes associated with the hat. -\medskip - -\begin{tabular}{c|c} - Axis & Button\\\hline - elevator = 0 & view cycle = 0\\ - rudder = 1 & all brakes = 1\\ - aileron = 2 & up trim = 2\\ - throttle = 3 & down trim = 3\\ - leftright hat = 4& extend flaps = 4\\ - foreaft hat = 5 & retract flaps = 5\\ - & decrease RPM = 6\\ - & increase RPM = 7 -\end{tabular} -\medskip - - -We will assume that our hypothetical joystick supplies the ''name'' QUICK STICK 3D USB to the system and driver. With all the examples included with \FlightGear{}, the easiest way to get a so far unsupported joystick to be auto detected, is to edit an existing binding xml file. Look at the xml files in the sub-folders of \texttt{/FlightGear/Input/Joysticks/}. After evaluating at several of the xml binding files supplied with \FlightGear{}, we decide to edit the file - -\noindent - \texttt{/FlightGear/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml}. - - \noindent - This file has all the axes functions above assigned to axes and all the button functions above assigned to buttons. This makes our editing almost trivial. - -Before we begin to edit, we need to choose a name for our bindings xml file, create the folder for the QS joysticks, and copy the original xml file into this directory with this name. -\medskip - - -\begin{ttfamily} -\noindent -\$ cd /usr/local/FlightGear/Input/Joysticks\\ -\$ mkdir QS\\ -\$ cd QS\\ -\$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/\\ -Cyborg-Gold-3d-USB.xml QuickStick.xml -\end{ttfamily} -\medskip - -\noindent -Here, we obviously have supposed a Linux/UNIX system with \FlightGear{} being installed under \texttt{/usr/local/FlightGear}. For a similar procedure under Windows with \FlightGear{} being installed under \texttt{c:\FlightGear}, open a command shell and type -\medskip - -\begin{ttfamily} -\noindent -c:\\ -cd /FlightGear/Input/Joysticks\\ -mkdir QS\\ -cd QS\\ -copy /FlightGear/Input/Joysticks/Saitek/\\ -Cyborg-Gold-3d-USB.xml QuickStick.xml -\end{ttfamily} -\medskip - -\noindent -Next, open \texttt{QuickStick.xml} with your favorite editor. Before we forget to change the joystick name, search for the line containing $<$name$>$. You should find the line -\medskip - -\texttt{SAITEK CYBORG 3D USB$<$/name$>$} -\medskip - -\noindent -and change it to -\medskip - - \texttt{$<$name$>$QUICK STICK 3D USB$<$/name$>$}. - \medskip - -\noindent -This line illustrates a key feature of xml statements. They begin with a $<$tag$>$ and end with a $<$/tag$>$. - -You can now compare your table to the comment table at the top of your file copy. Note that the comments tell us that the Saitek elevator was assigned to axis 1. Search for the string -\medskip - - \texttt{$<$axis n="2"$>$} -\medskip - -\noindent -and change this to -\medskip - - \texttt{$<$axis n="1"$>$.} -\medskip - -Next, note that the Saitek rudder was assigned to axis 2. Search for the string -\medskip - - \texttt{$<$axis n="2"$>$} - - \texttt{$<$axis n="1"$>$.} -\medskip - -\noindent -Continue comparing your table with the comment table for the Saitek and changing the axis numbers and button numbers accordingly. Since QUICKSTICK USB and the Saitek have the same number of axes but different number of buttons, you must delete the buttons left over. Just remember to double check that you have a closing tag for each opening tag or you will get an error using the file. - -Finally, be good to yourself (and others when you submit your new binding file to a \FlightGear{} developers or users archive!), take the time to change the comment table in the edited file to match your changed axis and button assignments. The new comments should match the table you made from the js\underline{~}demo output. Save your edits. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Telling \FlightGear{} about your new bindings xml file\label{telling}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Before \FlightGear{} can use your new xml file, you need to edit the file - -\noindent - \texttt{/FlightGear/joysticks.xml}, - - -\noindent -adding a line that will include your new file if the ''name'' you entered between the name tags matches the name supplied to the driver by your joystick. Add the following line to \texttt{joysticks.xml}. -\medskip - -\noindent - \texttt{} -\medskip - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsubsection{Some hints for Windows users\label{joyxp}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Basically, the procedures described above should work for Windows as well. If your joystick/yoke/pedals work out of the box or if you get it to work using the methods above, fine. Unfortunately there may be a few problems. - -The first one concerns users of non-US Windows versions. As stated above, you can get the name of the joystick from the program js\underline{~}demo. If you have a non-US version of Windows and the joystick .xml files named above do not contain that special name, just add it on top of the appropriate file in the style of -\medskip - - \texttt{Microsoft-PC-Joysticktreiber } - \medskip - -\noindent -No new entry in the base \texttt{joysticks.xml} file is required. - -Unfortunately, there is one more loophole with Windows joystick support. In -case you have two USB devices attached (for instance a yoke plus pedals), -there may be cases, where the same driver name is reported twice. In this -case, you can get at least the yoke to work by assigning it number 0 (out of -0 and 1). For this purpose, rotate the yoke (aileron control) and observe -the output of js\underline{~}demo. If figures in the first group of colons -(for device 0) change, assignment is correct. If figures in the second group -of colons (for device 1) change, you have to make the yoke the preferred -device first. For doing so, enter the -Windows ''Control panel'', open ''Game controllers'' and select the -''Advanced'' button. Here you can select the yoke as the ''Preferred'' -device. Afterward you can check that assignment by running -js\underline{~}demo again. The yoke should now control the first group of -figures. - -Unfortunately, we did not find a way to get the pedals to work, too, that way. Thus, in cases like this one (and others) you may want to try an alternative method of assigning joystick controls. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Joystick support via .fgfsrc entries\label{fgfsrcjoy}}\index{joystick!.fgfsrc} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Fortunately, there is a tool available now, which takes most of the burden from the average user who, maybe, is not that experienced with XML, the language which these files are written in. - -For configuring your joystick using this approach, open a command shell (command prompt under windows, to be found under Start|All programs|Accessories). Change to the directory \texttt{/FlightGear/bin} via e.g. (modify to your path) - -\noindent -\texttt{cd c:$\backslash$FlightGear$\backslash$bin} - -and invoke the tool fgjs via - -\noindent -\texttt{./fgjs} - -on a UNIX/Linux machine, or via - -\noindent -\texttt{fgjs} - -on a Windows machine. The program will tell you which joysticks, if any, were detected. Now follow the commands given on screen, i.e. move the axis and press the buttons as required. Be careful, a minor touch already ''counts'' as a movement. Check the reports on screen. If you feel something went wrong, just re-start the program. - -After you are done with all the axis and switches, the directory above will hold a file called \texttt{fgfsrc.js}. If the \FlightGear{} base directory \texttt{FlightGear} does not already contain an options file \texttt{.fgfsrc} (under UNIX)/\texttt{system.fgfsrc} (under Windows) mentioned above, just copy -\medskip - -\noindent - \texttt{fgfsrc.js} into \texttt{.fgfsrc} (UNIX)/\texttt{system.fgfsrc} (Windows) - \medskip - -\noindent -and place it into the directory \FlightGear{} base directory \texttt{FlightGear}. In case you already wrote an options file, just open it as well as \texttt{fgfsrc.js} with an editor and copy the entries from \texttt{fgfsrc.js} into \texttt{.fgfsrc}/\texttt{system.fgfsrc}. One hint: The output of \texttt{fgjs} is UNIX formatted. As a result, Windows Editor may not display it the proper way. I suggest getting an editor being able to handle UNIX files as well (and oldie but goldie in this respect is PFE, just make a web search for it). My favorite freeware file editor for that purpose, although somewhat dated, is still \Index{PFE}, to be obtained from - -\web{http://www.lancs.ac.uk/people/cpaap/pfe/}. - -The the axis/button assignment of \texttt{fgjs} should, at least, get the axis assignments right, its output may need some tweaking. There may be axes moving the opposite way they should, the dead zones may be too small etc. For instance, I had to change - -\texttt{--prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0} - -into - -\texttt{--prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0} - -(USB CH Flightsim Yoke under Windows XP). Thus, here is a short introduction into the assignments of joystick properties. - -Basically, all axes settings are specified via lines having the following structure: - \medskip - -\noindent -\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ -\texttt{/command=property-scale} (one line)\\ -\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ -\texttt{/property=/controls/}\textit{steering option} (one line)\\ -\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ -\texttt{/dead-band=}\textit{db} (one line)\\ -\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ -\texttt{/offset=}\textit{os} (one line)\\ -\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ -\texttt{/factor=}\textit{fa} (one line)\\ -\medskip - - \noindent - where - \medskip - -\begin{tabular}{rcl} - \textit{n} &=& number of device (usually starting with 0)\\ - \textit{m} &=& number of axis (usually starting with 0)\\ - \textit{steering option} &=& elevator, aileron, rudder, throttle, mixture, pitch\\ - \textit{dead-band} &=& range, within which signals are discarded;\\ - && useful to avoid jittering for minor yoke movements\\ - \textit{offset} &=& specifies, if device not centered in its neutral position\\ - \textit{factor} &=& controls sensitivity of that axis; defaults to +1,\\ - &&with a value of -1 reversing the behavior - \end{tabular} - \medskip - -You should be able to at least get your joystick working along -these lines. Concerning all the finer points, for instance, getting the joystick buttons -working, John Check\index{Check, John} has written a very useful README being included in the base package to be found under \texttt{FlightGear/Docs/Readme/Joystick.html}. In case of any trouble with your input device, it is highly recommended to have a look into this document. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{A glance over our hangar}\index{hangar}\label{hangar}\index{aircraft!survey} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -The following is a Table 1 of all the aircraft presently available for use with \FlightGear{}. In the first column, you will find the name of the aircraft, the second one tells the start option, the third one names the FDM (flight dynamics management model, see Sec. \ref{flight models}), and the last column includes some remarks. Here, ''no exterior model'' means, that there is no aircraft specific external model provided with the base package. As a result, you will see the default blue-yellow glider, when you change to the external view. However, you can download external views for these models from Wolfram Kuss' site at - -\web{http://home.t-online.de/home/Wolfram.Kuss/}. - -Moreover, this list is complete insofar as it covers all aircraft available via the \texttt{-$ $-aircraft=} option. -\eject - -\noindent - Tab.\,1: \textit{Presently available aircraft in \FlightGear{}}. - \medskip - -\noindent -{\scriptsize -\input{tab1.tex} -} - -%% Revision 0.02 1998/09/29 bernhard -%% revision 0.10 1998/10/01 michael -%% final proofreading for release -%% revision 0.11 1998/11/01 michael -%% Added pic from Arizona takeoff -%% revision 0.20 1999/06/04 michael -%% added new options -%% revision 0.3 2000/04/20 michael -%% added numerous new options (number rapidly growing...) -%% revision 0.4 2001/05/12 michael -%% description of .fgfsrc/system.fgfsrc -%% again many new options -%% joystick section added based on John Check's joystick howto -%% updated arizona pic -%% revision 0.4 2001/07/01 martin -%% comments on debug options under Unix -%% revision 0.5 2002/01/01 michael/martin -%% added more options, notably the --aircraft option -%% tweaks in the introductory section -%% revised joystick section based on fgjs -%% New KFSO picture -%% Paragraphs on UIUC + tweaks by Martin -%% Added Section on IIO options -%% revision 0.6 2002/09/05 michael -%% Corrected win shell call in 4.2 -%% added/corrected/deleted several comman line options -%% Added large section on built-in joystick support by Dave Perry -%% Added section/table with complete list of aircraft +%% +%% getstart.tex -- Flight Gear documentation: Installation and Getting Started +%% Chapter file +%% +%% Copyright (C) 2002 Michael Basler (pmb@epost.de) +%% & Bernhard Buckel (buckel@wmad95.mathematik.uni-wuerzburg.de) +%% +%% This program is free software; you can redistribute it and/or +%% modify it under the terms of the GNU General Public License as +%% published by the Free Software Foundation; either version 2 of the +%% License, or (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, but +%% WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%% General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +%% $Id: takeof.tex,v 0.6 2002/09/09 michael +%% (Log is kept at end of this file) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Takeoff: How to start the program\label{takeoff}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\markboth{\thechapter.\hspace*{1mm} +TAKEOFF}{\thesection\hspace*{1mm} Command line parameters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Launching the simulator under Unix/Linux}\index{Launching Flightgear!Linux}\index{Starting Flightgear!Linux} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Under Linux (or any other flavor of Unix), \FlightGear{} will be invoked by + \medskip + + \texttt{runfgfs -$ $-option1 -$ $-option2\dots}, + \medskip + +\noindent + where the options will be described in Section \ref{options} below. + +If something strange happens while using this shell script, if you want to do some +debugging (i.e. using ''strace'') or if you just feel nice to be ''keen'', then you can +start \FlightGear{} directly by executing the ''fgfs'' binary. In this case you should at +least add one variable to your environment,\index{environment variables} which is needed +to locate the (mostly) shared library built from the sources of the \SimGear{} +package. Please add the respective directory to your \verb/LD_LIBRARY_PATH/. You can do +so with the following on Bourne shell (compatibles): + +\begin{verbatim} +LD_LIBRARY_PATH=/usr/local/FlightGear/lib:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH/ +\end{verbatim} + +\noindent + or on C shell (compatibles): + +\begin{verbatim} +setenv LD_LIBRARY_PATH +/usr/local/FlightGear/lib:$LD_LIBRARY_PATH +\end{verbatim} + + \noindent +Besides this (used by the dynamic linker) ''fgfs'' knows about the following environment variable: +\noindent + +\verb/FG_ROOT/: root directory for the \FlightGear{} base package, + +\noindent + which corresponds to the \texttt{-$ $-fg-root={\it path}} option as described in Sec. \ref{generaloptions} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Launching the simulator under Windows}\index{Launching Flightgear!Windows}\index{Starting Flightgear!Windows} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +For launching \FlightGear{} from Windows explorer, change to the directory \texttt{/FlightGear} and double-click the file \texttt{runfgfs.bat}. You can also pass command line options from Sec. \ref{takeoff} to the batch file (if running it form a Command shell). However, you have to enclose them in double quotes in this case as follows: +\medskip + +\noindent +\texttt{runfgfs.bat ''-$ $-aircraft=4a-yasim'' ''-$ $-airport-id=KLAX''}. + \medskip + + \centerline{\fbox{ +\includegraphics[clip,width=12.5cm]{ksfo} +}} +\smallskip + + \noindent +Fig.\,3: \textit{Ready for takeoff. Waiting at the default startup position at San +Francisco Itl., KSFO.} +\medskip + +Alternatively, if for one or the other reason the batch file above does not work or is missing, +you can open a command shell, change to the directory where your binary resides +(typically something like \texttt{c:/FlightGear/bin} where you might have to substitute +\texttt{c:} in favor of your \FlightGear{} directory), set the \Index{environment +variable} via (note the backslashes!) + \medskip + +\texttt{SET FG\_ROOT=c:$\backslash$FlightGear$\backslash$} + \medskip + +\noindent + and invoke \FlightGear{} (within the same Command shell, as environment + settings are only valid locally within the same shell) via + \medskip + +\texttt{fgfs -$ $-option1 -$ $-option2\dots}. + \medskip + +Of course, you can create your own \texttt{runfgfs.bat} with Windows \texttt{Editor} using the +two lines above. + +For getting maximum performance it is recommended to minimize (iconize) the text output +window while running \FlightGear{}$\!$. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Launching the simulator under Mac OS X}\index{Launching Flightgear!Mac OS X}\index{Starting Flightgear!Mac OS X} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Say, you downloaded the base package and binary to your home directory. Then you can open \texttt{Terminal.app} and execute the following sequence: +\medskip + +\noindent +\texttt{setenv FG\_ROOT ~/fgfs-base-X.X.X ./fgfs-X.X.X.-date}\\ +\texttt{-$ $-option1 -$ $- option 2} (one line) +\medskip + +\noindent +or +\medskip + +\noindent +\texttt{./fgfs-X.X.X-version-date} + \texttt{-$ $-fg-root=\~/fgfs-base-X.X.X}\\ + \texttt{-$ $-option1 -$ $-option2}. (one line) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Command line parameters\label{options}}\index{command line options} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Following is a complete list and short description of the numerous \Index{command line options} +available for \FlightGear{}$\!$. If you are running \FlightGear{} under \Index{Windows} you can include these into +\texttt{runfgfs.bat}. + +However, in case of options you want to re-use continually it is recommended to include them into a file called +\texttt{.fgfsrc}\index{.fgfsrc} under Unix systems and +\texttt{system.fgfsrc},\index{system.fgfsrc} resp. under Windows. This file has to be in +the top \FlightGear{} directory (for instance /usr/local/Flightgear). As it depends on your +\Index{preferences}, it is not delivered with \FlightGear{}$\!$, but can be created with +any text editor (notepad, emacs, vi, if you like). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{General Options}\index{options!general}\label{generaloptions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-help}}: Shows the most relevant command line options only. +\item{\texttt{-$ $-help} \texttt{-verbose}}: Shows all command line options. +\item{\texttt{-$ $-fg-root={\it path}}}: Tells \FlightGear{} where to look for its root data + files if you didn't compile it with the \Index{default settings}. +\item{\texttt{-$ $-fg-scenery={\it path}}}: Allows specification of a path to the base scenery path \index{scenery directory!path}, in case scenery is not at the default position under\\ + \texttt{\$FG\underline{~}ROOT/Scenery}; this might be especially useful in case you +have scenery on a CD-ROM. +\item{\texttt{-$ $-disable-game-mode}}: Disables \Index{full screen display}. +\item{\texttt{-$ $-enable-game-mode}}: Enables full screen display. +\item{\texttt{-$ $-disable-splash-screen}}: Turns off the rotating 3DFX logo + when the accelerator board gets initialized (3DFX only). +\item{\texttt{-$ $-enable-splash-screen}}: If you like advertising, set this! +\item{\texttt{-$ $-disable-intro-music}}: No audio sample is being played when + \FlightGear{} starts up. Suggested in case of trouble with playing the intro. +\item{\texttt{-$ $-enable-intro-music}}: If your machine is powerful enough, enjoy + this setting. +\item{\texttt{-$ $-disable-mouse-pointer}}: Disables extra \Index{mouse pointer}. +\item{\texttt{-$ $-enable-mouse-pointer}}: Enables extra \Index{mouse pointer}. Useful in +full screen mode for old Voodoo based cards. +\item{\texttt{-$ $-enable-random-objects}}: Include random scenery objects (buildings/trees). This is the default. +\item{\texttt{-$ $-disable-random-objects}}: Exclude random scenery objects (buildings/trees). +\item{\texttt{-$ $-disable-freeze}}: This will put you into \FlightGear{} with the + engine running, ready for Take-Off. +\item{\texttt{-$ $-enable-freeze}}: Starts \FlightGear{} in \Index{frozen state}. +\item{\texttt{-$ $-disable-fuel-freeze}}: Fuel is consumed normally. +\item{\texttt{-$ $-enable-fuel-freeze}}: Fuel tank quantity is forced to remain constant. +\item{\texttt{-$ $-disable-clock-freeze}}: Time of day advances normally. +\item{\texttt{-$ $-enable-clock-freeze}}: Do not advance time of day. +\item{\texttt{-$ $-control-mode}}: Specify your \Index{control device} (\Index{joystick}, + keyboard, mouse) Defaults to \Index{joystick} (\Index{yoke}). +\item{\texttt{-$ $-disable-auto-coordination}}: Switches \Index{auto coordination} between +aileron/rudder off (default). +\item{\texttt{-$ $-enable-auto-coordination}}: Switches auto coordination between +aileron/rudder on (recommended without pedals). +\item{\texttt{-$ $-browser-app=/path/to/app}}: specify location of your web browser. Example: +\texttt{-$ $-browser-app=}\\ \texttt{''C:$\backslash$Programme$\backslash$Internet~Explorer$\backslash$iexplore.exe''} (Note the '' '' because of the broken word Internet Explorer!). +\item{\texttt{-$ $-prop:name=value:}} set property \texttt{name} to \texttt{value}\\Example: +\texttt{-$ $-prop:/engines/engine0/running=true} for starting with running engines. Another example:\\ +\texttt{-$ $-aircraft=c172}\\ +\texttt{-$ $-prop:/consumables/fuels/tank[0]/level-gal=10}\\ +\texttt{-$ $-prop:/consumables/fuels/tank[1]/level-gal=10}\\ +filles the Cessna for a short flight. +\item{\texttt{-$ $-config=path:}} Load additional properties from the given path. Example: \texttt{runfgfs -$ $-config=./Aircraft/X15-set.xml} +\item{\texttt{-$ $-units-feed}}: Use feet for distances. +\item{\texttt{-$ $-units-meters}}: Use meters for distances. +\end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Features}\index{options!features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-disable-hud}}: Switches off the \Index{HUD} (\textbf{H}ead \textbf{U}p + \textbf{D}isplay). +\item{\texttt{-$ $-enable-hud}}: Turns the \Index{HUD} on. +\item{\texttt{-$ $-enable-anti-aliased-hud}}: Turns on \Index{anti-aliaseded HUD lines} for better quality, +if hardware supports this. +\item{\texttt{-$ $-disable-anti-aliased-hud}}: Turns off anti-aliaseded HUD lines. +\item{\texttt{-$ $-enable-panel}}: Turns the \Index{instrument panel} on (default). +\item{\texttt{-$ $-disable-panel}}: Turns the \Index{instrument panel} off. +\item{\texttt{-$ $-disable-sound}}: Self explaining. +\item{\texttt{-$ $-enable-sound}}: See above. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Aircraft\index{aircraft!selection}}\index{options!aircraft} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item{\texttt{-$ $-aircraft={\it name of aircraft definition file}}} Example: \texttt{-$ $-aircraft=c310}. For possible choices check the directory \texttt{/FlightGear/Aircraft}. Do not include the extension \texttt{''-set.xml''} into the aircraft name but use the remaining beginning of the respective file names for choosing an aircraft. This way flight model, panel etc. are all loaded in a consistent way. For a full list, see Sec. \ref{hangar} below. +\item{\texttt{-$ $-show-aircraft}}: Print a list of the currently available aircraft types. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Flight model\index{flight dynamics model}}\index{options!flight model}\label{flight dynamics model} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-fdm={\it abcd}}} Select the core \Index{flight model}. +Options are \texttt{jsb, larcsim, yasim, magic, balloon, external, ada, null}. Default value is +\texttt{jsb} (\JSBSim)\index{JSBSim}. larcsim is the flight model which \FlightGear{} inherited from the LaRCSim simulator. yasim is Any Ross' Yet Another Flight Dynamics Simulator. Magic is a slew mode (which drives the UFO aircraft). Balloon is a hot air balloon. External refers to remote control of the simulator. Null selects no flight dynamics model at all. The \Index{UIUC flight model} is not chosen this way but via the next option! For further information on flight models cf. Section \ref{flight models} and below. +\item{\texttt{-$ $-aero={\it abcd}}} Specifies the \Index{aircraft model} to load. Default is a Cessna c172. Alternatives available depend on the flight model chosen. +\item{\texttt{-$ $-model-hz={\it n}}} Run the Flight Dynamics Model with this rate +(iterations per second). +\item{\texttt{-$ $-speed={\it n}}} Run the Flight Dynamics Model this much faster than real +time. +\item{\texttt{-$ $-notrim}} Do NOT attempt to trim the model when initializing JSBSim. +\item{\texttt{-$ $-on-ground}}: Start up at ground level (default). +\item{\texttt{-$ $-in-air}}: Start up in the air. Naturally, you have to specify an +initial altitude as below for this to make sense. This is a must for the X15. +\item{\texttt{-$ $-wind={\it DIR@SPEED}}}: Specify wind coming from the direction DIR (in +degrees) at speed SPEED (knots). Values may be specified as a range by using a clon separator; e.g. 180:220@10:15 +\item{\texttt{-$ $-random-wind}}: Adds random wind to make flying more incentive +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Initial Position and Orientation\label{aiportid}}\index{options!initial position}\index{options!orientation} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-airport-id={\it ABCD}}}: If you want to start directly at an \Index{airport}, + enter its international code,\index{airport code} i.e. KJFK for JFK airport in New York etc. + A long/short list of the IDs of the airports being implemented can + be found in \texttt{/Flight Gear/Airports}. You only have to unpack + one of the files with \texttt{gunzip}. Keep in mind, you need the + terrain data for the relevant region, though!\index{airport code} +\item{\texttt{-$ $-offset-distance={\it nm}}}: Here you can specify the distance to +threshold in nm. +\item{\texttt{-$ $-offset-azimuth={\it deg}}}: Here you can specify the heading to +threshold in degrees. +\item{\texttt{-$ $-lon={\it degrees}}}: This is the \Index{startup longitude} in degrees (west = +-). +\item{\texttt{-$ $-lat={\it degrees}}}: This is the \Index{startup latitude} in degrees (south = +-). +\item{\texttt{-$ $-altitude={\it feet}}}: This is useful if you want to start in free +flight in connection with \texttt{-$ $-in-air}. Altitude specified in feet unless you +choose \texttt{-$ $-units-meters}. +\item{\texttt{-$ $-heading={\it degrees}}}: Sets the \Index{initial heading} (yaw angle) in degrees. +\item{\texttt{-$ $-roll={\it degrees}}}: Sets the \Index{startup roll angle} (roll angle) in degrees. +\item{\texttt{-$ $-pitch={\it degrees}}}: Sets the \Index{startup pitch angle} (pitch angle) in degrees. +\item{\texttt{-$ $-uBody={\it feet per second}}}: Speed along the body X axis in feet per second, unless you +choose \texttt{-$ $-units-meters}. +\item{\texttt{-$ $-vBody={\it feet per second}}}: Speed along the body Y axis in feet per second, unless you +choose \texttt{-$ $-units-meters}. +\item{\texttt{-$ $-wBody={\it feet per second}}}: Speed along the body Z axis in feet per second, unless you +choose \texttt{-$ $-units-meters}. +\item{\texttt{-$ $-vc={\it knots}}}: Allows specifying the initial airspeed in knots +(only in connection with \texttt{-$ $-fdm=jsb}). +\item{\texttt{-$ $-mach={\it num}}}: Allows specifying the initial airspeed as Mach +number (only in connection with \texttt{-$ $-fdm=jsb}). +\item{\texttt{-$ $-glideslope={\it degrees}}}: Allows specifying the flight path angle (can be positive). +\item{\texttt{-$ $-roc={\it fpm}}}: Allows specifying the initial climb rate (can be negative). +\end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Rendering Options\index{options!rendering}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-bpp={\it depth}}}: Specify the bits per pixel. +\item{\texttt{-$ $-fog-disable}}: To cut down the rendering efforts, distant + regions are vanishing in \Index{fog} by default. If you disable \Index{fog}ging, + you'll see farther but your frame rates will drop. +\item{\texttt{-$ $-fog-fastest}}: The scenery will not look very nice but + \Index{frame rate} will increase. +\item{\texttt{-$ $-fog-nicest}}: This option will give you a fairly realistic + view of flying on a hazy day.\index{haze} +\item{\texttt{-$ $-enable-clouds}}: Enable \Index{cloud layer} (default). +\item{\texttt{-$ $-disable-clouds}}: Disable cloud layer. +\item{\texttt{-$ $-fov={\it degrees}}}: Sets the \Index{field of view} in degrees. +Default is 55.0. +\item{\texttt{-$ $-disable-fullscreen}}: Disable \Index{full screen mode} (default). +\item{\texttt{-$ $-enable-fullscreen}}: Enable full screen mode. +\item{\texttt{-$ $-shading-flat}}: This is the fastest mode but the terrain will look ugly! +This option might help if your video processor is really slow. +\item{\texttt{-$ $-shading-smooth}}: This is the recommended (and default) setting - things will look really nice. +\item{\texttt{-$ $-disable-skyblend}}: No fogging or \Index{haze}, sky will be displayed + using just one color. Fast but ugly! +\item{\texttt{-$ $-enable-skyblend}}: Fogging/haze is enabled, sky and \Index{terrain} look realistic. This is the default and recommended setting. +\item{\texttt{-$ $-disable-textures}}: Terrain details will be disabled. Looks ugly, but might help if your video board is slow. +\item{\texttt{-$ $-enable-textures}}: Default and recommended. +\item{\texttt{-$ $-enable-wireframe}}: If you want to know how the world of \FlightGear{} looks like internally, try +this!\index{wireframe} +\item{\texttt{-$ $-disable-wireframe}}: No wireframe. Default. +\item{\texttt{-$ $-geometry={\it WWWxHHH}}}: Defines the size of the window used, i.e. +\texttt{WWWxHHH} can be \texttt{640x480}, \texttt{800x600}, or +\texttt{1024x768}.\index{window size} +\item{\texttt{-$ $-view-offset={\it xxx}}}: Allows setting the default forward view direction as an offset from straight +ahead. Possible values are \texttt{LEFT, RIGHT, CENTER}, or a specific number of degrees. +Useful for multi-window display.\index{offset} +\item{\texttt{-$ $-visibility={\it meters}}}: You can specify the initial visibility in meters here. +\item{\texttt{-$ $-visibility-miles={\it miles}}}: You can specify the initial visibility in miles here. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{HUD Options\index{HUD}\index{options!HUD}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-hud-tris}}: HUD displays the number of \Index{triangles} rendered. +\item{\texttt{-$ $-hud-culled}}: HUD displays percentage of triangles culled. +\end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Time Options}\index{time options}\index{options!time} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-time-offset={\it [+-]hh:mm:ss}}}: Offset local \Index{time} by this amount. +\item{\texttt{-$ $-time-match-real}}: Synchronize real-world and \FlightGear{} time. +\item{\texttt{-$ $-time-match-local}}: Synchronize local real-world and \FlightGear{} time. +\item{\texttt{-$ $-start-date-sys={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a \Index{starting time} and date. Uses your system time. +\item{\texttt{-$ $-start-date-gmt={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a starting time and +date. Time is Greenwich Mean Time. +\item{\texttt{-$ $-start-date-lat={\it yyyy:mm:dd:hh:mm:ss}}}: Specify a starting time and +date. Uses local aircraft time. +\end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Network Options}\index{network options}\index{options!network} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-httpd={\it port}}}: Enable \Index{http server} on the specified port. +\item{\texttt{-$ $-telnet={\it port}}}: Enable \Index{telnet server} on the specified port. +\item{\texttt{-$ $-jpg-httpd={\it port}}}: Enable screen shot http server on the specified port. +\item{\texttt{-$ $-enable-network-olk}}: Enables Oliver Delises's multi-pilot mode. +\item{\texttt{-$ $-disable-network-olk}}: Disables Oliver Delises's multi-pilot mode (default). +\item{\texttt{-$ $-net-hud}}: HUD displays network info. +\item{\texttt{-$ $-net-id={\it name}}}: Specify your own \Index{callsign} + \end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Route/Waypoint Options}\index{options!route}\index{options!waypoint} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-wp={\it ID[@alt]}}}: Allows specifying a waypoint for the GC autopilot; it +is possible to specify multiple waypoints (i.e. a route) via multiple instances of this +command. +\item{\texttt{-$ $-flight-plan={\it [file]}}}: This is more comfortable if +you have several waypoints. You can specify a file to read them from. +\end{itemize} + +Note: These options are rather geared to the advanced user who knows what he is doing. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{IO Options}\index{options!IO} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-garmin={\it params}}}: Open connection using the Garmin GPS protocol. +\item{\texttt{-$ $-joyclient={\it params}}}: Open connection to an Agwagon joystick. +\item{\texttt{-$ $-native-ctrls={\it params}}}: Open connection using the FG native Controls protocol. +\item{\texttt{-$ $-native-fdm={\it params}}}: Open connection using the FG Native FDM protocol. +\item{\texttt{-$ $-native={\it params}}}: Open connection using the FG Native protocol. +\item{\texttt{-$ $-nmea={\it params}}}: Open connection using the NMEA protocol. +\item{\texttt{-$ $-opengc={\it params}}}: Open connection using the OpenGC protocol. +\item{\texttt{-$ $-props={\it params}}}: Open connection using the interactive property manager. +\item{\texttt{-$ $-pve={\it params}}}: Open connection using the PVE protocol. +\item{\texttt{-$ $-ray={\it params}}}: Open connection using the RayWoodworth motion chair protocol. +\item{\texttt{-$ $-rul={\it params}}}: Open connection using the RUL protocol. +\item{\texttt{-$ $-atc610x}}: Enable atc610x interface. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Debugging options}\index{options!debugging} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item{\texttt{-$ $-trace-read={\it params}}}: Trace the reads for a property; multiple instances are allowed. +\item{\texttt{-$ $-trace-write={\it params}}}: Trace the writes for a property; multiple instances are allowed. +\end{itemize} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Joystick support\label{joysticksupp}}\index{joystick} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Could you imagine a pilot in his or her Cessna controlling the machine with +a keyboard alone? For getting the proper feeling of flight you will need a +joystick/yoke plus rudder pedals, right? However, the combination of +numerous types of \Index{joystick}s, flightsticks, \Index{yoke}s, +\Index{pedal}s etc. on the market with the several target operating systems, +makes joystick support a nontrivial task in \FlightGear{}$\!$. + +Beginning with version 0.8.0, \FlightGear{} has a reworked integrated +joystick support, which automatically detects any joystick, yoke, or pedals +attached. Just try it! If this does work for you, lean back and be happy! + +Unfortunately, given the several combinations of operating systems supported +by \FlightGear{} (possibly in foreign languages) and joysticks available, +chances are your joystick does not work out of the box. Basically, there are +two alternative approaches to get it going, with the first one being +preferred. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Built-in joystick support\label{joystickbuiltin}}\index{options!joystick} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{General remarks\label{generalremarks}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +In order for joystick auto-detection to work, a joystick bindings xml file +must exist for each joystick. This file describes what axes and buttons are +to be used to control which functions in \FlightGear{}. The associations +between functions and axes or buttons are called ''bindings''. This +bindings file can have any name as long as a corresponding entry exists in +the joysticks description file +\medskip + + \texttt{/FlightGear/joysticks.xml} +\medskip + +\noindent +which tells \FlightGear{} where to look for all the bindings files. We will +look at examples later. + +\FlightGear{} includes several such bindings files for several joystick +manufacturers in folders named for each manufacturer. For example, if you +have a CH Products joystick, look in the folder +\medskip + + \texttt{/FlightGear/Input/Joysticks/CH} + \medskip + +\noindent +for a file that might work for your joystick. If such a file exists and +your joystick is working with other applications, then it should work with +\FlightGear{} the first time you run it. If such a file does not exist, +then we will discuss in a later section how to create such a file by cutting +and pasting bindings from the examples that are included with \FlightGear{}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Verifying your joystick is working\label{verifying}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Does your computer see your joystick? One way to answer this question under Linux is to reboot your system and immediately enter on the command line +\medskip + + \texttt{dmesg | grep Joystick} +\medskip + +\noindent +which pipes the boot message to grep which then prints every line in the +boot message that contains the string ''Joystick''. When you do this with a +Saitek joystick attached, you will see a line similar to this one: +\medskip + +\begin{ttfamily} +\noindent + input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0 +\end{ttfamily} +\medskip + +\noindent +This line tells us that a joystick has identified itself as SAITEK CYBORG 3D USB to the operating system. It does not tell us that the joystick driver sees your joystick. If you are working under Windows, the method above does not work, but you can still go on with the next paragraph. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Confirming that the driver recognizes your joystick\label{confirming}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\FlightGear{} ships with a utility called js\underline{~}demo. It will report the number of joysticks attached to a system, their respective ''names'', and their capabilities. Under Linux, you can run js\underline{~}demo from the folder \texttt{/FlightGear/bin} as follows: +\medskip + +\noindent + \texttt{\$ cd /usr/local/FlightGear/bin}\\ + \texttt{\$ ./js\underline{~}demo} +\medskip + +\noindent +Under Windows, open a command shell (Start$\left|\right.$All Programs$\left|\right.$Accessories), go to the \FlightGear{} binary folder and start the program as follows (given \FlightGear{} is installed under \texttt{c:$\backslash$Flightgear}) +\medskip + +\noindent + \texttt{cd {$\backslash$}FlightGear{$\backslash$}bin}\\ + \texttt{js\underline{~}demo.exe} +\medskip + +On our system, the first few lines of output are (stop the program with \^{~}C if it is quickly scrolling past your window!) as follows: +\medskip + +\begin{ttfamily} +\tiny +\noindent +\underline{Joystick test program}.\\ +Joystick 0: ''CH PRODUCTS CH FLIGHT SIM YOKE USB\, ''\\ +Joystick 1: ''CH PRODUCTS CH PRO PEDALS USB\,''\\ +Joystick 2 not detected\\ +Joystick 3 not detected\\ +Joystick 4 not detected\\ +Joystick 5 not detected\\ +Joystick 6 not detected\\ +Joystick 7 not detected\\ ++--------------------JS.0----------------------+--------------------JS.1----------------------+\\ +| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 | Btns Ax:0 Ax:1 Ax:2 |\\ ++----------------------------------------------+----------------------------------------------+\\ +| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0 . | 0000 -1.0 -1.0 -1.0 . . . . . |\\ +\end{ttfamily} + +\noindent +First note that js\underline{~}demo reports which number is assigned to each joystick recognized by the driver. Also, note that the ''name'' each joystick reports is also included between quotes. We will need the names for each bindings file when we begin writing the binding xml files for each joystick. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Identifying the numbering of axes and buttons\label{identifying}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Axis and button numbers can be identified using js\underline{~}demo as follows. By observing the output of js\underline{~}demo while working your joystick axes and buttons you can determine what axis and button numbers are assigned to each joystick axis and button. It should be noted that numbering generally starts with zero. + +The buttons are handled internally as a binary number in which bit 0 (the least significant bit) represents button 0, bit 1 represents button 1, etc., but this number is displayed on the screen in hexadecimal notation, so: +\medskip + +\noindent + 0001 $\Rightarrow$ button 0 pressed\\ + 0002 $\Rightarrow$ button 1 pressed\\ + 0004 $\Rightarrow$ button 2 pressed\\ + 0008 $\Rightarrow$ button 3 pressed\\ + 0010 $\Rightarrow$ button 4 pressed\\ + 0020 $\Rightarrow$ button 5 pressed\\ + 0040 $\Rightarrow$ button 6 pressed\\ + ... etc. up to ...\\ + 8000 $\Rightarrow$ button 15 pressed\\ + ... and ...\\ + 0014 $\Rightarrow$ buttons 2 and 4 pressed simultaneously\\ + ... etc. + \medskip + +For Linux users, there is another option for identifying the ''name'' and the numbers assigned to each axis and button. Most Linux distributions include a very handy program, ''jstest''. With a CH Product Yoke plugged into the system, the following output lines are displayed by jstest: +\medskip + +\begin{ttfamily} +\tiny +\noindent +jstest /dev/js3\\ +Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB) has 7 axes and 12 buttons. Driver version is 2.1.0\\ +Testing\ldots (interrupt to exit)\\ +Axes: 0:\quad 0 1:\quad 0 2:\quad 0 3:\quad 0 4:\quad 0 5:\quad 0 6:\quad 0 Buttons: 0:off 1:off 2:off 3:on 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off\\ +\end{ttfamily} + +\noindent +Note the ''name'' between parentheses. This is the name the system associates with your joystick. + +When you move any control, the numbers change after the axis number corresponding to that moving control and when you depress any button, the ''off'' after the button number corresponding to the button pressed changes to ''on''. In this way, you can quickly write down the axes numbers and button numbers for each function without messing with binary. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Writing or editing joystick binding xml files\label{writing}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +At this point, you have confirmed that the operating system and the joystick driver both recognize your joystick(s). You also know of several ways to identify the joystick ''name'' your joystick reports to the driver and operating system. You will need a written list of what control functions you wish to have assigned to which axis and button and the corresponding numbers. + + Make the following table from what you learned from js\underline{~}demo or jstest above (pencil and paper is fine). Here we assume there are 5 axes including 2 axes associated with the hat. +\medskip + +\begin{tabular}{c|c} + Axis & Button\\\hline + elevator = 0 & view cycle = 0\\ + rudder = 1 & all brakes = 1\\ + aileron = 2 & up trim = 2\\ + throttle = 3 & down trim = 3\\ + leftright hat = 4& extend flaps = 4\\ + foreaft hat = 5 & retract flaps = 5\\ + & decrease RPM = 6\\ + & increase RPM = 7 +\end{tabular} +\medskip + + +We will assume that our hypothetical joystick supplies the ''name'' QUICK STICK 3D USB to the system and driver. With all the examples included with \FlightGear{}, the easiest way to get a so far unsupported joystick to be auto detected, is to edit an existing binding xml file. Look at the xml files in the sub-folders of \texttt{/FlightGear/Input/Joysticks/}. After evaluating at several of the xml binding files supplied with \FlightGear{}, we decide to edit the file + +\noindent + \texttt{/FlightGear/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml}. + + \noindent + This file has all the axes functions above assigned to axes and all the button functions above assigned to buttons. This makes our editing almost trivial. + +Before we begin to edit, we need to choose a name for our bindings xml file, create the folder for the QS joysticks, and copy the original xml file into this directory with this name. +\medskip + + +\begin{ttfamily} +\noindent +\$ cd /usr/local/FlightGear/Input/Joysticks\\ +\$ mkdir QS\\ +\$ cd QS\\ +\$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/\\ +Cyborg-Gold-3d-USB.xml QuickStick.xml +\end{ttfamily} +\medskip + +\noindent +Here, we obviously have supposed a Linux/UNIX system with \FlightGear{} being installed under \texttt{/usr/local/FlightGear}. For a similar procedure under Windows with \FlightGear{} being installed under \texttt{c:\FlightGear}, open a command shell and type +\medskip + +\begin{ttfamily} +\noindent +c:\\ +cd /FlightGear/Input/Joysticks\\ +mkdir QS\\ +cd QS\\ +copy /FlightGear/Input/Joysticks/Saitek/\\ +Cyborg-Gold-3d-USB.xml QuickStick.xml +\end{ttfamily} +\medskip + +\noindent +Next, open \texttt{QuickStick.xml} with your favorite editor. Before we forget to change the joystick name, search for the line containing $<$name$>$. You should find the line +\medskip + +\texttt{SAITEK CYBORG 3D USB$<$/name$>$} +\medskip + +\noindent +and change it to +\medskip + + \texttt{$<$name$>$QUICK STICK 3D USB$<$/name$>$}. + \medskip + +\noindent +This line illustrates a key feature of xml statements. They begin with a $<$tag$>$ and end with a $<$/tag$>$. + +You can now compare your table to the comment table at the top of your file copy. Note that the comments tell us that the Saitek elevator was assigned to axis 1. Search for the string +\medskip + + \texttt{$<$axis n="1"$>$} +\medskip + +\noindent +and change this to +\medskip + + \texttt{$<$axis n="0"$>$.} +\medskip + +Next, note that the Saitek rudder was assigned to axis 2. Search for the string +\medskip + + \texttt{$<$axis n="2"$>$} + + \texttt{$<$axis n="1"$>$.} +\medskip + +\noindent +Continue comparing your table with the comment table for the Saitek and changing the axis numbers and button numbers accordingly. Since QUICKSTICK USB and the Saitek have the same number of axes but different number of buttons, you must delete the buttons left over. Just remember to double check that you have a closing tag for each opening tag or you will get an error using the file. + +Finally, be good to yourself (and others when you submit your new binding file to a \FlightGear{} developers or users archive!), take the time to change the comment table in the edited file to match your changed axis and button assignments. The new comments should match the table you made from the js\underline{~}demo output. Save your edits. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Telling \FlightGear{} about your new bindings xml file\label{telling}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Before \FlightGear{} can use your new xml file, you need to edit the file + +\noindent + \texttt{/FlightGear/joysticks.xml}, + + +\noindent +adding a line that will include your new file if the ''name'' you entered between the name tags matches the name supplied to the driver by your joystick. Add the following line to \texttt{joysticks.xml}. +\medskip + +\noindent + \texttt{} +\medskip + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Some hints for Windows users\label{joyxp}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Basically, the procedures described above should work for Windows as well. If your joystick/yoke/pedals work out of the box or if you get it to work using the methods above, fine. Unfortunately there may be a few problems. + +The first one concerns users of non-US Windows versions. As stated above, you can get the name of the joystick from the program js\underline{~}demo. If you have a non-US version of Windows and the joystick .xml files named above do not contain that special name, just add it on top of the appropriate file in the style of +\medskip + + \texttt{Microsoft-PC-Joysticktreiber } + \medskip + +\noindent +No new entry in the base \texttt{joysticks.xml} file is required. + +Unfortunately, there is one more loophole with Windows joystick support. In +case you have two USB devices attached (for instance a yoke plus pedals), +there may be cases, where the same driver name is reported twice. In this +case, you can get at least the yoke to work by assigning it number 0 (out of +0 and 1). For this purpose, rotate the yoke (aileron control) and observe +the output of js\underline{~}demo. If figures in the first group of colons +(for device 0) change, assignment is correct. If figures in the second group +of colons (for device 1) change, you have to make the yoke the preferred +device first. For doing so, enter the +Windows ''Control panel'', open ''Game controllers'' and select the +''Advanced'' button. Here you can select the yoke as the ''Preferred'' +device. Afterward you can check that assignment by running +js\underline{~}demo again. The yoke should now control the first group of +figures. + +Unfortunately, we did not find a way to get the pedals to work, too, that way. Thus, in cases like this one (and others) you may want to try an alternative method of assigning joystick controls. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Joystick support via .fgfsrc entries\label{fgfsrcjoy}}\index{joystick!.fgfsrc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Fortunately, there is a tool available now, which takes most of the burden from the average user who, maybe, is not that experienced with XML, the language which these files are written in. + +For configuring your joystick using this approach, open a command shell (command prompt under windows, to be found under Start|All programs|Accessories). Change to the directory \texttt{/FlightGear/bin} via e.g. (modify to your path) + +\noindent +\texttt{cd c:$\backslash$FlightGear$\backslash$bin} + +and invoke the tool fgjs via + +\noindent +\texttt{./fgjs} + +on a UNIX/Linux machine, or via + +\noindent +\texttt{fgjs} + +on a Windows machine. The program will tell you which joysticks, if any, were detected. Now follow the commands given on screen, i.e. move the axis and press the buttons as required. Be careful, a minor touch already ''counts'' as a movement. Check the reports on screen. If you feel something went wrong, just re-start the program. + +After you are done with all the axis and switches, the directory above will hold a file called \texttt{fgfsrc.js}. If the \FlightGear{} base directory \texttt{FlightGear} does not already contain an options file \texttt{.fgfsrc} (under UNIX)/\texttt{system.fgfsrc} (under Windows) mentioned above, just copy +\medskip + +\noindent + \texttt{fgfsrc.js} into \texttt{.fgfsrc} (UNIX)/\texttt{system.fgfsrc} (Windows) + \medskip + +\noindent +and place it into the directory \FlightGear{} base directory \texttt{FlightGear}. In case you already wrote an options file, just open it as well as \texttt{fgfsrc.js} with an editor and copy the entries from \texttt{fgfsrc.js} into \texttt{.fgfsrc}/\texttt{system.fgfsrc}. One hint: The output of \texttt{fgjs} is UNIX formatted. As a result, Windows Editor may not display it the proper way. I suggest getting an editor being able to handle UNIX files as well (and oldie but goldie in this respect is PFE, just make a web search for it). My favorite freeware file editor for that purpose, although somewhat dated, is still \Index{PFE}, to be obtained from + +\web{http://www.lancs.ac.uk/people/cpaap/pfe/}. + +The the axis/button assignment of \texttt{fgjs} should, at least, get the axis assignments right, its output may need some tweaking. There may be axes moving the opposite way they should, the dead zones may be too small etc. For instance, I had to change + +\texttt{--prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0} + +into + +\texttt{--prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0} + +(USB CH Flightsim Yoke under Windows XP). Thus, here is a short introduction into the assignments of joystick properties. + +Basically, all axes settings are specified via lines having the following structure: + \medskip + +\noindent +\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ +\texttt{/command=property-scale} (one line)\\ +\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ +\texttt{/property=/controls/}\textit{steering option} (one line)\\ +\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ +\texttt{/dead-band=}\textit{db} (one line)\\ +\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ +\texttt{/offset=}\textit{os} (one line)\\ +\texttt{-$ $-prop:/input/joysticks/js[}\textit{n}\texttt{]/axis[}\textit{m}\texttt{]/binding}\\ +\texttt{/factor=}\textit{fa} (one line)\\ +\medskip + + \noindent + where + \medskip + +\begin{tabular}{rcl} + \textit{n} &=& number of device (usually starting with 0)\\ + \textit{m} &=& number of axis (usually starting with 0)\\ + \textit{steering option} &=& elevator, aileron, rudder, throttle, mixture, pitch\\ + \textit{dead-band} &=& range, within which signals are discarded;\\ + && useful to avoid jittering for minor yoke movements\\ + \textit{offset} &=& specifies, if device not centered in its neutral position\\ + \textit{factor} &=& controls sensitivity of that axis; defaults to +1,\\ + &&with a value of -1 reversing the behavior + \end{tabular} + \medskip + +You should be able to at least get your joystick working along +these lines. Concerning all the finer points, for instance, getting the joystick buttons +working, John Check\index{Check, John} has written a very useful README being included in the base package to be found under \texttt{FlightGear/Docs/Readme/Joystick.html}. In case of any trouble with your input device, it is highly recommended to have a look into this document. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{A glance over our hangar}\index{hangar}\label{hangar}\index{aircraft!survey} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +The following is a Table 1 of all the aircraft presently available for use with \FlightGear{}. In the first column, you will find the name of the aircraft, the second one tells the start option, the third one names the FDM (flight dynamics management model, see Sec. \ref{flight models}), and the last column includes some remarks. Here, ''no exterior model'' means, that there is no aircraft specific external model provided with the base package. As a result, you will see the default blue-yellow glider, when you change to the external view. However, you can download external views for these models from Wolfram Kuss' site at + +\web{http://home.t-online.de/home/Wolfram.Kuss/}. + +Moreover, this list is complete insofar as it covers all aircraft available via the \texttt{-$ $-aircraft=} option. +\eject + +\noindent + Tab.\,1: \textit{Presently available aircraft in \FlightGear{}}. + \medskip + +\noindent +{\scriptsize +\input{tab1.tex} +} + +%% Revision 0.02 1998/09/29 bernhard +%% revision 0.10 1998/10/01 michael +%% final proofreading for release +%% revision 0.11 1998/11/01 michael +%% Added pic from Arizona takeoff +%% revision 0.20 1999/06/04 michael +%% added new options +%% revision 0.3 2000/04/20 michael +%% added numerous new options (number rapidly growing...) +%% revision 0.4 2001/05/12 michael +%% description of .fgfsrc/system.fgfsrc +%% again many new options +%% joystick section added based on John Check's joystick howto +%% updated arizona pic +%% revision 0.4 2001/07/01 martin +%% comments on debug options under Unix +%% revision 0.5 2002/01/01 michael/martin +%% added more options, notably the --aircraft option +%% tweaks in the introductory section +%% revised joystick section based on fgjs +%% New KFSO picture +%% Paragraphs on UIUC + tweaks by Martin +%% Added Section on IIO options +%% revision 0.6 2002/09/05 michael +%% Corrected win shell call in 4.2 +%% added/corrected/deleted several comman line options +%% Added large section on built-in joystick support by Dave Perry +%% Added section/table with complete list of aircraft %% Command line options in quotes for Win batch start \ No newline at end of file