¿Cómo obtener la posición del clic del mouse?

¿Cómo obtener la posición del clic del mouse?

Sé que puedo obtener la posición del puntero del mouse ejecutando xdotool getmouselocation. Lo que necesito es un programa que se ejecute y me permita saber la posición donde hace clic el puntero del mouse.

Respuesta1

Puedes usarGNU Xneepara realizar un seguimiento de los eventos del mouse y luego registrar solo los eventos de pulsación de teclas del mouse. Pero como el evento de clic del mouse no contiene la posición del mouse, debe almacenarlo del evento anterior o ejecutar un comando externo (por ejemplo xdotool) para obtener la posición actual del mouse.

Ejemplo:

$ cnee --record --mouse | awk  '/7,4,0,0,1/ { system("xdotool getmouselocation") }'

Captará todos los clics izquierdos. Cambie el último número en el comando awk para obtener otras teclas (1 - mouse izquierdo, 2 - mouse central, 3 - mouse derecho) o elimínelo para tomarlas todas.

Además, el nombre del evento probablemente pueda verse diferente en su sistema. Simplemente ejecute $ cnee --record --mousepara descubrirlo y reemplace esa parte en el comando awk.

Respuesta2

// Set Netscape up to run the "captureMousePosition" function whenever
// the mouse is moved. For Internet Explorer and Netscape 6, you can capture
// the movement a little easier.
if (document.layers) { // Netscape
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
document.onmousemove = captureMousePosition;
}
// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

function captureMousePosition(e) {
if (document.layers) {
    // When the page scrolls in Netscape, the event's mouse position
    // reflects the absolute position on the screen. innerHight/Width
    // is the position from the top/left of the screen that the user is
    // looking at. pageX/YOffset is the amount that the user has 
    // scrolled into the page. So the values will be in relation to
    // each other as the total offsets into the page, no matter if
    // the user has scrolled or not.
    xMousePos = e.pageX;
    yMousePos = e.pageY;
    xMousePosMax = window.innerWidth+window.pageXOffset;
    yMousePosMax = window.innerHeight+window.pageYOffset;
 } else if (document.all) {
    // When the page scrolls in IE, the event's mouse position 
    // reflects the position from the top/left of the screen the 
    // user is looking at. scrollLeft/Top is the amount the user
    // has scrolled into the page. clientWidth/Height is the height/
    // width of the current page the user is looking at. So, to be
    // consistent with Netscape (above), add the scroll offsets to
    // both so we end up with an absolute value on the page, no 
    // matter if the user has scrolled or not.
    xMousePos = window.event.x+document.body.scrollLeft;
    yMousePos = window.event.y+document.body.scrollTop;
    xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
    yMousePosMax = document.body.clientHeight+document.body.scrollTop;
  } else if (document.getElementById) {
    // Netscape 6 behaves the same as Netscape 4 in this regard 
    xMousePos = e.pageX;
    yMousePos = e.pageY;
    xMousePosMax = window.innerWidth+window.pageXOffset;
    yMousePosMax = window.innerHeight+window.pageYOffset;
  }
 }

Para comprobar si funciona bien o no, utilice el siguiente código:

window.status = "xMousePos=" + xMousePos + ", yMousePos=" + yMousePos + ", xMousePosMax=" + xMousePosMax + ", yMousePosMax=" + yMousePosMax

información relacionada