Angepinnt Joystick-Konfiguration per XML

      So hier meine XML Datei, ich bin schlicht zu blöde den fehler zu finden,

      <ActionMaps version="0" >
      <actionmap name="spaceship_movement">
      <action name="v_yaw">
      <rebind device="joystick" input="js1_x" />
      </action>
      <action name="v_roll">
      <rebind device="joystick" input="js1_rotz" />
      </action>
      </actionmap>
      <actionmap name="spaceship_weapons">
      <action name="v_attack1_group2">
      <rebind device="joystick" input="js1_button2" />
      </action>
      <action name="v_attack1_group3">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>
      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js2_button5" />
      </actionmap>
      <actionmap name="spaceship_targeting">
      <action name="v_target_missile_lock_focused">
      <rebind device="joystick" input="js2_button5" />
      </action>
      </actionmap>
      </ActionMaps>

      hmmmm.... also mir fällt auf Anhieb bei dem ".....weapon_launch_missile" Block auf, dass die Zeile </action> fehlt. Ansonsten solltest du noch die Gegenmaßnahmen neu belegen.

      Hier mal meine komplette XML:

      <!-- TM Flight X HOTAS Joystick Firefox Dark Angel Ghosts -->
      <ActionMaps version="0" >
      <actionmap name="spaceship_view">
      <action name="v_view_cycle_fwd">
      <rebind device="joystick" input="js1_button12" />
      </action>
      </actionmap>

      <actionmap name="spaceship_movement">
      <action name="v_target_match_vel">
      <rebind device="joystick" input="js1_button6" />
      </action>
      <action name="v_ifcs_toggle_vector_decoupling">
      <rebind device="joystick" input="js1_button8" />
      </action>
      </actionmap>

      <actionmap name="spaceship_weapons">
      <action name="v_attack1_group2">
      <rebind device="joystick" input="js1_button2" />
      </action>
      <action name="v_attack1_group3">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>

      <actionmap name="spaceship_movement">
      <action name="v_yaw">
      <rebind device="joystick" input="js1_x" />
      </action>
      <action name="v_roll">
      <rebind device="joystick" input="js1_rotz" />
      </action>
      </actionmap>

      <actionmap name="spaceship_defensive">
      <action name="v_weapon_launch_countermeasure">
      <rebind device="joystick" input="js1_button9" />
      </action>
      <action name="v_weapon_cycle_countermeasure_fwd">
      <rebind device="joystick" input="js1_button10" />
      </action>
      </actionmap>

      <actionmap name="spaceship_targeting">
      <action name="v_target_missile_lock_focused">
      <rebind device="joystick" input="js1_button3" />
      </action>
      <action name="v_target_toggle_pinned_focused">
      <rebind device="joystick" input="js1_button5" />
      </action>
      </actionmap>

      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js1_button3" />
      </action>
      </actionmap>

      </ActionMaps>

      Diese ist eigentlich sehr ähnlich aufgebaut und halt auf dem Throttle anders belegt, bzw. habe ich die Raketen auf den R3 (Button 3) gelegt.

      Aber füge einfach mal die </action> Zeile ein - vielleicht ist dann schon alles erledigt. ;)

      See you in the verse

      Firefox

      So ich habe die Datei nun nochmals umgeschrieben nur leider nimmt er mir die raketenbelegung nicht

      <ActionMaps version="0" >
      <actionmap name="spaceship_movement">
      <action name="v_yaw">
      <rebind device="joystick" input="js1_x" />
      </action>
      <action name="v_roll">
      <rebind device="joystick" input="js1_rotz" />
      </action>
      </actionmap>
      <actionmap name="spaceship_weapons">
      <action name="v_attack1_group2">
      <rebind device="joystick" input="js1_button2" />
      </action>
      <action name="v_attack1_group3">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>
      <actionmap name="spaceship_targeting">
      <action name="v_target_missile_lock_focused">
      <rebind device="joystick" input="js2_button5" />
      </action>
      </actionmap>
      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js2_button5" />
      </action>
      </actionmap>
      </ActionMaps>

      Sollte aber funktionieren - ich konnte die Taste ja auch umprogrammieren.

      Hilft nur noch Trial and Error....

      Hast du einmal den USER Ordner gelöscht und es komplett neu gestartet - dann das REBIND?

      Wenn es nicht funktioniert

      Belege mal die Taste 3 mit den "....Launch Countermeasure...." - somit ist der Befehl von der Taste 5 gelöst.

      Wenn es nicht funktioniert

      Switche doch einfach einmal im Stick mapping die Taste 5 und 3 - somit liegen die Raketen in jedem Fall auf 5 und launch counterm. auf 3 - halt nur mal als versuch, ob es dann gefixed ist.

      ODER

      Meine Einschätzung ist aber, dass das Programm die Belegung der Taste 5 (Counterm.) nicht freigibt, da diese nicht auf eine unbelegte Taste zugeordnet ist (unbelegte Tasten am Thrustmaster sind 9, 10 und 12 - 12 ist die ST Taste am Fuß vom Throttle)

      Versuch das mal - oder lade einfach mal meine XML hoch und kontorlliere ob die funktioniert - wenn ja, ändere einfach die Tasten für Raketen auf 5 und Pin Target auf 3 - dann kannst du es einschränken oder es funktioniert einfach.

      So ich habe nun grupe 2 und 3 auf die selbe Taste gelegt und die Raketen wieder auf L3 so gehts ganz gut, hätte die Raketen zwar lieber am Throttle gehabt aber leider nimmt er mir das nicht an nun sieht die XML so aus;

      <ActionMaps version="0" >
      <actionmap name="spaceship_movement">
      <action name="v_yaw">
      <rebind device="joystick" input="js1_x" />
      </action>
      <action name="v_roll">
      <rebind device="joystick" input="js1_rotz" />
      </action>
      </actionmap>
      <actionmap name="spaceship_weapons">
      <action name="v_attack1_group2">
      <rebind device="joystick" input="js1_button2" />
      </action>
      <action name="v_attack1_group3">
      <rebind device="joystick" input="js1_button2" />
      </action>
      </actionmap>
      <actionmap name="spaceship_targeting">
      <action name="v_target_missile_lock_focused">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>
      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>
      </ActionMaps>

      So schnell werfen wir die Flinte nicht ins Korn :) ;)

      Hiermit geht es:

      <!-- TM Flight X HOTAS Joystick QuentinValen Test -->
      <ActionMaps version="0" >
      <actionmap name="spaceship_view">
      <action name="v_view_cycle_fwd">
      <rebind device="joystick" input="js1_button12" />
      </action>
      </actionmap>

      <actionmap name="spaceship_movement">
      <action name="v_target_match_vel">
      <rebind device="joystick" input="js1_button6" />
      </action>
      <action name="v_ifcs_toggle_vector_decoupling">
      <rebind device="joystick" input="js1_button8" />
      </action>
      </actionmap>

      <actionmap name="spaceship_weapons">
      <action name="v_attack1_group2">
      <rebind device="joystick" input="js1_button2" />
      </action>
      <action name="v_attack1_group3">
      <rebind device="joystick" input="js1_button4" />
      </action>
      </actionmap>

      <actionmap name="spaceship_movement">
      <action name="v_yaw">
      <rebind device="joystick" input="js1_x" />
      </action>
      <action name="v_roll">
      <rebind device="joystick" input="js1_rotz" />
      </action>
      </actionmap>

      <actionmap name="spaceship_defensive">
      <action name="v_weapon_launch_countermeasure">
      <rebind device="joystick" input="js1_button9" />
      </action>
      <action name="v_weapon_cycle_countermeasure_fwd">
      <rebind device="joystick" input="js1_button10" />
      </action>
      </actionmap>

      <actionmap name="spaceship_targeting">
      <action name="v_target_missile_lock_focused">
      <rebind device="joystick" input="js1_button5" />
      </action>
      <action name="v_target_toggle_pinned_focused">
      <rebind device="joystick" input="js1_button3" />
      </action>
      </actionmap>

      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js1_button5" />
      </action>
      </actionmap>

      </ActionMaps>

      Scheinbar müssen alle Tasten bei gewissen Verschiebungen belegt sein, da sonst ein Konflikt entsteht. Mit der obigen XML hast du auf 5 die Raketen - auf 2 (L1) die Flügelgroup und auf 4 (L3) die Frontgroup - auf dem Trigger ist nach wie vor der "Turm" - mit 3 (R3) kann man die Tagets pinnen. .....die Raketen auf 5 gefällt mir sehr gut, dass ich es wahrscheinlich so auch übernehmen werde - vorausgesetzt du hast kein Copyright drauf. ;)

      See you in the verse

      Firefox

      QuentinValen schrieb:

      <actionmap name="spaceship_missiles">
      <action name="v_weapon_launch_missile">
      <rebind device="joystick" input="js2_button5" />
      </action>
      </actionmap>
      </ActionMaps>


      Ich vermute, hier liegt der Fehler. Die Buttons am Gashebel müssen bei deinem Modell vielleicht auch mit js1_ statt mit js2_ angesteuert werden. So wie es Firefox in seiner Konfiguration macht.

      Bezüglich Default Einstellungen und Referenz:
      Die pak-Dateien der Cry-Engine sind eigentlich nur umbenannte Zip-Dateien. Benennt man diese wieder in .zip um, kann man sie mit z.B. 7Zip öffnen/entpacken (ich benutze den Total Commander und kann so Zip-Dateien wie ein Verzeichnis behandeln). Es gibt die Datei StarCitizen\CitizenClient\Data\GameData.pak. Diese Datei am besten mal in ein eigenes Verzeichnis kopieren und in GameData.zip umbenennen. In der Datei selbst ist wiederum eine Verzeichnisstruktur und unter Libs\Config findet man u.A. auch eien defaultProfile.xml (ebenso wie layout_joystick_spacesim.xml, defaultProfile_Warthog.xml und viele andere). Die defaultProfile.xml dürfte die Datei sein, die bei einem pp_rebindkeys ohne Parameter geladen wird. Darin sollten sich also einiges an "Referenzen" finden lassen.

      Was mich dann auch zu meinen eigenen Fragen bringt:

      Ich benutze einen Saitek X52 Pro. Wie einigen/vielen bekannt sein dürfte, hat der X52/Pro zwei Auslösepunkte auf dem Haupt-Trigger, js1_button1 und js1_button15. Zieht man den Trigger voll durch werden js1_button1 UND js_button15 ausgelöst, es liegen also beide Aktionen an.

      Ich möchte nun meinen Joystick so konfigurieren, dass ich mit einfachem Druck Waffengruppe 1 abfeuere, zieh ich den Trigger voll durch, möchte ich alle Waffengruppen abfeuern (ausser die Raketen). Soweit so gut, das funktioniert auch mit:

      Quellcode

      1. <actionmap name="spaceship_weapons">
      2. <action name="v_attack1_group1">
      3. <rebind device="joystick" input="js1_button1" />
      4. </action>
      5. <action name="v_attack1_group2">
      6. <rebind device="joystick" input="js1_button15" />
      7. </action>
      8. <action name="v_attack1_group3">
      9. <rebind device="joystick" input="js1_button15" />
      10. </action>
      11. </actionmap>


      Jetzt möchte ich aber zusätzlich mit den js1_button3 die Waffengruppe 2 und mit js1_button4 die Waffengruppe 3 separat abfeuern können (was ja je nach Waffengattungen Sinn machen könnte, seien es später unterschiedliche Schildtechnologien der Gegner oder Energieprobleme). Wenn ich das Mapping nun erweitere um:

      Quellcode

      1. <actionmap name="spaceship_weapons">
      2. <action name="v_attack1_group1">
      3. <rebind device="joystick" input="js1_button1" />
      4. </action>
      5. <action name="v_attack1_group2">
      6. <rebind device="joystick" input="js1_button15" />
      7. </action>
      8. <action name="v_attack1_group3">
      9. <rebind device="joystick" input="js1_button15" />
      10. </action>
      11. <action name="v_attack1_group2">
      12. <rebind device="joystick" input="js1_button3" />
      13. </action>
      14. <action name="v_attack1_group3">
      15. <rebind device="joystick" input="js1_button4" />
      16. </action>
      17. </actionmap>

      dann kann ich die Waffengruppen 2 und 3 zwar einzeln abfeuern, aber die volle Breitseite bei vollem Durchziehen des Triggers (Button 1 + 15) greift nicht mehr. Hier wird scheinbar die action überschrieben. Hat sowas schon jemand hinbekommen?

      Ich habe auch in der defaultProfile.xml folgendes Konstrukt gefunden:

      Quellcode

      1. <actiongroup action="v_attack1">
      2. <action name="v_attack1_group1" />
      3. <action name="v_attack1_group2" />
      4. <action name="v_attack1_group3" />
      5. </actiongroup>
      6. ...
      7. <actionmap name="vehicle_driver" version="23">
      8. ...
      9. <action name="v_attack1" onPress="1" onRelease="1" onHold="1" keyboard="mouse1" xboxpad="xi_shoulderr" ps3pad="pad_r1"/>
      10. <action name="v_attack2" onPress="1" onRelease="1" onHold="1" keyboard="mouse2" xboxpad="xi_shoulderl" ps3pad="pad_l1"/>
      11. ...
      12. </actionmap>


      Leider hat ein

      Quellcode

      1. <action name="v_attack1">
      2. <rebind device="joystick" input="js1_button15" />
      3. </action>

      auch nicht den gewünschten Erfolg gebracht. Es passiert dabei gar nichts, wenn Button 15 gedrückt wird. Ich hatte auch die actiongroup-Definition in meine X52Pro.xml übernommen (in die Actionmap spaceship_weapons), aber leider auch bisher erfolglos. Offenbar scheint ja geplant zu sein sich seine eigenen Aktionsgruppen anlegen zu können, scheint aber wohl noch nicht für Raumschiffe zu funktionieren (immerhin ist der actionmap-Name ja vehicle_driver und nicht spaceship_weapons.

      Was mich dann zu meiner vorerst letzten Frage bringt:

      Wie wichtig sind die actionmap-Namen und was hat es mit der Version auf sich? Wenn ich z.B. meiner X52Pro.xml am Anfang ein

      Quellcode

      1. <ActionMaps version="1">
      mitgebe, dann bekomme ich einen Parsingerror wenn die Datei mit pp_rebindkeys lade. Lasse ich die Version auf 0, dann wird die Datei geladen. Und wie wichtig sind die Zuordnungen der einzelenen action zu den actionmaps?

      Gruß,
      Mendagir
      Lieber eine Freundschaft riskieren, als einen guten Spruch auslassen.
      Naja, der Thread-Titel ist doch "Joystick-Konfiguration per XML", und nicht "Wie benutze ich meine Joystick-Konfigurations-Software". Und überhaupt, wer kommt schon auf die Idee eine proprietäre Softwarelösung zu nehmen, wenn man so schöne Konfigurationsmöglichkeiten per XML hat? *hust ... hust ... hust*

      Aber danke für den Tipp, mit den "Advanced Command" der Saitek-Software funktioniert es so, wie es mir vorgestelle habe
      Lieber eine Freundschaft riskieren, als einen guten Spruch auslassen.