Sto usando un Raspberry Pi con Raspbian per alimentare il mio cabinet arcade. Voglio spegnere il Pi usando sudo poweroff
comando senza utilizzare la tastiera. Sto pensando che il modo migliore sarebbe creare uno script semplice che verrebbe in qualche modo attivato da una combinazione di input dei pulsanti del controller. Sembra facile associare una tastiera a uno script, ma non è così facile usare invece un input del joystick.
Qualcuno ha qualche idea?
EDIT #1
I pulsanti del joystick e del controller funzionano tutti bene e vengono visualizzati utilizzando il jstest
strumento dal jstest-gtk
pacchetto e tutto funziona bene in Mame4all. Non ho provato xev
ma lo esaminerò.
Risposta accettata:
xev
Non credo che tu possa usare xev
per rilevare i joystick. Sto usando Fedora 19 e c'è un pacchetto chiamato joystick
che installa questo pacchetto, linuxconsoletools
. Questo progetto è quello che stai cercando.
progetto console Linux
Contiene una serie di strumenti per collegare i joystick in modo che i loro segnali vengano ricevuti dal kernel Linux.
estratto dal sito web di linuxconsole
Questo progetto mantiene gli strumenti della console Linux, che includono utilità per testare e configurare joystick, collegare dispositivi legacy al sottosistema di input del kernel (fornendo supporto per mouse seriali, touchscreen ecc.) e testare il livello di eventi di input.
Il pacchetto include eseguibili come questi
$ rpm -ql linuxconsoletools.x86_64
/usr/bin/ffcfstress
/usr/bin/ffmvforce
/usr/bin/ffset
/usr/bin/fftest
/usr/bin/inputattach
/usr/bin/jscal
/usr/bin/jscal-restore
/usr/bin/jscal-store
/usr/bin/jstest
/usr/libexec/joystick/extract
/usr/libexec/joystick/filter
/usr/libexec/joystick/ident
Ubuntu
Non ho un'installazione Debian disponibile ma anche Ubuntu ha lo stesso pacchetto, joystick
. Eseguire il comando apt-file list joystick
mostra gli stessi file dell'RPM che ho menzionato sopra.
Cos'altro?
Suggerirei anche di dare un'occhiata all'argomento ArchLinux Wiki intitolato:Joystick. È probabilmente la risorsa più esauriente sull'argomento, relativa a Linux.
Mappatura del joystick sulla tastiera
Quanto sopra farà funzionare il tuo joystick in Linux, ma non offre alcun metodo per mappare il joystick su uno script, almeno non in modo semplice. Per fare qualcosa del genere dovrai avvalerti dell'aiuto di un'altra applicazione. Ce n'è uno che conosco chiamato jkeys
.
Dovrai prima installare alcune dipendenze per installarlo, python-xlib
&python-pygame
. Dovrebbero trovarsi nei repository della maggior parte delle distribuzioni.
Tuttavia per installare jkeys
dovrai scaricarlo dal repository di subversion del progetto. NOTA: È scritto in Python.
$ svn checkout http://jkeys.googlecode.com/svn/trunk/ jkeys-read-only
Dopo averlo scaricato puoi eseguirlo in questo modo:
$ ./jkeys
usage: jkeys joystick.conf application [params]
Per mappare una chiave dovrai creare il tuo joystick.conf
file:
<config>
<joystick id="0">
<axis number="0" low="Left" high="Right" />
<axis number="1" low="Down" high="Up" />
<button number="0" key="Space" />
<button number="1" key="Return" />
<button number="2" key="a" />
<button number="3" key="b" />
<button number="4" key="c" />
<button number="5" key="d" />
<button number="6" key="z" />
<button number="7" key="x" />
<button number="9" key="Escape" />
<button number="10" key="p" />
</joystick>
</config>
Ora, quando sei pronto per eseguire il tuo gioco, lo fai in questo modo:
$ ./jkeys joystick.py <somegame>
I pulsanti del joystick sostituiti invieranno all'app qualsiasi tasto premuto anziché i pulsanti del joystick.
Correlati:Crea collegamento simbolico:sovrascrivi se ne esiste uno?QGioia
Un'altra alternativa è usare l'app QJoyPad. Non sono stato in grado di testarlo poiché non ho il joystick. La GUI dovrebbe assomigliare a questa.
Da questa GUI è possibile mappare facilmente qualsiasi pressione di pulsante su pressione di tasti.
Che ne dici di eseguire uno script?
Bene, con i metodi precedenti potresti utilizzare un'altra applicazione chiamata XBindKeys per mappare qualsiasi pressione della tastiera per eseguire un comando o uno script effettivo.
NOTA: Il mio esempio di seguito crea una scorciatoia da tastiera in modo che Nautilus si avvii con determinate directory aperte.
Esempio
Dovrai prima assicurarti che i pacchetti xbindkeys
è installato.
Quindi dovrai eseguire il comando seguente, una sola volta, per creare un modello xbindkeys
file di configurazione.
$ xbindkeys --defaults > /home/saml/.xbindkeysrc
Con il file creato puoi aprirlo in un editor di testo e aggiungere una regola come questa:
"nautilus --browser /home/saml/projects/path/to/some/dir"
Mod4+shift + q
Con la modifica sopra apportata, dobbiamo uccidere xbindkeys
se è già in esecuzione, quindi riavvialo.
$ killall xbindkeys
$ xbindkeys
Ora con questo in esecuzione ogni volta che digito Mod +Maiusc +D Nautilus si aprirà con la cartella corrispondente aperta.
Riferimenti
- Jkeys:un semplice joystick per mappare la tastiera
- Rileva se viene premuto il pulsante del mouse, quindi richiama uno script o un comando
- XBindKeys