Estoy usando una Raspberry Pi con Raspbian para alimentar mi gabinete de juegos. Quiero apagar la Pi usando sudo poweroff
comando sin usar el teclado. Estoy pensando que la mejor manera sería crear un script simple que de alguna manera se activaría mediante una combinación de entradas de botones del controlador. Parece fácil vincular un teclado a una secuencia de comandos, pero no es tan fácil usar una entrada de joystick en su lugar.
¿Alguien tiene alguna idea?
EDITAR #1
Los botones del joystick y del controlador funcionan bien y se muestran usando jstest
herramienta de jstest-gtk
paquete y todo funciona bien en Mame4all. No he probado xev
pero lo investigaré.
Respuesta aceptada:
xev
No creo que puedas usar xev
para detectar joysticks. Estoy usando Fedora 19 y hay un paquete llamado joystick
que instala este paquete, linuxconsoletools
. Este proyecto es lo que estás buscando.
proyecto de consola de Linux
Contiene una serie de herramientas para conectar joysticks de modo que sus señales sean recibidas por el kernel de Linux.
extracto del sitio web de linuxconsole
Este proyecto mantiene las herramientas de la consola de Linux, que incluyen utilidades para probar y configurar joysticks, conectar dispositivos heredados al subsistema de entrada del kernel (brindando soporte para ratones seriales, pantallas táctiles, etc.) y probar la capa de eventos de entrada.
El paquete incluye ejecutables como estos
$ 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
No tengo una instalación de Debian disponible pero Ubuntu también tiene el mismo paquete, joystick
. Ejecutando el comando apt-file list joystick
muestra los mismos archivos que el RPM que mencioné anteriormente.
¿Qué más?
También sugeriría echar un vistazo al tema Wiki de ArchLinux titulado:Joystick. Es probablemente el recurso más completo sobre el tema relacionado con Linux.
Asignación de joystick a teclado
Lo anterior hará que su joystick funcione en Linux, pero no ofrece ningún método para asignar el joystick a un script, al menos no de una manera fácil. Para hacer algo así, deberá solicitar la ayuda de otra aplicación. Hay uno con el que estoy familiarizado llamado jkeys
.
Primero deberá instalar algunas dependencias para instalarlo, python-xlib
&python-pygame
. Estos deberían estar en los repositorios de la mayoría de las distribuciones.
Sin embargo, para instalar jkeys
tendrás que descargarlo del repositorio de subversión del proyecto.
$ svn checkout http://jkeys.googlecode.com/svn/trunk/ jkeys-read-only
Después de descargarlo, puede ejecutarlo así:
$ ./jkeys
usage: jkeys joystick.conf application [params]
Para asignar una tecla, deberá crear su propio joystick.conf
archivo:
<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>
Ahora, cuando esté listo para ejecutar su juego, hágalo así:
$ ./jkeys joystick.py <somegame>
Los botones del joystick anulados enviarán cualquier tecla que presiones en lugar de los botones del joystick a la aplicación.
Relacionado:Crear enlace simbólico:¿sobrescribir si existe uno?QAlegría
Otra alternativa es utilizar la aplicación QJoyPad. No pude probar esto porque no tengo joystick. La GUI debería verse así.
Desde esta GUI, puede asignar cualquier pulsación de botón a pulsaciones de tecla con bastante facilidad.
¿Qué pasa con la ejecución de un script?
Bueno, con los métodos anteriores, podría utilizar otra aplicación llamada XBindKeys para mapear cualquier pulsación del teclado para ejecutar un comando o script real.
Ejemplo
Primero deberá asegurarse de que los paquetes xbindkeys
está instalado.
Luego deberá ejecutar el siguiente comando, una sola vez, para crear una plantilla xbindkeys
archivo de configuración.
$ xbindkeys --defaults > /home/saml/.xbindkeysrc
Con el archivo creado, puede abrirlo en un editor de texto y agregar una regla como esta:
"nautilus --browser /home/saml/projects/path/to/some/dir"
Mod4+shift + q
Con el cambio anterior realizado, debemos eliminar xbindkeys
si ya se está ejecutando y reinícielo.
$ killall xbindkeys
$ xbindkeys
Ahora, con esto ejecutándose cada vez que escribo Mod +Mayús +Q Nautilus se abrirá con la carpeta correspondiente abierta.
Referencias
- Jkeys:asignación simple de joystick a teclado
- Detectar si se presiona el botón del mouse, luego invocar un script o comando
- XBindKeys