Wie erhalte ich die Mausklickposition?

Wie erhalte ich die Mausklickposition?

Ich weiß, dass ich die Position des Mauszeigers durch Ausführen ermitteln kann xdotool getmouselocation. Was ich brauche, ist ein Programm, das ausgeführt wird und mir die Position mitteilt, auf die der Mauszeiger klickt.

Antwort1

Sie könnenGNU Xneeum Ihre Mausereignisse zu verfolgen und dann nur die Ereignisse beim Drücken der Maustaste zu greppen. Da das Mausklickereignis jedoch keine Mausposition enthält, sollten Sie es aus dem vorherigen Ereignis speichern oder einen externen Befehl (z. B. xdotool) ausführen, um die aktuelle Mausposition abzurufen.

Beispiel:

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

Es werden alle Linksklicks erfasst. Ändern Sie die letzte Zahl im awk-Befehl, um andere Tasten zu erhalten (1 – linke Maustaste, 2 – mittlere Maustaste, 3 – rechte Maustaste) oder entfernen Sie sie, um alle zu erfassen.

Außerdem kann der Ereignisname auf Ihrem System möglicherweise anders aussehen. Führen Sie es einfach aus, $ cnee --record --mouseum es herauszufinden, und ersetzen Sie diesen Teil im Awk-Befehl.

Antwort2

// 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;
  }
 }

Um zu überprüfen, ob es einwandfrei funktioniert oder nicht, verwenden Sie den folgenden Code:

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

verwandte Informationen