Cela peut être soit un exemple de code C ou un utilitaire qui va me montrer soit gui ou sur la console ce n'est pas grave, mais je dois être capable de le "commander" pour saisir les coordonnées à un moment précis qui rendra xev peu utile (que je pourrais comprendre).Comment puis-je obtenir les coordonnées de position de souris (pointeur) en cours dans X
Répondre
Je ne suis pas un programmeur C, mais j'ai regardé quelques tutoriels en ligne et je pense que c'est comme ça que vous devez lire la position actuelle de la souris. C'est mon propre code et je n'avais rien fait avec Xlib auparavant, donc ça pourrait être complètement cassé (par exemple, le gestionnaire d'erreurs ne devrait pas faire n'importe quoi pour chaque erreur) mais ça marche. Donc, voici une autre solution:
#include <X11/Xlib.h>
#include <assert.h>
#include <unistd.h>
#include <stdio.h>
#include <malloc.h>
static int _XlibErrorHandler(Display *display, XErrorEvent *event) {
fprintf(stderr, "An error occured detecting the mouse position\n");
return True;
}
int main(void) {
int number_of_screens;
int i;
Bool result;
Window *root_windows;
Window window_returned;
int root_x, root_y;
int win_x, win_y;
unsigned int mask_return;
Display *display = XOpenDisplay(NULL);
assert(display);
XSetErrorHandler(_XlibErrorHandler);
number_of_screens = XScreenCount(display);
fprintf(stderr, "There are %d screens available in this X session\n", number_of_screens);
root_windows = malloc(sizeof(Window) * number_of_screens);
for (i = 0; i < number_of_screens; i++) {
root_windows[i] = XRootWindow(display, i);
}
for (i = 0; i < number_of_screens; i++) {
result = XQueryPointer(display, root_windows[i], &window_returned,
&window_returned, &root_x, &root_y, &win_x, &win_y,
&mask_return);
if (result == True) {
break;
}
}
if (result != True) {
fprintf(stderr, "No mouse found.\n");
return -1;
}
printf("Mouse is at (%d,%d)\n", root_x, root_y);
free(root_windows);
XCloseDisplay(display);
return 0;
}
En fait, xev est très utile si vous le fournissez avec l'identifiant de fenêtre saisi avec xwininfo, alors il peut facilement effectuer cette tâche pour vous. Il n'y a aucun doute des solutions beaucoup plus élégantes mais cela fonctionne.
Il y a une erreur sur cette ligne
root_windows = malloc(sizeof(Window) * number_of_screens);
Un changement qui à ceci:
root_windows = (Window *)malloc(sizeof(Window) * number_of_screens);
Les deux lignes vont bien avec ANSI-C le casting est implicite. Mais pour GCC, vous pouvez faire la première ligne à renflouer avec '-WC++ - compat -Werror'. Une autre histoire est que vous pouvez vous débarrasser complètement de 'root_windows' en remplaçant' root_windows [i] 'par' XRootWindow (display, i) 'dans la boucle. ;) – Tino
- 1. Comment obtenir les coordonnées de l'écran de la souris en cours dans WPF?
- 2. Obtenir les coordonnées de la souris à l'aide de jQuery
- 3. Comment obtenir la position de la souris?
- 4. onMouseMove obtenir la position de la souris
- 5. Traduction des coordonnées X & Y de la souris en coordonnées 3D
- 6. Obtenir des coordonnées de souris sur un clic de souris en C#
- 7. WPF 3D: modèle Zoom avec pointeur souris coordonnées comme centre
- 8. montrant la position de la souris coordonnées dans une boîte dyanamic
- 9. En JS, comment puis-je obtenir les coordonnées de la souris à l'intérieur d'un DIV?
- 10. Comment obtenir les coordonnées x y d'une image dans php
- 11. HTML5: dragover(), drop(): comment obtenir les coordonnées x, y actuelles?
- 12. Cocoa: Obtenir la position actuelle de la souris sur l'écran
- 13. VB.NET - Coordonnées de la souris
- 14. VSTO: Obtenir la position du curseur de texte (X/Y)
- 15. JFreeChart obtient les coordonnées de la souris
- 16. Problème de position de la souris Javascript
- 17. Comment obtenir les coordonnées d'un clic de souris sur un contrôle WPF transformé?
- 18. forme Visio - obtenir position X, Y
- 19. obtenir le type de curseur de la souris en cours
- 20. Comment obtenir les coordonnées d'un objet dans une toile tkinter?
- 21. Comment obtenir les coordonnées de Gridlayout
- 22. Comment obtenir les coordonnées de nœud chaud de TVirtualStringTree?
- 23. les coordonnées x, y d'un UIVIew personnalisé
- 24. Position du curseur dans une zone de texte (index de caractères, pas de coordonnées x/y)
- 25. Comment obtenir le décalage de caractère X & Y (coordonnées)
- 26. Obtention de la position x et y du pointeur de la souris par rapport à un élément
- 27. Comment obtenir Vue à partir des coordonnées X/Y
- 28. HTML obtenir des coordonnées/position sur le clic avec JS
- 29. comment (en maya) puis-je obtenir la position 3D de la souris?
- 30. Comment obtenir les coordonnées de la souris lors d'un clic sur un contrôle?
Peut-être quelqu'un qui sauvera un certain temps: Pour le compiler, enregistrer sous pointerposition.c et exécuter: 'gcc pointerposition.c -o pointerposition -lX11' – exic
Certains peuvent trouver cela utile de savoir: pour obtenir la fenêtre active, vous pouvez utiliser' Windows focus; \t int revert_to; \t XGetInputFocus (affichage, & focus, & revert_to); 'J'ai remplacé les boucles for par cet unique appel afin d'obtenir la fenêtre active, plutôt que la fenêtre que l'exemple essaie de trouver – user2255242