Supporto Gamepad

Gamepad

Rocrail supporta fino a 4 gamepad per controllare 4 locomotive indipendenti. Se un gamepad è connesso, può essere associata una locomotiva tramite la finestra di selezione visualizzabile premendo il tasto 10 del gamepad. Con il D-pad (frecce di direzione) si può scorrere l'elenco delle locomitive presenti nella finestra di selezione.

Mappatura delle azioni predefinite

Pulsante Azione
1 - 4 funzione decoder 1 - 4
5 cambio direzione
6 luci on/off
7 ferma loco (porta la velocità a 0)
8 dai alimentazione al tracciato
9 togli alimentazione al tracciato
10 seleziona locomotiva (apre/chiude finestra di selezione)
D-pad aumenta/diminuisce velocità, scorre elenco locomotive

I pulsanti predefiniti possono essere modificati nella sezione <jsmap> del file rocrail.ini, http://www.rocrail.net/doc/rocgui-wrappers/wrapper-en.html#jsmap. L'indice dei valori parte da 0. (mapping 0 è il pulsante 1)

Come mappare un GamePad

Dopo aver connesso il GamePad, alla pressione dei tasti e delle direzioni otterrete i seguenti messaggi nel registro eventi:

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 è un pulsante, type 2 è una direzione. Il numero è il valore che dovrebbe essere inserito nel jsmap. Dalla versione 966 è possibile impostare quei valori nella finestra proprietà di Rocview: http://rocrail.sourceforge.net/rocguiini.mpg

In questo modo, qualora si volesse associare una azione ad un tasto, immettere in jmap il numero mostrato nella finestra degli eventi.

Impostazione tramite la finestra di Rocview

Possibili valori:

  • V: tasto usato per accelerare/decelerare
  • Repeti: intervallo di ripetizione automatica in caso il tasto di accelerazione è tenuto premuto, il valore è in msec.
    • numeri piccoli innalzano la velocità di ripetizione higher repeat rate.
    • “0” significa autorepeat = off
  • Direzioni: tasto per cambiare la direzione, alla pressione la locomotiva rallenterà, fermerà e ripartirà nella direzione opposta
  • Arresta: tasto per fermare la locomotiva
  • Passi Decoder: definisce quanti passi decoder sono accelerati/decelerati ad ogni pressione del tasto
  • Luci: tasto per scambiare le luci
  • F1-12: tasto per passare da F1 a F12
    • ”-1” per dissattivare
  • on/off: tasto per accendere/spegnere la centrale digitale (non tutte le le centrali digitali possono supportare questa funzione)

Risoluzione problemi

Provare il seguente test in linux:

  • aprile una console
  • collegare il gamepad
  • digitare il comando:
  cat /dev/input/js0
oppure
  cat /dev/js0
  • press all buttons one after another starting with button 1
  • press the D-Pad in all direction.

L'output della console dovrebbe mostrare qualcosa del genere (dipende dalle impostazioni della console):

Il Gamepad non è utilizzabile se non ci sono output alla pressione di un tasto o del D-Pad.

Eseguire Rocview in una console:

./rocview -debug
  • collegare il the gamepad
  • toccare tutti i tasti e il D-Pad come nella precedente prova.

Problemi di mappatura:

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

Se il D-Pad genera differenti valori come i seguenti: (eventi rocview con linee di debug)

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

Mappatura dei tasti funzione: (eventi rocview)

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

Il numero corrisponde al numero dei tasti del gamepad button ridotto di 1. Nell'esempio i tasti da 1 a 4 erano premuti e riportano i valori di default del jsmap.

Impostare jsmap nel rocgui.ini per riconoscere il vostro gamepad. Esempio:

<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