Gamepad support

Locomotieven met een gamepad besturen.

Rocrail ondersteunt tot 4 aangesloten gamepads die elk afzonderlijk een locomotief kunnen besturen. Als er een gamepad aangesloten is, kan middels functie 10 de selectie dialoog opgeroepen worden waarin alle beschikbare locomotieven in een lijst staan. D.m.v. het D-pad kan een locomotief worden geselecteerd en met functie 10 wordt deze selectie actief.

De volgende acties zijn beschikbaar:

Knop Actie
1 t/m 4 decoder functie 1 t/m 4
5 rij richting veranderen
6 verlichting aan/uit
7 stop (geen noodstop)
8 spoorbaan stroom uit
9 spoorbaan stroom aan
10 locomotief selecteren (dialoog open/sluiten)
D-pad snelheid hoog/laag, of bladeren door loc lijst

Dit zijn de voor ingestelde knop toe wijzingen. Deze zijn te wijzigen in de rocrail.ini sectie http://www.rocrail.net/doc/rocgui-wrappers/wrapper-en.html#jsmap. Let op! Deze beginnen met nul. (mapping 0 is dus knop 1)

Het toewijzen van functies aan een button

Nadat de gamepad aangesloten is op een knop gedrukt wordt verschijnt er een boodschap als volgt:

JsEvent dev=0, type=1, number=0, value=1, msec=50766908
JsEvent dev=0, type=1, number=1, value=1, msec=50773640
JsEvent dev=0, type=1, number=2, value=1, msec=50774584
JsEvent dev=0, type=1, number=3, value=1, msec=50775384
JsEvent dev=0, type=2, number=5, value=-32767, msec=50778792
JsEvent dev=0, type=2, number=5, value=0, msec=50779824

Type 1 is een knop, type 2 de joystick. Het getal is de waarde die in de jsmap gezet moet worden. Deze waarden kunnen ook gezet worden in het Rocview eigenschappen menu: http://rocrail.sourceforge.net/rocguiini.mpg

Dus kijk voor het toewijzen van een knop aan een fuctie naar het nummer dat weergegeven wordt als er op gedrukt wordt en zet dat nummer in de jsmap.

Hoe een GamePad definiëren

Nadat het GamePad aangesloten is en je op de knoppen gedrukt hebt, krijg je een volgende melding:

JsEvent dev=0, type=1, number=0, value=1, msec=50766908
JsEvent dev=0, type=1, number=1, value=1, msec=50773640
JsEvent dev=0, type=1, number=2, value=1, msec=50774584
JsEvent dev=0, type=1, number=3, value=1, msec=50775384
JsEvent dev=0, type=2, number=5, value=-32767, msec=50778792
JsEvent dev=0, type=2, number=5, value=0, msec=50779824

Type 1 is een knop, type 2 zijn assen. Het nummer is de waarde welke gebruikt is in jsmap. Vanaf svn 966 kan je deze waarden in de Rocgui Eigenschappen Dialoog invoeren: http://rocrail.sourceforge.net/rocguiini.mpg

Dus indien je een knop wenst te koppelen aan een actie, gelieve te kijken welk nummer weergegeven is in jsmap.

Setup dmv het Rocgui Dialoog

Mogelijke ingaven:

V: knop gebruikt voor versnelling/vertraging

Repeat: auto herhaal interval in geval de snelheidsknop ingedrukt blijft, ingave in msec. - kleinere getallen geven hogere herhaalwaarden. - “0” betekend autorepeat = uit

Direction: knop om de lokrichting te veranderen, in geval van drukken dan zal de lok: vertragen, stoppen, versnellen in tegengestelde richting

Stop: knop om de lok te stoppen

Decoder steps: definieer in hoeveel stappen de decoder moet versnellen/vertragen per druk

Lights: knop om de lichten aan/af te zetten

F1-4: knop om de functies F1-F4 te schakelen

on/off: knop om de stroom van de centrale aan/af te zetten (niet alle command stations ondersteunen dit)

Gekende problemen

Probeer de volgende tests te doen bij gebruik in linux:

  • open een console
  • connecteer het gamepad
  • type het commando:
  cat /dev/input/js0
of
  cat /dev/js0
  • druk op alle knoppen, één voor één, start met knop 1
  • druk D-Pad in alle richtingen.

De console output zou het volgende moeten weergeven (afhankelijk van de console codepage settings):

De Gamepad is niet bruikbaar indien er geen output is bij het drukken van een knop of D-Pad.

Nu start je Rocgui in een console:

./rocgui -debug
  • connecteer het gamepad
  • druk op alle knoppen en D-Pad richtingen zoals in de vorige test.

Het is een kwestie van mapping:

http://www.rocrail.net/doc/rocrail-wrappers/wrapper-en.html#jsmap

Als je D-Pad andere waarden geeft: (rocgui trace with debug lines)

20071219.173903.558 g9999D js-reade OJS      0110 handle=9, devnr=0, type=2, number=4, value=0, msec=27128764
20071219.173903.559 g9999I main     js       0162 JsEvent dev=0, type=2, number=4, value=0, msec=27128764
20071219.173903.640 g9999D js-reade OJS      0110 handle=9, devnr=0,type=2,number=3, value=0, msec=27128844
20071219.173903.641 g9999I main     js       0162 JsEvent dev=0, type=2, number=3, value=0, msec=27128844

Function button mapping: (rocgui trace)

20071224.090542.371 g9999I js-reade Logitech 0069 JS 1(Logitech Logitech Dual Action) has 6 axes and 12 buttons. Driver version is 2.1.0.
20071224.090543.529 g9999I main     js       0162 JsEvent dev=0, type=1, number=0, value=1, msec=3162540
20071224.090543.720 g9999I main     js       0162 JsEvent dev=0, type=1, number=0, value=0, msec=3162724
20071224.090553.122 g9999I main     js       0162 JsEvent dev=0, type=1, number=1, value=1, msec=3172132
20071224.090553.313 g9999I main     js       0162 JsEvent dev=0, type=1, number=1, value=0, msec=3172316
20071224.090556.663 g9999I main     js       0162 JsEvent dev=0, type=1, number=2, value=1, msec=3175668
20071224.090556.824 g9999I main     js       0162 JsEvent dev=0, type=1, number=2, value=0, msec=3175828
20071224.090557.689 g9999I main     js       0162 JsEvent dev=0, type=1, number=3, value=1, msec=3176692
20071224.090557.852 g9999I main     js       0162 JsEvent dev=0, type=1, number=3, value=0, msec=3176860

Het nummer correspondeert met het nummer van de gamepad knop vermindert met 1. In dit voorbeeld zijn de knoppen 1 tot 4 gedrukt en geven de standaard waarden van jsmap.

Pas jsmap aan in rocgui.ini voor jouw gamepad. Voorbeeld:

<jsmap step="1" updown="5" repeat="500" reverse="4" stop="6" light="5" f1="0" f2="1" f3="2" f4="3" poweron="8" poweroff="7"/>

Personal Tools