GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come eseguire uno script attivato da un input del joystick?

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

Linux
  1. Come eseguire uno script??

  2. Come posso eseguire uno script Perl come demone di sistema in Linux?

  3. Come far funzionare uno script Python come un servizio o un demone in Linux

  4. Come eseguire uno script in background (linux openwrt)?

  5. Come eseguire Linux su PS3?

Come eseguire il comando / script della shell di Linux in background

Come eseguire Windows 95 su Linux

Come eseguire lo script della shell come servizio Systemd in Linux

Come eseguire uno script Python in PHP

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire uno script Bash