De/Joystick: Difference between revisions

Jump to navigation Jump to search
14,648 bytes added ,  15 May 2010
m
Upload Part 2
m (formating)
m (Upload Part 2)
Line 7: Line 7:
nachschauen. Voraussichtlich gibt es dort mehrere Steuerdateien für unterschiedliche Geräte mit unterschiedlichen Zuordnungen! Bei Geräten mit unterschiedlichem Namen aber gleicher Zuordnung wird keine extra Datei benötigt – allerdings müssen alle dazu passende „Gerätenamen“ in dieser einen Steuerungs-Datei aufgelistet sein.
nachschauen. Voraussichtlich gibt es dort mehrere Steuerdateien für unterschiedliche Geräte mit unterschiedlichen Zuordnungen! Bei Geräten mit unterschiedlichem Namen aber gleicher Zuordnung wird keine extra Datei benötigt – allerdings müssen alle dazu passende „Gerätenamen“ in dieser einen Steuerungs-Datei aufgelistet sein.


==Den Joystick testen==
[[File:FGFS-Joystick-Info.png|609px]]
 
Der standardmäßig in FlightGear integrierte Joystick-Support erkennt im Allgemeinen jeden installierten Joystick automatisch. Somit sollten Sie erst die Installation des FlightGear fertigstellen, ohne sich darüber den Kopf zu zerbrechen! Dann schließen Sie Ihren Joystick an (bevor Sie den FlightGear starten!) und schauen im FlightGear-Menü: “Hilfe” → “Joystick Informationen” nach, ob Ihr Joystick (inklusive des verwendeten Namens, der Belegung aller Schalter und Regler, etc.) erkannt wurde – siehe z.B.:  
Der standardmäßig in FlightGear integrierte Joystick-Support erkennt im Allgemeinen jeden installierten Joystick automatisch. Somit sollten Sie erst die Installation des FlightGear fertigstellen, ohne sich darüber den Kopf zu zerbrechen! Dann schließen Sie Ihren Joystick an (bevor Sie den FlightGear starten!) und schauen im FlightGear-Menü: “Hilfe” → “Joystick Informationen” nach, ob Ihr Joystick (inklusive des verwendeten Namens, der Belegung aller Schalter und Regler, etc.) erkannt wurde – siehe z.B.:  


