Welcher Joystick?

Installation, technische Probleme

Welcher Joystick?

Beitragvon Sanni » Sa Nov 07, 2015 3:50 pm

Hallo Ihrs,

heute brauche ich mal technische Hilfe. Hardware ist nicht so mein Ding. Und mein Speedlink ist nicht so wirklich der beste -- ich schwabbel damit im Hover ganz schön durch die Gegend. An Präzisionsflug ist da garnicht zu denken.
Ein Bekannter hat mir nun einen Saitek Aviator (PS40) oder einen Logitech Extreme 3D Pro angeboten, den ich für (hoffentlich) wenig Geld bekommen könnte.
Was haltet ihr davon und wenn nicht der, welchen könntet ihr fürs Helifliegen empfehlen.
Es sollte einer sein, den ich in der linken Hand halten kann. Die meisten dieser Scheisserchen sind ja leider für Rechtshänder gemacht und der Griff ist dann wenig vorteilhaft geformt.

Danke schonmal, Sanni
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 409
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Welcher Joystick?

Beitragvon dg-505 » Sa Nov 07, 2015 5:37 pm

Hi Sanni

soweit ich weiß, gibts den Logitech Extreme Pro nur für Rechtshänder, aber ansonsten ist das ein sehr gutes Gerät. Habe ihn selber (leider) nicht, durfte jedoch gelegentlich mal damit fliegen. Bei dem Preis (neu ca. 50 €) macht man mit dem nix falsch.
Den Saitek PS 40 kenn ich net, aber den Bildern in Goggle nach zu urteilen hat der keine Handauflage und nen einigermaßen symmetrischen Griff, ist von daher also besser für Linkshänder geeignet. Man muss halt nur schauen, dass man mit den Knöpfchen am Griff klarkommt, die sind idR auch für Rechtshänder ausgelegt.
Wenns um sehr hohe Präzision geht, sind die Joysticks in diesem Preissegment auch einfach nicht die richtigen. Zwar kann man im Einzelfall auch Glück haben, aber generell muss man deutlich tiefer in die Tasche greifen, um hohe Präzision (und Rückstellgenauigkeit!) zu erhalten.

Überhaupt ist das mit Helis und Joysticks ja auch so ne Sache: Man hat halt nicht nur die 3 Achsen und das Gas wie bei Flächenflugzeugen, sondern die 3 Achsen mit Gas und Pitch. Das Gas ist ja normalerweise als Twistachse in den Pitchhebel eingebaut (korrigiert mich, wenn ich hier falsch liege), was es bei einem normalen Joystick ja nicht gibt.
Das macht das Helifliegen mit nem Joystick ziemlich schwierig. Und spezielle Kontrolleinheiten für Helis sind nochmal deutlich teurer.

Naja, ich würde Dir raten, dir die beiden Joysticks mal auszuleihen und zu testen (wenn das möglich ist). Das sollte Dir am ehesten weiterhelfen...

Hoffe, das war jetzt ein wenig hilfreich.
Joni
If flying was the language of men, soaring would be it's poetry
DHC-6 Twin Otter
Benutzeravatar
dg-505
 
Beiträge: 177
Registriert: Mo Mär 17, 2014 4:12 pm
Wohnort: Mittelhessen
Callsign:

Re: Welcher Joystick?

Beitragvon rollershutter » So Nov 22, 2015 7:53 pm

Hallo Sanni,
das ist zwar keine Antwort auf deine eigentliche Frage, aber evtl. hilft es dir mit deinem jetzigen Stick...

um nach Jahren mal wieder über einen benutzbaren Joystick zu verfügen, meine letzten sind noch für den Gameport-Anschluss ;) - also USB sollte es sein, habe ich mir einen Thrustmaster T-Flight Hotas X geholt.

