GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie führen Sie ein Skript aus, das durch eine Joystick-Eingabe ausgelöst wird?

Ich verwende einen Raspberry Pi mit Raspbian, um meinen Arcade-Schrank mit Strom zu versorgen. Ich möchte den Pi mit sudo poweroff herunterfahren Befehl ohne Verwendung der Tastatur. Ich denke, der beste Weg wäre, ein einfaches Skript zu erstellen, das irgendwie durch eine Kombination von Controller-Tasteneingaben ausgelöst wird. Es scheint einfach, eine Tastatur an ein Skript zu binden, aber nicht so einfach, stattdessen eine Joystick-Eingabe zu verwenden.

Hat jemand eine Idee?

EDIT #1

Die Joystick- und Controller-Tasten funktionieren alle einwandfrei und werden mit jstest angezeigt Tool aus dem jstest-gtk Paket und alle funktionieren gut in Mame4all. Ich habe xev nicht ausprobiert werde es aber prüfen.

Akzeptierte Antwort:

xev

Ich glaube nicht, dass Sie xev verwenden können Joysticks erkennen. Ich verwende Fedora 19 und es gibt ein Paket namens joystick die dieses Paket installiert, linuxconsoletools . Dieses Projekt ist genau das, wonach Sie suchen.

Linuxconsole-Projekt

Es enthält eine Reihe von Tools, um Joysticks so anzuschließen, dass ihre Signale vom Linux-Kernel empfangen werden.

Auszug von der Linuxconsole-Website

Dieses Projekt verwaltet die Linux-Konsolentools, die Dienstprogramme zum Testen und Konfigurieren von Joysticks, zum Verbinden älterer Geräte mit dem Eingabesubsystem des Kernels (mit Unterstützung für serielle Mäuse, Touchscreens usw.) und zum Testen der Eingabeereignisschicht enthalten.

Das Paket enthält ausführbare Dateien wie diese

$ 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

Ich habe keine Debian-Installation zur Verfügung, aber Ubuntu hat auch das gleiche Paket, joystick . Führen Sie den Befehl apt-file list joystick aus zeigt dieselben Dateien wie das oben erwähnte RPM.

Was noch?

Ich würde auch vorschlagen, einen Blick auf das ArchLinux-Wiki-Thema mit dem Titel:Joystick zu werfen. Es ist wahrscheinlich die umfassendste Ressource zu diesem Thema, bezogen auf Linux.

Joystick der Tastatur zuordnen

Das obige wird Ihren Joystick unter Linux zum Laufen bringen, bietet aber keine Methode zum Zuordnen von Joystick zu einem Skript, zumindest nicht auf einfache Weise. Um so etwas zu tun, müssen Sie die Hilfe einer anderen Anwendung in Anspruch nehmen. Es gibt eine, mit der ich vertraut bin und die jkeys heißt .

Sie müssen zuerst einige Abhängigkeiten installieren, um es zu installieren, python-xlib &python-pygame . Diese sollten sich in den Repos der meisten Distributionen befinden.

Um jedoch jkeys zu installieren Sie müssen es aus dem Subversion-Repository des Projekts herunterladen. HINWEIS: Es ist in Python geschrieben.

$ svn checkout http://jkeys.googlecode.com/svn/trunk/ jkeys-read-only

Nach dem Download können Sie es wie folgt ausführen:

$ ./jkeys 
usage: jkeys joystick.conf application [params]

Um eine Taste zuzuordnen, müssen Sie Ihre eigene joystick.conf erstellen Datei:

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

Wenn Sie nun bereit sind, Ihr Spiel auszuführen, gehen Sie folgendermaßen vor:

$ ./jkeys joystick.py <somegame>

Die außer Kraft gesetzten Joystick-Tasten senden jede Taste, die Sie drücken, anstelle der Joystick-Tasten an die App.

Siehe auch:Symlink erstellen – falls vorhanden überschreiben?

QJoy

Eine weitere Alternative ist die Verwendung der App QJoyPad. Ich konnte das nicht testen, da ich keinen Joystick habe. Die GUI sollte so aussehen.

Von dieser GUI aus können Sie alle Tastendrücke ziemlich einfach Tastendrücken zuordnen.

Was ist mit dem Ausführen eines Skripts?

Nun, mit den oben genannten Methoden könnten Sie eine andere Anwendung namens XBindKeys verwenden, um alle Tastaturdrücke zuzuordnen, um einen tatsächlichen Befehl oder ein Skript auszuführen.

HINWEIS: Mein Beispiel unten erstellt eine Tastenkombination, sodass Nautilus mit bestimmten geöffneten Verzeichnissen gestartet wird.

Beispiel

Sie müssen zuerst sicherstellen, dass die Pakete xbindkeys installiert ist.

Dann müssen Sie den folgenden Befehl nur einmal ausführen, um eine Vorlage xbindkeys zu erstellen Konfigurationsdatei.

$ xbindkeys --defaults > /home/saml/.xbindkeysrc

Mit der erstellten Datei können Sie sie in einem Texteditor öffnen und eine Regel wie diese hinzufügen:

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q

Nachdem die obige Änderung vorgenommen wurde, müssen wir xbindkeys beenden wenn es bereits läuft, und starten Sie es neu.

$ killall xbindkeys
$ xbindkeys

Jetzt, wo dies läuft, tippe ich jedes Mal Mod ein +Shift +Q Nautilus wird mit dem entsprechenden Ordner geöffnet.

Referenzen

  • Jkeys – einfache Zuordnung von Joystick zu Tastatur
  • Erkennen, ob die Maustaste gedrückt wird, und dann ein Skript oder einen Befehl aufrufen
  • XBindKeys

Linux
  1. Linux – Wie führt man ein Skript zum Sperren/Entsperren des Bildschirms aus?

  2. Linux – Wie führe ich einen Bootloader von Linux aus?

  3. Wie man ein Skript ausführt??

  4. Wie führen Sie ein Skript beim Anmelden in * nix aus?

  5. Wie man ein Python-Skript wie einen Dienst oder Daemon in Linux laufen lässt

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Windows 95 unter Linux aus

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

So führen Sie ein Python-Skript in PHP aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So führen Sie ein Bash-Skript aus