Haciendo funcionar el Gamepad en Linux
Para poder desarrollar el soporte para joystick de DD2 necesito que mi joystick funcione, ¿no? :P
Vamos por partes, porque la cosa no está nada clara.
Estoy usando Debian 3.0 (estable, aka Woody) con el kernel 2.4.26. Mi joystick es un gamepad (económico) de 3 ejes y 4 botones, y lo voy a hacer funcionar a través de mi tarjeta Sound Blaster PCI, que tiene gameport.
La tarjeta de sonido funciona con el driver es1371, y este driver también gestiona el gameport donde va conectado el mando. Esto suele ser así para todas las tarjetas de sonido, salvo algunas excepciones (como la SB Live!). Además de este módulo necesitaremos input, joydev, gameport y analog.
input gestiona diferentes dispositivos de entrada, como en este caso nuestro joystick. joystick controla los distintos tipos de joystick, aquí emplearemos el 'puerto de juegos' de la tarjeta de audio así que necesitamos gameport. Por último analog, que entiende el protocolo de nuestro pad. Más o menos esa es la explicación :D.
En /etc/modules:
# tarjeta de sonido SB PCI es1371 # gamepad joydev gameport analog
Ahora hay que asegurarse de que le pasamos como parámetro a es1371 que nuestro joystick se encuentra en la dirección 0x200 (es un estándar, no se porqué no lo toma por defecto cuando detecta un gameport :S). Para ello empleamos /etc/modules.conf. Como uso Debian edito /etc/modutils/aliases:
options es1371 joystick=0x200
Y ejecuto update-modules para que se regenere el modules.conf adecuadamente. En otras distribuciones puede que vaya de forma diferente.
Instalamos jstest y jscal, que suelen ir en un paquete llamado joystick (claro), y que están disponibles para cualquier distribución. Ahora podemos probar si el dispositivo funciona:
# jstest /dev/input/js0
Que nos dirá qué joystick tenemos y algunos datos más.
Finalmente preparamos el entorno para que nuestros usuarios jugones puedan manejar el pad sin ser root.
Primero creamos unos enlaces simbólicos por conveniencia (compatibilidad con estructuras de /dev de núcleos anteriores):
# cd /dev ln -s input/js0 js0 ln -s input/js1 js1 ln -s input/js2 js2 ln -s input/js3 js3
Ahora cambiamos los manejadores del joystick al grupo games:
# chgrp games /dev/input/js*
Y añadimos al usuario jugón al grupo en cuestión:
# useradd sonia games
Y para mi sorpresa el gamepad va perfectamente con mi juego. ¿Sin calibrar nada? Tendré que investigarlo :D.
En cualquier caso no resulta nada sencillo, y lamentablemente no he encontrado la documentación adecuada (el 0x200 me ha llevado de cabeza un buen rato). Problema resuelto y ¡a jugar!
Hay 2 comentarios
![]()
Pues si te gusta el Super Mario, agárrate:
http://super-tux.sourceforge.net/news.html
Está genial, teniendo en cuenta que es la segunda milestone y que aun le falta para estar acabado.
La pega: no tiene soporte para joystick (todavía).
Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 15 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.
por natxo, en 2004-05-18 10:37:33 ∞