Nun bin ich nach ebenfalls jahrelanger Benutzung einer Funkfernsteuerung (über USB-Adapter bzw. Audio-Eingang) als Joystick-Ersatz anscheinend verwöhnt von der Präzision der Steuerknüppel, denn der Joystick kommt mir auch grob und impulsiv vor... :(
Eben das präzise Aussteuern z.B. mit einem Heli geht damit so erstmal nicht gut oder nur sehr schwierig.

Ich habe dann nach einer Dämpfungs-/Filtermöglichkeit für die Steuerungsausschläge gesucht und dachte erst, die Joystick-Konfiguration 'power' wäre das Ding, was ich brauche.
Der Wert des Knüppelausschlags wird dann mit dem Wert 'power' potenziert, das heißt je geringer der Knüppelausschlag, desto feiner der Steuerungsimpuls, wobei aber der maximale Knüppelausschlag immernoch zu maximalem Steuerimpuls führt.
Jedoch nimmt die Sensibilität des Joysticks im Übergang von: "feiner im geringen Ausschlagsbereich" bis hin zum vollen Ausschlag dann gefühlt auf einmal stark zu, was ich dann auch als schwierig wahrgenommen habe.

Ich habe dann den Wert 'factor' auf meinen Joystickachsen drastisch runtergeschraubt (0.5-0.8), was speziell beim Helifliegen zu einer besseren Steuerbarkeit führt, dann hat man zwar nicht mehr den vollen Steuerausschlag, aber den brauche ich beim vorsichtigen Üben eh erstmal nicht. ;)

Ich probiere da noch ein bischen rum, momentan habe ich einen relativ hohen Wert 'factor' (0.8-0.9) und einen geringen Wert 'power' (2)
Code: Alles auswählen
  <axis>
    <desc type="string">Aileron</desc>
    <binding>
      <command type="string">property-scale</command>
      <property type="string">/controls/flight/aileron</property>
      <dead-band type="double">0</dead-band>
      <factor type="double">0.8</factor>
      <power type="int">2</power>
      <offset type="double">0</offset>
    </binding>
  </axis>

Damit fühlt sich mein Joystick schon wesentlich besser an.
Gruß, Sebastian

PS: Weiß jemand nach welchen Kriterien FG die Joystickkonfigurations-XML auswählt?
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:

Re: Welcher Joystick?

Beitragvon Sanni » Mo Nov 23, 2015 9:37 pm

Nun habe ich den Saitek x45 -- was für ein Unterschied..... :shock: :lol:
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 409
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Welcher Joystick?

Beitragvon Sanni » Di Dez 01, 2015 1:09 pm

Die Idee mit dem Faktor ist nicht schlecht. Das mache ich anfangs auch gerne Aber warum dann noch potenzieren? Damit machst du doch den Vorteil des Faktorisierens wieder rückgängig.
Den Faktor kleiner als 1 zu machen hat natürlich auch zur Folge, dass du das Werte-Ende nicht mehr erreichst -- nicht vergessen. :)

Der Joystick wird anhand des Names ausgewählt, der bei der Abfrage dessen vom Joystick selbst gemeldet wird.
Zu Beginn jeder Joystick-Konfigurationsdatei ist ein Abschnitt, in dem ein paar Einträge mit dem Tag
Code: Alles auswählen
<name>NAME_DES_JOYSTICKS</name>

Der Saitek X45 Joystick meldet sich gleich mit ein paar unterschiedlich möglichen Namen:
Code: Alles auswählen
  <name>Saitek X45</name>
  <name>Saitek Saitek X45</name>
  <name>Saitek X45 Flight Controller</name>
  <name>Saitek X45 Flight Controller USB</name>
  <name>Saitek X45 Flight Control Stick </name>
  <name>Saitek Saitek X45 Flight Control Stick </name>

Dieser Name wird gesucht, und dann die entsprechende Konfigurationsdatei benutzt.

Hier übrigens mal meine alte Joystick-Konfig vom SpeedLink Wasp²:
Code: Alles auswählen
<?xml version="1.0" ?>

