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 --mouse
para 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