GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment exécuter un script déclenché par une entrée de joystick ?

J'utilise un Raspberry Pi exécutant Raspbian pour alimenter ma borne d'arcade. Je veux éteindre le Pi en utilisant le sudo poweroff commande sans utiliser le clavier. Je pense que la meilleure façon serait de créer un script simple qui serait en quelque sorte déclenché par une combinaison d'entrées de boutons de contrôleur. Il semble facile de lier un clavier à un script, mais pas si facile d'utiliser une entrée joystick à la place.

Quelqu'un a-t-il des idées ?

MODIFICATION #1

Les boutons du joystick et du contrôleur fonctionnent tous correctement et s'affichent à l'aide du jstest outil du jstest-gtk package et tout fonctionne bien dans Mame4all. Je n'ai pas essayé xev mais je vais l'examiner.

Réponse acceptée :

xev

Je ne crois pas que vous puissiez utiliser xev pour détecter les joysticks. J'utilise Fedora 19 et il existe un package appelé joystick qui installe ce paquet, linuxconsoletools . Ce projet est ce que vous recherchez.

projet console Linux

Il contient un certain nombre d'outils pour brancher des joysticks afin que leurs signaux soient reçus par le noyau Linux.

extrait du site Web de la console linux

Ce projet maintient les outils de la console Linux, qui incluent des utilitaires pour tester et configurer les joysticks, connecter les périphériques hérités au sous-système d'entrée du noyau (fournissant la prise en charge des souris série, des écrans tactiles, etc.) et tester la couche d'événement d'entrée.

Le package comprend des exécutables tels que ceux-ci

$ 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

Je n'ai pas d'installation Debian disponible mais Ubuntu a également le même paquet, joystick . Lancer la commande apt-file list joystick affiche les mêmes fichiers que le RPM que j'ai mentionné ci-dessus.

Quoi d'autre ?

Je suggérerais également de jeter un œil au sujet ArchLinux Wiki intitulé:Joystick. C'est probablement la ressource la plus exhaustive sur le sujet, lié à Linux.

Mapper le joystick sur le clavier

Ce qui précède fera fonctionner votre joystick sous Linux, mais n'offre aucune méthode pour mapper le joystick à un script, du moins pas de manière simple. Pour faire quelque chose comme ça, vous devrez demander l'aide d'une autre application. Il y en a un que je connais bien appelé jkeys .

Vous devrez d'abord installer certaines dépendances pour l'installer, python-xlib &python-pygame . Ceux-ci devraient être dans les dépôts de la plupart des distributions.

Cependant pour installer jkeys vous devrez le télécharger à partir du référentiel subversion du projet. REMARQUE : Il est écrit en Python.

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

Après l'avoir téléchargé, vous pouvez l'exécuter comme suit :

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

Pour mapper une touche, vous devrez créer votre propre joystick.conf fichier :

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

Maintenant, lorsque vous êtes prêt à lancer votre jeu, procédez comme suit :

$ ./jkeys joystick.py <somegame>

Les boutons du joystick remplacés enverront à l'application la touche sur laquelle vous appuyez à la place des boutons du joystick.

En relation :Créer un lien symbolique - écraser s'il en existe un ?

QJoy

Une autre alternative consiste à utiliser l'application QJoyPad. Je n'ai pas pu tester cela car je n'ai pas de joystick. L'interface graphique devrait ressembler à ceci.

À partir de cette interface graphique, vous pouvez mapper assez facilement n'importe quelle pression sur un bouton à une pression sur une touche.

Qu'en est-il de l'exécution d'un script ?

Eh bien, avec les méthodes ci-dessus, vous pouvez utiliser une autre application appelée XBindKeys pour mapper toutes les pressions sur le clavier afin d'exécuter une commande ou un script réel.

REMARQUE : Mon exemple ci-dessous crée un raccourci clavier pour que Nautilus se lance avec certains répertoires ouverts.

Exemple

Vous devrez d'abord vous assurer que les packages xbindkeys est installé.

Ensuite, vous devrez exécuter la commande suivante, une seule fois, pour créer un modèle xbindkeys fichier de configuration.

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

Une fois le fichier créé, vous pouvez l'ouvrir dans un éditeur de texte et ajouter une règle comme celle-ci :

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

Avec la modification ci-dessus, nous devons tuer xbindkeys s'il est déjà en cours d'exécution, puis redémarrez-le.

$ killall xbindkeys
$ xbindkeys

Maintenant, avec cela en cours d'exécution à chaque fois que je tape Mod +Maj +Q Nautilus s'ouvrira avec le dossier correspondant ouvert.

Références

  • Jkeys :mappage simple du joystick au clavier
  • Détecter si le bouton de la souris est enfoncé, puis invoquer un script ou une commande
  • XBindKeys

Linux
  1. Comment créer un script d'une commande Linux

  2. Comment puis-je exécuter un script Perl en tant que démon système sous Linux ?

  3. Comment faire fonctionner un script Python comme un service ou un démon sous Linux

  4. Comment déterminez-vous si vous êtes sur un système Linux ou BSD à l'intérieur d'un script ?

  5. Comment configurer PHP CLI sur Linux Ubuntu pour qu'il s'exécute en tant que www-data ?

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter Windows 95 sous Linux

Comment exécuter un script Shell en tant que service Systemd sous Linux

Comment exécuter un script Python en PHP

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter un script bash