<PropertyList>

 <!-- Configuration File for Speedlink Wasp Joystick for Helicopters

      Axis
        0  aileron                   hor.
        1  elevator                  vert.
        2  = 0
        3  *** not assigned ***
        4  rudder                    wheel
        5  rudder slow               coolie hat hor.
        6  collective                coolie hat vert.

      Button
        0  center view
        1  center rudder
        2  collective down slow
        3  collective up slow
        4  empty
        5  empty
        6  collective down faster
        7  collective up faster

  -->

<name>DragonRise Inc.   Generic   USB  Joystick  </name>



<!-- Stick hor. Aileron -->
  <axis n="2">
    <desc>Aileron</desc>
    <direction>right/left</direction>
<!--    <tolerance>0.1</tolerance> -->
<!--    <dead-band>0.15</dead-band> -->

    <binding> <!-- UH-1 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">uh1</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/aileron</property>
      <factor type="double">0.75</factor>
      <!-- offset: + rechtslastig, - linkslastig -->
    </binding>

    <binding> <!-- EC135 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">ec135p2</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/aileron</property>
      <factor type="double"> 0.20</factor>
      <!-- offset: + rechtslastig, - linkslastig  -->
    </binding>

    <binding> <!-- others -->
      <condition>
        <and>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">uh1</value>
          </not-equals>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">ec135p2</value>
          </not-equals>
        </and>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/aileron</property>
      <factor type="double">0.6</factor>
      <!-- offset: + rechtslastig, - linkslastig  -->
    </binding>

  </axis>



<!-- Stick vert. -->
  <axis n="1">
    <desc>Elevator</desc>
    <direction>down/forward</direction>
    <dead-band>0.1</dead-band>

    <binding> <!-- UH-1 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">uh1</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/elevator</property>
      <factor type="double">-0.60</factor>
      <offset type="double">-0.50</offset>
      <!-- offset:  + Hecklastig, - Kopflastig -->
    </binding>

    <binding> <!-- EC135 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">ec135p2</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/elevator</property>
      <factor type="double">-0.40</factor>
      <offset type="double"> 0.15</offset>
      <!-- offset:  + Hecklastig, - Kopflastig -->
    </binding>

    <binding> <!-- others -->
      <condition>
        <and>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">uh1</value>
          </not-equals>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">ec135p2</value>
          </not-equals>
        </and>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/elevator</property>
      <factor type="double">-0.50</factor>
      <!-- offset:  + Hecklastig, - Kopflastig -->
    </binding>

  </axis>



<!-- wheel -->
  <axis n="3">
    <desc>Rudder</desc>

    <binding> <!-- UH-1 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">uh1</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/rudder</property>
      <factor>1.00</factor>
      <offset>0.35</offset>
    </binding>

    <binding> <!-- EC135 -->
      <condition>
        <equals>
          <property>/sim/aircraft</property>
          <value type="string">ec135p2</value>
        </equals>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/rudder</property>
      <factor>0.7</factor>
    </binding>

    <binding> <!-- others -->
      <condition>
        <and>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">uh1</value>
          </not-equals>
          <not-equals>
            <property>/sim/aircraft</property>
            <value type="string">ec135p2</value>
          </not-equals>
        </and>
      </condition>
      <command>property-scale</command>
      <property>/controls/flight/rudder</property>
      <factor>0.75</factor>
    </binding>

  </axis>



<!-- coolie hor. view -->
  <axis n="4">
   <desc>View Direction</desc>
   <low>
    <repeatable>true</repeatable>
    <binding>
     <command>property-adjust</command>
     <property>/sim/current-view/goal-heading-offset-deg</property>
     <step type="double">1.5</step>
    </binding>
   </low>
   <high>
    <repeatable>true</repeatable>
    <binding>
     <command>property-adjust</command>
     <property>/sim/current-view/goal-heading-offset-deg</property>
     <step type="double">-1.5</step>
    </binding>
   </high>
  </axis>



