programmation X11 erreur sur XOpenDevice

programmation X11 erreur sur XOpenDevice - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 22-09-2006 à 09:06:56    

bonjour,
 
je précise tout de suite que je ne connais vraiement pas grand chose en programmation x-window... donc c'est un peu une bouteille à la mer pour moi
 
Sur une debian sarge, avec un Xfree 4.03 (le .03 semble important), je veux mettre en place un écran tactile de marque touchcreen, via un port usb (à l'aide d'un pont PL 2303).
J'ai suivi l'installation proposé par la société, qui est en fait la
réutilisation d'un drivers écris par Alessandro Rubini en date de
2003, version 1.2.
Le drivers semble fonctionner, car j'arrive à faire bouger le curseur à l'écran. Mais, gros problème, il ne semble pas calibré.
Et là commence mes problèmes, le programme fourni pour la calibration se nomme "onetouch_calib", je lance, des points de calibration apparaisse, j'appuie.. et paf plus rien.
 
En débuggan sur le programme je tombe sur la fonction suivante, qui semble ne pas marcher. je pense, mais c'est des supposition!, que la façon de rechercher les devices, puis de les initialiser à changer entre la version 4.02 et 4.03 (est-ce le cas?)
 
la fonction (que j'ai essayé de modifié pour comprendre comment ça fonctionné, voir commentaire):
 
 

Code :
  1. static int finddevice(Display *disp)
  2. {
  3.     XDeviceInfo *info;
  4.     int infolen, i;
  5.     info = XListInputDevices(disp, &infolen);
  6.     for (i=0; i<infolen; i++) {
  7.         printf("devices n° %d = [%s] id=[%d]\n",i,info[i].name,info[i].id);
  8.         if (info[i].use != IsXExtensionDevice)
  9.             continue;
  10.         if (strstr(info[i].name, "touch" ))
  11.             break;
  12.         if (strstr(info[i].name, "Touchscreen0" ))  //ici j'ai modifié le nom, pour que le device correspondent au élements enrvoyé plus haut
  13.             break;
  14.     }
  15.     if (i == infolen)
  16. {       i = -1 /* not found */;
  17.         printf("Device not found, forced to be the first!\n" );  //ici je force, car sur mon systeme il est en premier position , mais bien sur sa plante après!
  18.         i = info[1].id;;
  19. }
  20.     else
  21.    {
  22.         i = info[i].id;
  23.         printf("Device found!!\n" ); //jamais le cas :( !!!!
  24.      }
  25.     /* XFreeDeviceList(info); */
  26.     return i;
  27. }


 
 
A l'origine, le programme ne trouve pas le bon device, même en mettant le nom correctement. J'ai essayé de "forcer", mais sans succès. Voici la sortie écran après que le programme utilise la fonction XOpenDevice dans suite du programme.
 

Code :
  1. Error in startup script: devices n° 0 = [Mouse1] id=[0]
  2. devices n° 1 = [Touchscreen0] id=[1]
  3. devices n° 2 = [keyboard] id=[2]
  4. Device not found, forced to be the first!
  5. X Error of failed request:  BadDevice, invalid or uninitialized input
  6. device
  7.   Major opcode of failed request:  144 (XInputExtension)
  8.   Minor opcode of failed request:  3 (X_OpenDevice)
  9.   Serial number of failed request:  10
  10.   Current serial number in output stream:  10
  11.     while executing
  12. "exec $prg1 off "
  13.     (file "./onetouch_calib" line 175)


 
 
voilà... je suis un peu perdu... existe-il une subtilité sur les recherches puis initialisation des devices sous X11? ya t-il eu des changements? ou pire... je me plante complètement, le souci est ailleurs et je ne le vois pas????
 
merci pour vos suggestions :) !!!

Reply

Marsh Posté le 22-09-2006 à 09:06:56   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed