Esto puede ser un código de muestra C o una utilidad que me mostrará GUI o en la consola no importa, pero tengo que ser capaz de "mandarlo" a agarrar las coordenadas en un tiempo exacto, lo que hace que xev no sea muy útil (que yo pueda descifrar).¿Cómo puedo obtener las coordenadas de posición actuales del mouse (puntero) en X
Respuesta
No soy un programador de C de ninguna manera, pero miré un par de tutoriales en línea y creo que así es como debe leer la posición actual del mouse. Este es mi propio código y no había hecho nada con Xlib antes, por lo que podría estar completamente roto (por ejemplo, el controlador de errores no debería simplemente no hacer nada por cada error) pero funciona. Así que aquí hay otra solución:
#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 realidad, xev es muy útil si lo proporciona con la identificación de la ventana tomada con xwininfo, entonces puede realizar esta tarea fácilmente para usted. Sin duda, hay soluciones mucho más elegantes, pero funciona.
Hay un error en esta línea
root_windows = malloc(sizeof(Window) * number_of_screens);
cambio que a esto:
root_windows = (Window *)malloc(sizeof(Window) * number_of_screens);
Ambas líneas están bien con ANSI-C como el yeso es implicita Pero para GCC puedes hacer la primera línea para rescatar con '-WC++ - compat -Werror'. Otra historia es que puede deshacerse de 'root_windows' completamente al reemplazar' root_windows [i] 'con' XRootWindow (display, i) 'en el bucle. ;) – Tino
- 1. Posible obtener las coordenadas actuales del mouse con Javascript?
- 2. HTML5: dragover(), drop(): cómo obtener las coordenadas x, y actuales?
- 3. Obtener posición del mouse
- 4. JFreeChart obtener coordenadas del mouse
- 5. Transformar las coordenadas del oyente del mouse en las coordenadas del gráfico
- 6. Cómo obtener la posición del mouse sobre un cierto control
- 7. onMouseMove obtener la posición del mouse
- 8. Obteniendo la posición "global" del mouse en Mac OS X
- 9. Traducir las coordenadas del mouse a un plan 3D
- 10. Obtener las coordenadas del cursor en raphael
- 11. ActionScript: ¿Coordenadas del mouse inexactas?
- 12. Coordenadas del mouse relativas al fotograma
- 13. ¿Cómo obtener la posición del puntero del mouse con javascript para Internet Explorer?
- 14. C# XNA Posición del mouse
- 15. ¿Cómo puedo obtener el componente en la posición de clic del mouse, cuando uso un TableCellEditor?
- 16. Cómo obtener la vista desde las coordenadas X/Y
- 17. glReadPixels() realmente una solución lenta y mejor para obtener las coordenadas de OpenGL desde la posición del mouse?
- 18. ¿Cómo obtener la posición del cursor relativa a la ventana en Mac OS X?
- 19. ¿Cómo obtener las coordenadas de un punto con un clic del mouse con JFreeChart?
- 20. ios UIPanGestureRecognizer posición del puntero
- 21. objetivo c cómo obtener marcas de posición de coordenadas dadas
- 22. Android: Seguimiento del movimiento del puntero del mouse
- 23. posición del cursor del mouse en Javascript?
- 24. ¿Puedo obtener las coordenadas de un div con JQuery?
- 25. ¿Cómo puedo obtener las coordenadas x/y de un elemento SVG (ruta, etc.) que no tiene los atributos X/Y?
- 26. Obtener posición/botón de clic del mouse en evento de DoubleClick
- 27. Obteniendo la posición del mouse en el evento del teclado
- 28. Cocoa: Obteniendo la posición actual del mouse en la pantalla
- 29. Cómo obtener la posición del cursor
- 30. ¿Cómo hago las letras de las coordenadas x?
Tal vez que salvará a alguien algún tiempo: compilarlo, guardarlo con pointerposition.c y ejecute: 'gcc pointerposition.c -o pointerposition -lX11' – exic
Algunos pueden encontrar útil saber esto: para obtener la ventana activa, puede usar' Window focused; \t int revert_to; \t XGetInputFocus (mostrar, & enfocado, y revert_to); 'Reemplacé los bucles for con esta única llamada para obtener la ventana activa, en lugar de la ventana que el ejemplo intenta encontrar – user2255242