<!-- coolie vert. view  -->
  <axis n="5">
    <desc>Cycle View up and down</desc>
    <low>
      <repeatable type="bool">true</repeatable>
      <binding>
        <command>property-adjust</command>
        <property>/sim/current-view/goal-pitch-offset-deg</property>
        <step type="double">0.7</step>
      </binding>
    </low>
    <high>
      <repeatable type="bool">true</repeatable>
      <binding>
        <command>property-adjust</command>
        <property>/sim/current-view/goal-pitch-offset-deg</property>
        <step type="double">-0.7</step>
      </binding>
    </high>
  </axis>


<!-- Buttons -->
<!-- 1 center view-->
  <button n="0">
    <desc>Collective up fast</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.adjThrottle(-0.75)</script>
    </binding>
  </button>

<!-- 2 Collective down fast -->
  <button n="1">
    <desc>Collective down fast</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
        <command>nasal</command>
        <script>controls.adjThrottle(0.75)</script>
    </binding>
  </button>

<!-- 3 Collective up -->
  <button n="2">
    <desc>Collective up</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.adjThrottle(-0.25)</script>
    </binding>
  </button>

<!-- 4 Collective down -->
  <button n="3">
    <desc>Collective down</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
        <command>nasal</command>
        <script>controls.adjThrottle(0.25)</script>
    </binding>
  </button>

<!-- 5 -->
  <button n="4">
    <desc>Zoom out</desc>
    <repeatable>true</repeatable>
    <binding>
      <command>nasal</command>
      <script>view.increase()</script>
    </binding>
  </button>

<!-- 6 -->
  <button n="5">
  </button>

<!-- 7 -->
  <button n="6">
    <desc>Zoom in</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>view.decrease()</script>
    </binding>
  </button>

<!-- 8 -->
  <button n="7">
    <desc>center view</desc>
    <binding>
      <repeatable>false</repeatable>
      <command>nasal</command>
      <script>view.resetView()</script>
    </binding>
  </button>

</PropertyList>



<!--
    <desc>Rudder</desc>
    <low>
      <repeatable>true</repeatable>
      <binding>
        <command>property-adjust</command>
        <property>/controls/flight/rudder</property>
        <step type="double">-0.01</step>
      </binding>
    </low>
    <high>
      <repeatable>true</repeatable>
     <binding>
       <command>property-adjust</command>
       <property>/controls/flight/rudder</property>
       <step type="double">0.01</step>
     </binding>
    </high>

  <desc>Throttle</desc>
  <direction>forward</direction>
  <binding>
   <command>nasal</command>
   <script>controls.throttleAxis()</script>
  </binding>


  <desc>Center View</desc>
  <repeatable type="bool">false</repeatable>
  <binding>
   <command>property-assign</command>
   <property>/sim/current-view/goal-heading-offset-deg</property>
   <value type="double">0.0</value>
  </binding>
  <binding>
   <command>property-assign</command>
   <property>/sim/current-view/goal-pitch-offset-deg</property>
   <value type="double">0.0</value>
  </binding>

  <desc>center view</desc>
  <binding>
    <command>nasal</command>
    <script>view.resetView</script>
  </binding>

  <desc>Rudder</desc>
  <direction>right</direction>
  <binding>
    <command>property-scale</command>
    <property>/controls/flight/rudder</property>
    <factor type="double">1.0</factor>
    <power type="int">1</power>
  </binding>

  <desc>Center rudder</desc>
  <repeatable type="bool">false</repeatable>
  <binding>
    <command>nasal</command>
    <script>controls.centerRudder()</script>
  </binding>

  <desc>Collective</desc>
  <low>
    <repeatable>true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.adjThrottle(-0.30)</script>
    </binding>
  </low>
  <high>
    <repeatable>true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.adjThrottle(0.30)</script>
    </binding>
  </high>

  <desc>Cycle View down</desc>
  <repeatable type="bool">true</repeatable>
  <binding>
    <command>property-adjust</command>
    <property>/sim/current-view/goal-pitch-offset-deg</property>
    <step type="double">1.0</step>
  </binding>

