마우스 클릭 위치를 얻는 방법은 무엇입니까?

마우스 클릭 위치를 얻는 방법은 무엇입니까?

를 수행하여 마우스 포인터 위치를 얻을 수 있다는 것을 알고 있습니다 xdotool getmouselocation. 나에게 필요한 것은 실행되어 마우스 포인터가 클릭된 위치를 알려주는 프로그램입니다.

답변1

당신은 그것을 사용할 수 있습니다GNU Xnee마우스 이벤트를 추적한 다음 마우스 키 이벤트만 grep합니다. 그러나 마우스 클릭 이벤트에는 마우스 위치가 포함되어 있지 않으므로 이전 이벤트에서 저장하거나 외부 명령(예: xdotool)을 실행하여 현재 마우스 위치를 가져와야 합니다.

예:

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

모든 왼쪽 클릭을 잡아냅니다. awk 명령의 마지막 숫자를 변경하여 다른 키(1 - 왼쪽 마우스 버튼, 2 - 마우스 가운데 버튼, 3 - 마우스 오른쪽 버튼)를 가져오거나 이를 제거하여 모든 키를 가져옵니다.

또한 이벤트 이름은 시스템에서 다르게 보일 수 있습니다. 실행해서 $ cnee --record --mouse찾아서 awk 명령에서 해당 부분을 바꾸세요.

답변2

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

제대로 작동하는지 확인하려면 다음 코드를 사용하세요.

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

관련 정보