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