-->

und die vom Saitek X45:
Code: Alles auswählen
 <?xml version="1.0"?>

<!--

Linux/Windows/Mac Axis Numbers:
  0      Roll (positive == right)
  1     Pitch (positive == down/back/nose-up)
  2     top "rotary dial" on the throttle (positive == CCW)
  3      Rocker switch ("rudder" control) on the throttle (positive == right)
  4     Throttle (positive == back/down/idle)
  5     Bottom "rotary dial" on the throttle (positive == CW)
     Strange this axis doesn't seem to exist on Mac OS X!
  6     Lower right hat horizontal axis (positive == right)
  7     Lower right hat vertical axis (positive == down (Mac positive is UP))

Button Numbers (Identical b/w Linux/Windows/Mac):
  0  Trigger
  1  Stick top "A" switch
  2  Stick top "B" switch
  3  Stick top "launch/fire" switch
  4  Throttle "D" switch
  5  Throttle "mouse" switch (tiny black thumb button)
  6  Stick "pinkie" switch
  7  Stick front "C" switch
  8  -+                                left position   ("M1")
  9   +- Throttle "mode" 3-way switch: middle position ("M2")
 10  -+                                right position  ("M3")
 11  -+                                left position
 12   +- Throttle "Aux" 3-way switch:  middle position
 13  -+                                right position
 14  Upper left hat in "up" position
 15  Upper left hat in "right" position
 16  Upper left hat in "down" position
 17  Upper left hat in "left" position
 18  Throttle forefinger hat in "up/back" position
 19  Throttle forefinger hat in "right" position
 20  Throttle forefinger hat in "down/forward" position
 21  Throttle forefinger hat in "left" position
 22  Throttle thumb hat in "up" position
 23  Throttle thumb hat in "right" position
 24  Throttle thumb hat in "down" position
 25  Throttle thumb hat in "left" position

$Id$
-->

<PropertyList>
  <name>Saitek X45</name>
  <name>Saitek Saitek X45</name>
  <name>Saitek X45 Flight Controller</name>
  <name>Saitek X45 Flight Controller USB</name>
  <name>Saitek X45 Flight Control Stick </name>
  <name>Saitek Saitek X45 Flight Control Stick </name>


<!-- horizontal -->
  <axis n="0">
    <desc>Aileron</desc>
    <binding>
      <command>property-scale</command>
      <property>/controls/flight/aileron</property>
      <squared type="bool">true</squared>
      <factor>0.75</factor>
      <offset>-0.00</offset>
    </binding>
  </axis>


<!-- vertical -->
  <axis n="1">
    <desc>Elevator</desc>
    <binding>
      <command>property-scale</command>
      <property>/controls/flight/elevator</property>
      <factor type="double">-1.0</factor>
      <squared type="bool">true</squared>
    </binding>
  </axis>


<!-- upper rotary dial throttle  -->
  <axis n="2">
  </axis>


<!-- rocker switch throttle -->
  <axis n="3">
    <desc>Rudder</desc>
    <binding>
      <command>property-scale</command>
      <property>/controls/flight/rudder</property>
      <factor>0.7</factor>
      <offset>0.3</offset>
    </binding>

    <binding>
      <command>nasal</command>
      <script><![CDATA[
        # In mode 3 (taxiing), map the wheelbrakes
        if(getprop("/input/joysticks/js[0]/saitek-x45-mode") == 3) {
          val = cmdarg().getNode("setting").getValue();
          setprop("/controls/gear/brake-left", 0);
          setprop("/controls/gear/brake-right", 0);
          if(val > 0) { setprop("/controls/gear/brake-right", val); }
          else        { setprop("/controls/gear/brake-left", -val); }
        }
      ]]></script>
    </binding>
  </axis>