Line 232: Line 233:
*Die Fehlermeldung einer „NASAL“-Datei (*.nas) – zumeist mit Hinweis von wo aus dieses Nasal-Script aufgerufen wurde. Denken Sie an Ihre „commands“ die Nasal-Scripts starten!
*Die Fehlermeldung einer „NASAL“-Datei (*.nas) – zumeist mit Hinweis von wo aus dieses Nasal-Script aufgerufen wurde. Denken Sie an Ihre „commands“ die Nasal-Scripts starten!
Nach jeder Änderung der Joystick-XML müssen Sie FlightGear komplett neu starten um die Korrekturen zu testen – eine Abkürzung (z.B. Debug → Reload) führt zu Fehlinformationen!!
Nach jeder Änderung der Joystick-XML müssen Sie FlightGear komplett neu starten um die Korrekturen zu testen – eine Abkürzung (z.B. Debug → Reload) führt zu Fehlinformationen!!
==Anhang==
===Die Joystick-Template.xml===
Die ''''FG_ROOT/Input/Joysticks/template.xml'''' können Sie als Basis nehmen um Ihre eigene *.xml zu kreieren. Sehen Sie in der linken Spalte die template.xml – und rechts einige Erläuterungen zu den Funktionsblöcken:
{|
|-
||''''FG_ROOT/Input/Joysticks/template.xml''''||''''Kommentar''''||
|-
||<?xml version="1.0"?>||Format-Angabe – bleibt wie ist!
|-
||<!--
<br>**********************************************
<br>This Template has 6 Axis and 9 Buttons:
<br>Axis 0: Ailerons (Quer-Ruder)
<br>Axis 1: Elevator (Höhen-Ruder)
<br>Axis 2: Rudder (Seiten-Ruder)
<br>Axis 3: Throttle (Gashebel)
<br>Axis 4: View Direction (Sicht Horizontal)
<br>Axis 5: View Elevation (Sicht Vertikal)
<br>
<br>Button 0: View Cycle (Wechsele Sichten)
<br>Button 1: Brakes (Bremse)
<br>Button 2: Left Brake (linke Bremse)
<br>Button 3: Right Brake (rechte Bremse)
<br>Button 4: Flaps Up (Landeklap. einfahren)
<br>Button 5: Flaps Down (Landeklap. ausfahren)
<br>Button 6: Elev.Trim Up (Trim nach steigen)
<br>Button 7: Elev.Trim Down (Trimm nach sinken)
<br>Button 8: Landing Gear Toggle (Fahrwerk ein/aus)
<br>***********************************************
<br>-->
||„<!--“ eröffnet einen Kommentar : Alles von hier bis „-->“ interessiert das Programm nicht – es ist nur für Sie zum Erinnern!
<br>
<br>Es empfiehlt sich sehr, hier die grundsätzlich gewünschten Zuordnungen festzuhalten – insbesondere bei komplexeren Joysticks!!
<br>
<br>Dieser Teil ist im Std. Template.xml z.Z. nicht vorhanden – sollte aber!! Es hat keine funktionale Auswirkung – hilft aber Ihnen gewaltig – insbesondere bei komplexeren Joysticks.
<br>„-->“ Ende des Kommentars
|-
||<PropertyList>||Dies muss immer der erster Befehl sein (und am Ende beendet werden!)
|-
||<name>Your Joystick Name</name>||Hier muss der genaue technische Name des Gerätes stehen! Mehrere <name> Befehle für andere Sticks gleicher Bauart können eingefügt werden.
|-
||<axis n="0">
<br><desc>Aileron</desc>
<br><direction>right</direction>
<br><binding>
<br><command>property-scale</command>
<br><property>/controls/flight/aileron</property>
<br><offset type="double">0.0</offset>
<br><factor type="double">1.0</factor>
<br><power type="int">1</power>
<br></binding>
<br></axis>
<br>
<br><axis n="1">
<br><desc>Elevator</desc>
<br><direction>down/forward</direction>
<br><binding>
<br><command>property-scale</command>
<br><property>/controls/flight/elevator</property>
<br><factor type="double">-1.0</factor>
<br><power type="int">1</power>
<br></binding>
<br></axis>
<br><axis n="2">
<br><desc>Rudder</desc>
<br><direction>right</direction>
<br><binding>
<br><command>property-scale</command>
<br><property>/controls/flight/rudder</property>
<br><factor type="double">1.0</factor>
<br><power type="int">1</power>
<br></binding>
<br></axis>
||Der erste Analog-Wert „0“
<br>
<br>Beachten Sie, dass jeder Start eines Befehlsbereiches (z.B. <axis ..>) mit einem entsprechenden Ende (</axis>) beendet werden muss! Dieses zu vergessen ist die beliebteste (und oft langwierigste!) Fehlerursache.
<br>
<br><desc> beinhaltet eine Beschreibung Ihrer Wahl
<br>
<br><binding> beinhaltet alle Befehle die mit dieser „axis“ oder “button” verbunden werden!
<br>
<br><command> ist der eigentliche Befehl (siehe auch andere xml-Steuerdatei-Dateien für andere Funktionen). Hier: '''Stufenweises Verstellen eines Wertes'''.
<br>
<br><property> ist die FlightGear Funktion die geändert wird! Siehe FlightGear → Menü → File → Browse Internal Properties : Jeder Wert kann geändert werden!! (Aber Sie sollten wissen was Sie tun!!)
|-
||<axis n="3">
<br><desc>Throttle</desc>
<br><direction>forward</direction>
<br><binding>
<br><command>nasal</command>
<br><script>controls.throttleAxis()</script>
<br></binding>
<br></axis>
||Hier wird die Einstellung über ein “nasal”-script vorgenommen.
<br>
<br>Das aufgerufene Script finden Sie in der Datei FG_ROOT/Nasal/controls.nas mit dem Einstieg throttleAxis().
|-
||<axis n="4">
<br><desc>View Direction</desc>
<br><direction>left</direction>
<br><low>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>view.panViewDir(1)</script>
</binding>
</low>
<br><high>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>view.panViewDir(-1)</script>
<br></binding>
<br></high>
<br></axis>
<br>
<br><axis n="5">
<br><desc>View Elevation</desc>
<br><direction>upward</direction>
<br><low>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>view.panViewPitch(1)</script>
<br></binding>
<br></low>
<br><high>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>view.panViewPitch(-1)</script>
<br></binding>
<br></high>
<br></axis>
||Hier wird wieder ein Script ( FG_ROOT/Nasal/view.nas) zur Einstellung verwendet.
<br><br>
<br>Insbesondere interessant sind hier die zwei Funktionen die von einem Head-Switch abgerufen werden: Drücken nach
<br><low> (runter) und <high> (rauf) führen die entgegengesetzten Funktionen aus (siehe (1) oder (-1)).
<br>
<br>Interessant auch das <repeatable> == Wiederholung. D.h. es wird schrittweise verstellt
<br>
<br>Beachten Sie: Es ist nur <direction>left</direction> definiert: „left“ (links) reicht völlig – denn „rechts“ ergibt sich aus (-1)
<br>
<br><axis n="5"> ist sehr ähnlich. Aber hier bedeutet <low> und <high> tatsächlich „rauf“/“runter“. Diese Bezeichnung hat also Nichts mit der tatsächliche Bewegung zu tun – sondern bezeichnet nur „2 Richtungen“! Auch das
<br><desc>View Elevation</desc>
<br>ist nur ein Kommentar den Sie willkürlich wählen können
<br>
<br>Die tatsächliche Flug-Bewegung ergibt sich wiederum aus dem Funktionsaufruf mit (1) oder (-1)
|-
||<button n="0">
<br><desc>View Cycle</desc>
<br><repeatable>false</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>view.stepView(1)</script>
<br></binding>
<br></button>
||Die erste Taste: Auch hier wird ein Script verwendet:
<br><script>view.stepView(1)</script>
<br>und auch hier wird mit jedem Tastendruck eine Stufe weiter geschaltet (repeatable): Aber immer nur in eine Richtung (1). Für Rückwärts würden Sie eine zusätzliche Taste benötigen!
|-
||<button n="1">
<br><desc>Brakes</desc>
<br><binding>
<br><command>nasal</command>
<br><script>controls.applyBrakes(1)</script>
<br></binding>
<br><mod-up>
<br><binding>
<br><command>nasal</command>
<br><script>controls.applyBrakes(0)</script>
<br></binding>
<br></mod-up>
<br></button>
<br>
<br><button n="2">
<br><desc>Left Brake</desc>
<br><binding>
<br><command>nasal</command>
<br><script>controls.applyBrakes(1, -1)</script>
<br></binding>
<br><mod-up>
<br><binding>
<br><command>nasal</command>
<br><script>controls.applyBrakes(0, -1)</script>
<br></binding>
<br></mod-up>
<br></button>
<br>
<br><button n="4">
<br><desc>Flaps Up</desc>
<br><repeatable>false</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>controls.flapsDown(-1)</script>
<br></binding>
<br><mod-up>
<br><binding>
<br><command>nasal</command>
<br><script>controls.flapsDown(0)</script>
<br></binding>
<br></mod-up>
<br></button>
||Ähnlich wie bei „Axis“ das <low> / <high> gibt es für die „Button“ ein '''<mod-up>'''. Dies ergibt 2 Funktionen:
*Die erste vor (bzw. ganz ohne) dem <mod-up>
*Die zweite zwischen <mod-up> und </mod-up>
Also z.B. beim Bremsen (Breaks) wird nur so lange gebremst wie die Taste gedrückt bleibt – beim Loslassen wird die Bremse wieder gelöst!
<br>
<br>Ähnlich sind <button n="2"> bis <button n="5">
<br>
<br>Deshalb habe ich hier die jeweils entgegengesetzte Funktionen 3 und 5 weggelassen.
<br>
<br>„Left Break“ / „right Break“ wird natürlich insbesondere zum Steuern auf den Rollbahnen benötigt.
<br>
<br>Bei <button n="4"> und <button n="5"> wird anstatt „so lange wie gedrückt“ ein:
*Wenn gedrückt (stufenweise) runter
*Wenn losgelassen (stufenweise) rauf.
Hier sollte es sich also besser nicht um einen Taster, sondern um einen 3“ Position Schalter“ handeln – den man in unterschiedliche Richtungen drücken kann!
|-
||<button n="6">
<br><desc>Elevator Trim Forward</desc>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>controls.elevatorTrim(0.75)</script>
<br></binding>
<br></button>
<br>
<br><button n="7">
<br><desc>Elevator Trim Backward</desc>
<br><repeatable>true</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>controls.elevatorTrim(-0.75)</script>
</binding>
<br></button>
||Hier handelt es sich also eindeutig um 2 eigenständige Taster, die die jeweils gegenläufige Bewegung initiieren.!
|-
||<button n="8">
<br><desc>Landing Gear Toggle</desc>
<br><repeatable>false</repeatable>
<br><binding>
<br><command>nasal</command>
<br><script>controls.gearToggle()</script>
<br></binding>
<br></button>
||Gefällt mir nicht: Das Script macht ein „gearToggle“ - wobei nie sicher ist ob das Fahrwerk rein oder raus geht! (Togel = Umschalten).
<br>
<br>Man sollte also 2 Tasten benutzen, wie bei den vorstehenden Trim-Funktion) .
|-
||</PropertyList> ||Vergessen Sie dies nicht am Ende!!
|}
====Einige Sonder-Zuordnungen====
Wenn Sie der glückliche Besitzer eines Joysticks mit vielen „Buttons“ sind, möchten Sie sich vielleicht auch die eine oder andere der folgenden Funktionen auf den Joystick legen <small>(aber denken Sie daran, dass Sie die zutreffende 'n=“x“' selbst herausfinden müssen!!)</small>:
{|
|-
||<button n="x">
<br><desc>PTT - Push To Talk</desc>
<br><binding>
<br><command>nasal</command>
<br><script>controls.ptt(1)</script>
<br></binding>
<br><mod-up>
<br><binding>
<br><command>nasal</command>
<br><script>controls.ptt(0)</script>
<br></binding>
<br></mod-up>
<br></button>
||'''PTT für FGCOM:'''
<br>
<br>Sollte ein Taster sein.
<br><br>Damit wird das Mikrofon ein/aus geschaltet.
|}
{|
|-
||<button n="x">
<br><desc>Thrust Reverse</desc>
<br><binding>
<br><command>nasal</command>
<br><script>set_reverse_allow(1)</script>
<br></binding>
<br><binding>
<br><command>nasal</command>
<br><script>set_reverse(1)</script>
<br></binding>
<br><mod-up>
<br><binding>
<br><command>nasal</command>
<br><script>set_reverse(0)</script>
<br></binding>
<br><binding>
<br><command>nasal</command>
<br><script>set_reverse_allow(0)</script>
<br></binding>
<br></mod-up>
<br></button>
||'''Umkehrschub:'''
<br><br>
Erleichtert den Einsatz des Umkehrschubes zum abbremsen gerade bei Landungen, wenn man alle Hände am Joystick benötigt!
|}
====Erstellung einer „fgjs.xml“====
Siehe die Einführung dazu in Kapitel „fgjs“: 2.5.1.c „fgjs“: Erstellen einer neuen Template. Führen Sie das Programm in Ihrem Privat-Verzeichnis aus – da dort die neu erstellte XML-Steuerdatei problemlos gespeichert werden kann! Das Programm schlägt Ihnen nacheinander alle Einstellungen vor – aber nur in Englisch! Somit hier eine Übersetzung eines Programmablaufes:
{|
|-
||z.B.:
'''Linux:''' IhrName@IhrPC:~$ FG_PROG/fgjs
<br>
<br>'''Vista:''' C:\Users\IhrName>FG_PROG\fgjs.exe
||Öffnen Sie ein Befehlsfenster:
*Lassen Sie die Befehlsebene auf Ihrem Privatverzeichnis (IhrName@IhrPC:~$)
*und geben den Befehl mit der kompletten Pfad-Angabe (FG_PROG/fgjs) ein!
|-
||Found 1 joystick(s)
<br>
<br>Now measuring the dead band of your joystick. The dead band is the area
where the joystick is centered and should not generate any input. Move all
axes around in this dead zone during the ten seconds this test will take.
Press enter to continue.
<br>
<br>10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0
<br>
<br>Joystick 0, axis 0: 0.000000
<br>Joystick 0, axis 1: 0.000000
<br>Joystick 0, axis 2: 0.000000
<br>Joystick 0, axis 3: 0.000000
<br>Joystick 0, axis 4: 0.000000
<br>Joystick 0, axis 5: 0.000000
<br>
<br>Dead band calibration finished. Press enter to start control assignment.
||Einen Joystick gefunden
<br>
<br>Als erstes werden Null-Positionen der Regler / axis) überprüft. Falls Ihre Regler größere Null-Positionen haben, bewegen Sie die Regel nur in dieser Zone. Das Testen dauert 10 Sec.
<br>
<br>'''„Enter“''' zum Fortfahren.
<br><br>(zähle 10 Sec.)
<br><br>Liste der gefunden „axis“ (Regler)
<br>
<br>Kallibration der Null-Zone ist beendet.
<br><br>„Enter“ zum Fortfahren
|-
||Joystick #0 "Mega World USB Game Controllers" has 6 axes
||Feststellung: Der Joystick hat 6 Regler
|-
||
<br>Move the control you wish to use for Aileron right
<br><br>
<br>Pressing a button skips this axis
<br>
<br>Assigned axis 2 on joystick 0 to control Aileron
<br>Is this correct? (y/n) $ y
||Diese Abfrage erfolgt nun nacheinander für alle 6 Regler:
*„bewegen Sie den Regler nach rechts den Sie für das Querruder benutzen wollen:“
*„Drücken Sie irgendeine Taste wenn Sie keinen Regler zuordnen wollen“
*„Bestätigen Sie diese Zuordnung/Skip mit y“ („n“ wiederholt den Versuch)
|-
||Aileron right Querruder rechts
<br>Elevator down/forward Höhenruder runter/vorwärts
<br>Rudder right Seitenruder rechts
<br>Throttle forward Gashebel vorwärts
<br>View Direction left Sicht-Richtung links
<br>View Elevation upward Sicht-Vertikal aufwärts
||Dies sind die 6 Funktionen und Richtungen die für die Regler dieses Joysticks nacheinander abgefragt werden:
|-
||Brakes Bremsen
<br>Left Brake (nur) linke Bremse
<br>Right Brake (nur) rechte Bremse
<br>Flaps Up Landeklappen rauf
<br>Flaps Down Landeklappen runter
<br>Elevator Trim Forward Höhen-Trim vorwärts Elevator Trim Backward Höhen-Trim rückwärts
<br>Landing Gear Toggle Fahrwerk rein/raus
||Dies sind die 8 Funktionen und Richtungen die für die Tasten/Schalter dieses Joysticks nacheinander abgefragt werden:
<br>
<br>Im Gegensatz zu obigen bewegen Sie nun einen Regler zum Überspringen einer Zuordnung.
|_
||Your joystick settings are in js0.xml.
<br>Check and edit as desired. Once you are happy,
move relevant js<n>.xml files to $FG_ROOT/Input/Joysticks/ (if you didn't use
an attached controller, you don't need to move the corresponding file)
||Die generierte Datei „js0.xml“ („0“ für Joystick-0) steht im gleichen Verzeichnis in dem das Programm (innerhalb des Befehls-Fensters) ausgeführt wurde! (Mein Vorschlag war: „IhrName@IhrPC/js0.xml“
<br>
<br>bzw. in Win “C:\Users\IhrName\js0.xml“)
|-
||root@IhrPC:/usr/games# ||Ende des Programms
|}
652

edits

Navigation menu