Table of Contents

Supporto Gamepad

IndiceRocview Generale



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:

Risoluzione problemi

Provare il seguente test in linux:

  cat /dev/input/js0
oppure
  cat /dev/js0

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

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"/>