<!-- throttle -->
  <axis n="4">
    <desc>Collective</desc>
    <binding>
      <command>nasal</command>
      <script>controls.throttleAxis()</script>
    </binding>
  </axis>


<!-- lower rotary dial throttle -->
  <axis n="5">
    <desc>Throttle</desc>
    <binding>
      <command>property-scale</command>
      <property>/controls/flight/throttle</property>
    </binding>
  </axis>


<!-- lower left hat stick -->
  <axis n="6">
    <desc>View Direction</desc>
    <low>
      <repeatable>true</repeatable>
      <binding>
        <command>nasal</command>
        <script>view.panViewDir(1)</script>
      </binding>
    </low>
    <high>
      <repeatable>true</repeatable>
      <binding>
        <command>nasal</command>
        <script>view.panViewDir(-1)</script>
      </binding>
    </high>
  </axis>

  <axis n="7">
    <desc>View Elevation</desc>
    <low>
      <repeatable>true</repeatable>
      <binding>
        <command>nasal</command>
        <script>view.panViewPitch(1)</script>
      </binding>
    </low>
    <high>
      <repeatable>true</repeatable>
      <binding>
        <command>nasal</command>
        <script>view.panViewPitch(-1)</script>
      </binding>
    </high>
  </axis>



<!-- ***** Buttons ***** -->



<button n="0"> <!-- trigger -->
  </button>


  <button n="1"> <!-- A -->
    <desc>landing light toggle</desc>
    <repeatable>false</repeatable>
    <binding>
      <command>property-toggle</command>
      <property>/controls/switches/ldglt</property>
    </binding>
  </button>

  <button n="2"> <!-- B -->
    <desc>search light toggle</desc>
    <repeatable>false</repeatable>
    <binding>
      <command>property-toggle</command>
      <property>/controls/switches/sl</property>
    </binding>
  </button>


  <button n="3"> <!-- fire -->
    <desc>stop engine</desc>
    <binding>
      <command>nasal</command>
      <script>uh1.autostart(0)</script>
    </binding>
    <binding>
      <command>nasal</command>
      <script>start_engine(0)</script>
    </binding>
  </button>

  <button n="4"> <!-- D -->
    <desc>Reset View</desc>
    <binding>
      <command>nasal</command>
      <script>view.resetView()</script>
    </binding>
  </button>


  <button n="5"> <!-- black mouse switch -->
    <desc>reset search light position</desc>
    <binding>
      <command>property-assign</command>
      <property>/instrumentation/searchlight/elevation-deg</property>
      <value>0</value>
    </binding>
    <binding>
      <command>property-assign</command>
      <property>/instrumentation/searchlight/heading-deg</property>
      <value>0</value>
    </binding>
  </button>

  <button n="6"> <!-- pinkie -->
    <desc>Reset View</desc>
    <binding>
      <command>nasal</command>
      <script>view.resetView()</script>
    </binding>
  </button>


  <button n="7"> <!-- C -->
    <desc>start engine</desc>
    <binding>
      <command>nasal</command>
      <script>uh1.autostart(1)</script>
    </binding>
    <binding>
      <command>nasal</command>
      <script>start_engine(1)</script>
    </binding>
  </button>


<!-- mode switch -->
  <button n="8"> <!-- left -->
    <desc>Mode 1</desc>
    <binding>
      <command>nasal</command>
      <script>setprop("/input/joysticks/js[0]/saitek-x45-mode", 1)</script>
    </binding>
  </button>

  <button n="9"> <!-- middle -->
    <desc>Mode 2</desc>
    <binding>
      <command>nasal</command>
      <script>setprop("/input/joysticks/js[0]/saitek-x45-mode", 2)</script>
    </binding>
  </button>

  <button n="10"> <!-- right -->
    <desc>Mode 3</desc>
    <binding>
      <command>nasal</command>
      <script>setprop("/input/joysticks/js[0]/saitek-x45-mode", 3)</script>
    </binding>
  </button>


