GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo ejecutar un script activado por una entrada de joystick?

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. NOTA: Está escrito en Python.

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

NOTA: Mi ejemplo a continuación crea un atajo de teclado para que Nautilus se inicie con ciertos directorios abiertos.

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

Linux
  1. Linux:¿cómo ejecutar un gestor de arranque desde Linux?

  2. ¿Cómo ejecutar un script?

  3. ¿Cómo puedo ejecutar un script de Perl como un demonio del sistema en Linux?

  4. Cómo hacer que un script de Python se ejecute como un servicio o demonio en Linux

  5. ¿Cómo ejecutar Linux en PS3?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar Windows 95 en Linux

Cómo ejecutar Shell Script como servicio Systemd en Linux

Cómo ejecutar un script de Python en PHP

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo ejecutar un script Bash