Hola, edito mi anterior mensaje en el foro ya que no obtuve respuesta y asi ahorro espacio a elhacker
Estoy creando una aplicación y para que interactue con Ubuntu estoy haciendo uso de "linux/input.h" y "linux/uinput.h", el problema está en que me compila sin ningún tipo de error pero no hace nada, el fallo está hay casi seguro porque los he hecho un seguimiento a la aplicacion y registra los botones que pulso y todo, pero no ocurre nada.
Os dejo mi codigo para inicializar el driver.
int wmDevice::init_device(){
//open uinput and creating descriptor
if ((fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK | O_NDELAY)) == 0){
std::cout << "Unable to open /dev/uinput" << std::endl;
return 1;
}
//configure uinput device parameters
ret = ioctl(fd, UI_SET_EVBIT, EV_KEY);
ret = ioctl(fd, UI_SET_EVBIT, EV_ABS);
// ret = ioctl(fd, UI_SET_EVBIT, EV_SYN);
ret = ioctl(fd, UI_SET_KEYBIT, KEY_SELECT); //left button mouse = A wiimote button wiimote
ret = ioctl(fd, UI_SET_KEYBIT, KEY_CONTEXT_MENU); // right button mouse = B button wiimote
ret = ioctl(fd, UI_SET_KEYBIT, KEY_SCROLLDOWN); // wiimote = 2
ret = ioctl(fd, UI_SET_KEYBIT, KEY_SCROLLUP); //wiimote = 1
ret = ioctl(fd, UI_SET_KEYBIT, KEY_POWER); //power (hold)
ret = ioctl(fd, UI_SET_KEYBIT, KEY_ZOOM); //Zoom = +
ret = ioctl(fd, UI_SET_KEYBIT, KEY_DELETEFILE); // (hold) -
ret = ioctl(fd, UI_SET_KEYBIT, KEY_CLOSE); // -
ret = ioctl(fd, UI_SET_ABSBIT, ABS_X);
ret = ioctl(fd, UI_SET_ABSBIT, ABS_Y);
//****************************************//
memset(&userDev, 0, sizeof(userDev));
strcpy(userDev.name, "wiimote");
userDev.id.bustype = BUS_BLUETOOTH;
userDev.id.vendor = 0x1234;
userDev.id.product = 0x01;
userDev.id.version = 1;
userDev.absmax[ABS_X] = 1920;
userDev.absmin[ABS_X] = 0;
userDev.absmax[ABS_Y] = 1080;
userDev.absmin[ABS_Y] = 0;
//*****************************************//
ret = write(fd, &userDev, sizeof(userDev));
ret = ioctl(fd, UI_DEV_CREATE);
return 0;
}
Ojala podais ayudarme! :D
Mensaje antiguo:
CitarHola a todos.
Os explico mi problema: antesdeayer me dispuse a hacer un programa con el que usar el wiimote (mando de la wii) como si fuera un ratón ( se que existe ya, pero es para aprender), y bueno, ya he conseguido conectar el wiimote, enceder luces, vibración, etc etc...
Lo que no sé como hacer es para que funcione como si fuera un ratón, un amigo me ha comentado algo sobre /dev/input/mice.. yo estuve leyendo que se podia hacer mediante GLUT y SDL (aunque mi amigo insiste en que su metodo es mejor) y he encontrado documentación en inglés de los paquetes de bytes que envian los ratones PS/2 y por lo tanto creo que "debe" enviar el wiimote xD
Comoo veis, tengo tantas "opciones" que no se por donde empezar, si algun experimentado pudiera orientarme lo agradecería.. :P
Saludos!