<!-- aux switch -->
  <button n="11"> <!-- left -->
  </button>

  <button n="12"> <!-- middle -->
  </button>

  <button n="13"> <!-- right -->
  </button>


<!-- upper left hat stick -->
  <button n="14"> <!-- up -->
  </button>

  <button n="15"> <!-- right -->
  </button>

  <button n="16"> <!-- down -->
  </button>

  <button n="17"> <!-- left -->
  </button>


<!-- forefinger hat throttle -->
  <button n="18"> <!-- up -->
    <desc>Zoom out</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>view.increase()</script>
    </binding>
  </button>

  <button n="19"> <!-- right -->
  </button>

  <button n="20"> <!-- down -->
    <desc>Zoom in</desc>
    <repeatable>true</repeatable>
    <binding>
      <command>nasal</command>
      <script>view.decrease()</script>
    </binding>
  </button>

  <button n="21"> <!-- left -->
  </button>

<!-- thumb hat throttle -->
  <button n="22"> <!-- up -->
    <desc>move Search Light up</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <condition>
        <property>/systems/electrical/outputs/search_light</property>
      </condition>
      <command>property-adjust</command>
      <property>/instrumentation/searchlight/elevation-deg</property>
      <step>1.0</step>
      <min>-60</min>
      <max> 12</max>
      <wrap>false</wrap>
    </binding>
  </button>

  <button n="23"> <!-- right -->
    <desc>move Search Light right</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <condition>
        <property>/systems/electrical/outputs/search_light</property>
      </condition>
      <command>property-adjust</command>
      <property>/instrumentation/searchlight/heading-deg</property>
      <step>-1.0</step>
      <min>-60</min>
      <max> 60</max>
      <wrap>false</wrap>
    </binding>
  </button>

  <button n="24"> <!-- down -->
    <desc>move Search Light down</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <condition>
        <property>/systems/electrical/outputs/search_light</property>
      </condition>
      <command>property-adjust</command>
      <property>/instrumentation/searchlight/elevation-deg</property>
      <step>-1.0</step>
      <min>-60</min>
      <max> 12</max>
      <wrap>false</wrap>
    </binding>
  </button>

  <button n="25"> <!-- left -->
    <desc>move Search Light left</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <condition>
        <property>/systems/electrical/outputs/search_light</property>
      </condition>
      <command>property-adjust</command>
      <property>/instrumentation/searchlight/heading-deg</property>
      <step>1.0</step>
      <min>-60</min>
      <max> 60</max>
      <wrap>false</wrap>
    </binding>
  </button>
 
</PropertyList>


<!--
    <desc>Brakes</desc>
    <binding>
      <command>nasal</command>
      <script>controls.applyBrakes(1)</script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
        <script>controls.applyBrakes(0)</script>
      </binding>
    </mod-up>

    <desc>Landing Gear Up/Down Toggle</desc>
    <binding>
      <command>nasal</command>
      <script>controls.gearToggle()</script>
    </binding>

    <desc>Elevator trim down</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.elevatorTrim(1)</script>
    </binding>

    <desc>Aileron trim right</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.aileronTrim(1)</script>
    </binding>

    <desc>Elevator trim up</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.elevatorTrim(-1)</script>
    </binding>

    <desc>Aileron trim left</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.aileronTrim(-1)</script>
    </binding>

    <desc>Decrease flaps</desc>
    <binding>
      <command>nasal</command>
      <script>controls.flapsDown(-1)</script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
        <script>controls.flapsDown(0)</script>
      </binding>
    </mod-up>

    <desc>Increase flaps</desc>
    <binding>
      <command>nasal</command>
      <script>controls.flapsDown(1)</script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
        <script>controls.flapsDown(0)</script>
      </binding>
    </mod-up>

    <desc>Rudder trim right</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.rudderTrim(1)</script>
    </binding>

    <desc>Rudder trim left</desc>
    <repeatable type="bool">true</repeatable>
    <binding>
      <command>nasal</command>
      <script>controls.rudderTrim(-1)</script>
    </binding>

    <desc>Decrease flaps</desc>
    <binding>
      <command>nasal</command>
      <script>controls.flapsDown(-1)</script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
        <script>controls.flapsDown(0)</script>
      </binding>
    </mod-up>

    <desc>Mixture</desc>
    <binding>
      <command>nasal</command>
      <script>controls.mixtureAxis()</script>
    </binding>

    <desc>Propeller Advance</desc>
    <binding>
      <command>nasal</command>
      <script>controls.propellerAxis(-1)</script>
    </binding>

