Questo può essere un codice C di esempio o un'utilità che mostrerà gui o sulla console non importa, ma devo essere in grado di "comandarlo" per afferrare le coordinate in un momento esatto che rende xev non molto utile (che potrei capire).Come posso ottenere le coordinate di posizione del mouse corrente (puntatore) in X
risposta
Non sono un programmatore C in alcun modo ma ho esaminato un paio di tutorial online e penso che questo è il modo in cui si suppone di leggere la posizione corrente del mouse. Questo è il mio codice e non avevo fatto nulla con Xlib prima, quindi potrebbe essere completamente infranto (ad esempio, il gestore degli errori non dovrebbe fare solo nulla per ogni errore) ma funziona. Quindi ecco un'altra soluzione:
#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;
}
In realtà, xev è molto utile se lo si fornisce con l'ID della finestra acquisito usando xwininfo, quindi può facilmente svolgere questa attività per te. Non ci sono dubbi, soluzioni molto più eleganti ma funziona.
C'è un errore su questa linea
root_windows = malloc(sizeof(Window) * number_of_screens);
Change che a questo:
root_windows = (Window *)malloc(sizeof(Window) * number_of_screens);
Entrambe le linee vanno bene con ANSI-C come il cast è implicito. Ma per GCC è possibile eseguire il salvataggio della prima riga con '-WC++ - compat -Werror'. Un'altra storia è che puoi eliminare completamente 'root_windows' sostituendo' root_windows [i] 'con' XRootWindow (display, i) 'nel loop. ;) – Tino
- 1. Ottenere coordinate mouse in Swift
- 2. Come ottenere la direzione del mouse da coordinate del mouse
- 3. Cacao: ottenere la posizione corrente del mouse sullo schermo
- 4. Come posso ottenere le coordinate dello schermo del mouse in WPF?
- 5. Come posso ottenere le coordinate del mouse relative a un div padre? Javascript
- 6. Posizione del mouse in java
- 7. Come posso ottenere le mie coordinate del cursore in Firefox?
- 8. HTML5: dragover(), drop(): come ottenere le coordinate x, y correnti?
- 9. JFreeChart ottiene le coordinate del mouse
- 10. Trasforma le coordinate del listener del mouse in coordinate del grafico
- 11. posizione del mouse in D3
- 12. Converti le coordinate del mouse in un piano 3D
- 13. Matlab: come ottenere la posizione corrente del mouse su un clic utilizzando le callback
- 14. strumento per ottenere le coordinate di un pixel dell'immagine
- 15. ios UIPanGestureRecognizer posizione del puntatore
- 16. Ottiene la posizione del mouse
- 17. Come ottenere il tipo corrente di cursore del mouse in Mac OS X?
- 18. Come posso convertire le coordinate SVG (x, y) definite relativamente a un elemento in coordinate/posizione assolute?
- 19. Posizione del mouse in C#
- 20. Angolare2: gestione evento del mouse (movimento relativo alla posizione corrente)
- 21. Ottenere le coordinate in coordinate
- 22. Come ottenere la posizione del puntatore del mouse usando javascript per internet explorer?
- 23. come ottenere le coordinate del clic del mouse all'esterno della finestra in Java
- 24. Come ottenere la posizione del cursore rispetto alla finestra in Mac OS X?
- 25. Coordinate del mouse relative al fotogramma
- 26. Come ottenere le coordinate di un punto al clic del mouse con JFreeChart?
- 27. Come posso ottenere la posizione corrente di un oggetto MenuBarra?
- 28. C# XNA Posizione del mouse
- 29. Come ottenere la posizione centrale del mapview coordinate
- 30. Come sapere quali elementi sono nella posizione corrente del mouse?
Forse che farà risparmiare qualcuno un po 'di tempo: per compilarlo, salvarlo con pointerposition.c ed eseguire: 'gcc pointerposition.c -o pointerposition -lX11' – exic
Alcuni potrebbero trovare utile sapere: per ottenere la finestra attiva, è possibile utilizzare la finestra di dialogo 'Focus'; \t int revert_to; \t XGetInputFocus (display, & focused, & revert_to); 'Ho sostituito i cicli for con questa unica chiamata per ottenere la finestra attiva, piuttosto che qualsiasi finestra l'esempio sta cercando di trovare – user2255242