Interferencia entre wrj4P5 y los eventos de mouseMoved con Processing en GNU/Linux Ubuntu 10.10

Introducción.

En días anteriores escribí acerca de como utilizar el wiimote en sketches de Processing bajo GNU/Linux Ubuntu 10.10.  El método detallado funciona bastante bien al menos para el manejo del evento de la presión de los botones del dispositivo, sin embargo he encontrado un problema molesto con el uso de esta librería y del cual no he podido encontrar mayor información.

Si en un sketch en el cual se está manejando el evento de movimiento del ratón (mouse moved) se empareja un wiimote utilizando la librería wrj4P5 se empiezan a generar múltiples eventos sugiriendo que el ratón se está moviendo aunque sus coordenadas no varian!

Aplicación de demostración.

Aplicación de demostración uso de Wiimote con Processing
Aplicación de demostración uso de Wiimote con Processing

Para experimentar con el problema sugerido he creado un sketch muy simple que utiliza la librería mencionada y además maneja el evento de movimiento del ratón.

Este problema ha sido probado en tres equipos, dos portátiles y uno de escritorio, con GNU/Linux Ubuntu 10.10 y 9.10 respectivamente.  Aún no he tenido la oportunidad de experimentar con la aplicación de demostración en Windows.

Una solución temporal.

Por ahora la única solución, para nada elegante, que he encontrado es el verificar si efectivamente el puntero del ratón ha sido movido para garantizar que el supuesto evento si sucedió en realidad.

int lastX;
int lastY;

void mouseMoved()
{
  if(mouseX == lastX && mouseY == lastY)    // There was no movement: avoid this "event"!
  {
    return;
  }
  else    // There WAS movement, update "last" positions.
  {
    lastX = mouseX;
    lastY = mouseY;
  }

  // ... do some stuff ...
}

El sketch puede ser descargado del sitio de demostraciones con la modificación para evitar el problema desactivada.  Para activarla remueva los comentarios al rededor del condicional if(mouseX == lastX && mouseY == lastY) aproximadamente en la línea 66.

Enlaces.

2 thoughts on “Interferencia entre wrj4P5 y los eventos de mouseMoved con Processing en GNU/Linux Ubuntu 10.10”

Leave a Reply

Your email address will not be published. Required fields are marked *