-->

Da kannst du sehen, wie viel möglich ist.
Im unteren Teil sind Code-Schnüppies, die ich zwar nicht brauche, aber doch nicht unbedingt löschen wollte, für den Fall, dass doch :)
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 409
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Welcher Joystick?

Beitragvon rollershutter » Fr Dez 11, 2015 8:09 pm

Hi,
Danke für deine Konfigurations-Beispiele.

Die Möglichkeit, Aircraft-abhängige Abschnitte zu haben, ist mir erst neulich untergekommen - ist natürlich auch super - ich muss mir da noch was zusammenbasteln.

Wenn ich das richtig verstehe, wirkt bei Werten zwischen 0 und 1 (Faktor) das Potenzieren immer dahingehend dass ein Wert weiter veringert wird. Je kleiner der Ausgangswert (bzw der Betrag), desto stärker die Verringerung, d.h. über die Potenz werden alle Ausgangswerte zwischen 0 und 1 - bzw. zwischen 0 und -1 - Richtung 0 gedrückt, der Effekt nimmt ab, je weiter der Wert gegen 1 bzw. -1 geht.
Bei Ausgangswerten zwischen -1 und 1 wird also ein Wert durch das Potenzieren nie größer werden.

Deswegen ist das Potenzieren eine Möglichkeit, den Faktor gerade im feinen Bereich zu noch etwas feineren Ausschlägen zu bewegen, allerdings ist der Nebeneffekt, dass man bei größeren Knüppelwegen dann kein "lineares" Gefühl mehr hat, und das finde ich auch etwas gewöhnungsbedürftig. ;)

Danke auch für deine Erläuterung zur Joystick-xml. Ich hatte mehrere Konfigurationsdateien zu einem Joystick und wunderte mich, warum meine "neue" Datei nicht ausgewählt wurde... - da ich eine zusätzliche Erklärung (dann auch noch mit ungültigen Zeichen) im Namensstring verwendet habe hat FG die xml nicht genommen. :D
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:

Re: Welcher Joystick?

Beitragvon dg-505 » Fr Jan 01, 2016 8:27 pm

Frohes Neues!! :D

Hab gerade einen Joystick gefunden, der sowohl für Rechts- als auch für Linkshänder geeignet ist:
Der Thrustmaster T.16000M (im Link bei Alternate)

Joni
If flying was the language of men, soaring would be it's poetry
DHC-6 Twin Otter
Benutzeravatar
dg-505
 
Beiträge: 177
Registriert: Mo Mär 17, 2014 4:12 pm
Wohnort: Mittelhessen
Callsign:

Re: Welcher Joystick?

Beitragvon chris_blues » Sa Jan 02, 2016 2:14 pm

Sieht gut aus!
Nur nicht zögern, mir zu sagen daß ich im Unrecht bin, oder einfach nur nerve! Aber bitte nett bleiben! :)
2x2.6GHz AMD CPU - 8GB DDR2 RAM - NVidia GeForce GTS450 1GB DDR5 - Debian Testing 64bit - FG git
Benutzeravatar
chris_blues
 
Beiträge: 303
Registriert: Di Jul 30, 2013 12:52 am
Wohnort: /home/chris
Callsign: chris_blues


Zurück zu Tech Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron