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 gerald dumas . Évalué à 1.
[^] # Re: Presse-papier différent.
Posté par titchagui . Évalué à 1.
Merci :)
# Selection X11
Posté par tpierron . Évalué à 2.
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 titchagui . Évalué à 1.
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.