¡¡¡Al fín!!!
Tras unos algunos intentos no demasiado consistentes, hoy he conseguido configurar el Wiimote para controlar mi Ubuntu :oD
A través de meneame (cómo no) llegué a la que podría decir ha sido la pista final (ya he comentado que había hecho alguna prueba sin éxito). Gracia al post de Danigm (Wiimote en linux) y con algún pequeño tuneo, he dado mi primer paso hacia el mando a distancia para presentaciones. Antes de explicar lo que he hecho yo, algunos detalles:
- En el post de Danigm ya se indica todo lo que se necesita, siguiendo los enlaces deberíais ser capaces de conseguir conectar el wiimote con el ordenador vía bluetooth, con el programa WMD. Este programa en sí no es nada espectacular. De hecho, a mí ni se me ha cargado la interfaz gráfica, pero desde la terminal he podido ver que el wiimote se ha conectado correctamente.
- Lo que hace Danigm es crear un nuevo script que se basa en el de WMD para pasar un evento de teclado del ordenador por cada tecla del wiimote (de momento, nada de sensor de movimiento… ¡aunque son 11 teclas, lo que no está nada mal!). Aunque comenta que la combinación de teclas es para mplayer, en realidad afectan al programa que esté enfocado en ese momento. Por ejemplo, si en lugar de mplayer estamos en gedit, al pulsar la tecla A del wiimote escribiremos un espacio. Esto es muy interesante, ya que en mis presentaciones uso más de un programa (por ejemplo, un lector de pdfs a pantalla completa y un navegador con varias pestañas abiertas.
- NOTA IMPORTANTE: aunque Danigm dice que
tenemos que sincronizar el mando, pulsando 1 y 2 a la vez, o el boton rojo que tiene de sync. No va a funcionar a la primera porque tiene puesta una mac que no va a ser la tuya y va a ser la que busque en un principio, pero no hay problema, solo tienes que esperar a que te diga: “Now trying to discover a willing Wiimote, please activate your Wiimote within 5 seconds.” y entonces pulsar 1 y 2 a la vez, y así lo encontrará
a mí solo me funciona con el botón rojo que está en el compartimento de las pilas.
- ¡Cuidado al copiar el código de Danigm! La experiencia me ha demostrado que al copiar el código en el post han desaparecido los tabuladores del código, y son indispensables para que el script funcione. Deberiais tener algo así:
def wii_buttons(buttons):
codeA = 65 #spacio
codeB = 41 #f
codeMas = 63 #*
codeMinus = 112 #/
codeH = 9 #escape
code1 = 32 #o
code2 = 55 #v
codeU = 98 #flecha arriba
codeD = 104 #flecha abajo
codeL = 100 #flecha izquierda
codeR = 102 #flecha derecha
if buttons[1] == "DOWN":
if buttons[0] == "A":
os.popen2("xsendkeycode "+str(codeA)+" 1")
elif buttons[0] == "B":
os.popen2("xsendkeycode "+str(codeB)+" 1")
Hasta aquí, todo más o menos normal (vamos, que no he aportado nada). Pero la cuestión es que servidor necesita combinaciones de teclas, por ejemplo para pasar de una aplicación a otra (el socorrido ctrl+alt). Haciendo una búsqueda en Google, en el segundo resultado (el primero es el post de Danigm!) he llegado a esta página que explica el funcionamiento de xsendkeycode, con lo que he hecho una prueba, pasando a la flecha derecha el atajo de teclado antes citado. Y funciona!!! :oD
Como ha sido mi primer intento, no me he molestado en crear variables y concatenarlas (:oS), me he limitado a escribir las órdenes tal cual:
elif buttons[0] == "R":
os.popen2("xsendkeycode 64 1; xsendkeycode 23 1")
y
elif buttons[0] == "R":
os.popen2("xsendkeycode 64 0; xsendkeycode 23 0")
(el keycode de alt es 64, y el de ctrl 23 -para poder averiguarlo he usado el comando xev que menciona Danigm).
Así que en cuanto tenga tiempo renuevo el resto de las teclas del wiimote para tener algo así:
- Flecha arriba: página anterior (en presentación a pantalla completa)
- Flecha abajo: página siguiente
- Flecha a la derecha: aplicación siguiente (
alt+tab)
- Flecha a la izquierda: aplicación anterior (
alt+may+tab)
- Botón +: aumentar el zoom de compiz-fusion
- Botón -: disminuir el zoom
- Botón 1: pestaña siguiente (en firefox, por ejemplo,
ctrl+tab)
- Botón 2: pestaña anterior (en firefox
ctrl+may+tab)
Y todavía me sobran botones!!!
Prometo colgar el script tuneado en cuanto lo tenga preparado y en marcha ;o)