Forum Programmation.c Problème de récupération de buffer

Posté par  .
Étiquettes : aucune
0
18
oct.
2004
Bonjour,

J'utilise la fonction XFetchBuffer() pour récupérer le contenu du buffer et l'afficher dans ma console. Malheureusement, elle ne marche pas comme je le souhaite.
Voici le code que je compile:
'
#include "X11/Xlib.h"
#include "strings.h"
#include "stdio.h"
#include "sys/file.h"

Display *display;
char * p;

main()
{
int l;
if ( (display=XOpenDisplay(NULL)) == NULL )
{
fprintf(stderr, "basic: can't connect to x server %s\n",XDisplayName(NULL));
exit(-1);
};
p = XFetchBuffer( display, &l, 0 );
printf( "The chars are : %s\n", p);
XCloseDisplay (display);

};'
Si je sélectionne une chaine de caractères dans emacs ou dans un xterm, le programme me retourne bien ma sélection. Par contre, si je sélectionne du texte dans konsole ou mozilla, le programme ne me retourne rien ou bien me retourne la sélection précédente (celle du xterm ou du emacs).
J'ai essayé de modifier les options de klipper (en changeant 'Clipboard/Selection Behavior') mais le résultat est toujours le même.
Comment pourrais-je faire pour résoudre ou contourner ce problème? Le buffer de konsole et xterm ne sont pas les mêmes?

Cordialement
  • # Presse-papier différent.

    Posté par  . Évalué à 1.

    Il me semble qu'avec la librairie GTK ( sûrement avec autres aussi mais je n'en sais rien !) il est possible d'implémenter un presse-papier interne. Donc pas d'utilisation de celui de la Xlib. Ton pb vient sûrement de là.
  • # Selection X11

    Posté par  . Évalué à 2.

    Ce que tu obtiens là est ce qu'on appelle un "cut buffer" dans la terminologie X11. C'est une propriété X11 associé au Display, qui ne peut donc contenir que du texte. C'est tellement primitif que pratiquement plus aucune application ne l'utilise.

    Ce que tu cherche à obtenir c'est la sélection courante. Pas de bol pour toi, c'est beaucoup plus compliqué que cela. Je te conseille vivement d'utiliser un toolkit de plus haut niveau style GTK, Xt ou Qt.

    Gérer la sélection directement avec la Xlib, c'est vraiment pas marrant. Si ça t'intéresse, il y a un exemple de code manipulant la sélection en ligne de commande (avec Xt). C'est vieux, et il gère mal le "copier" (ie: quand une appli lui demande le contenu du presse papier). La fonction "coller" est mieux foutue :
    http://www.niksula.cs.hut.fi/~vherva/xsel/(...)
    • [^] # Re: Selection X11

      Posté par  . Évalué à 1.

      Je testerai ça dès que possible, peut-être que ça conviendra.
      En tout cas, merci pour la réponse.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.