Tôi biết tôi có thể có được vị trí của con trỏ chuột bằng cách thực hiện xdotool getmouselocation
. Những gì tôi cần là chương trình sẽ chạy và cho tôi biết vị trí mà con trỏ chuột nhấp vào.
Tôi biết tôi có thể có được vị trí của con trỏ chuột bằng cách thực hiện xdotool getmouselocation
. Những gì tôi cần là chương trình sẽ chạy và cho tôi biết vị trí mà con trỏ chuột nhấp vào.
Câu trả lời:
Bạn có thể sử dụng GNU Xnee để theo dõi các sự kiện chuột của bạn và sau đó grep chỉ các sự kiện nhấn phím chuột. Nhưng vì sự kiện nhấp chuột không chứa vị trí chuột, bạn nên lưu trữ nó từ sự kiện trước đó hoặc thực hiện lệnh bên ngoài (ví dụ xdotool
) để có được vị trí chuột hiện tại.
Thí dụ:
$ cnee --record --mouse | awk '/7,4,0,0,1/ { system("xdotool getmouselocation") }'
Nó sẽ lấy tất cả các nhấp chuột trái. Thay đổi số cuối cùng trong lệnh awk để lấy các phím khác (1 - chuột trái, 2 - chuột giữa, 3 - chuột phải) hoặc xóa nó để lấy tất cả chúng.
Ngoài ra tên sự kiện có thể trông khác nhau trên hệ thống của bạn. Chỉ cần chạy $ cnee --record --mouse
để tìm ra nó và thay thế phần đó trong lệnh awk.
// 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;
}
}
Để kiểm tra xem nó có hoạt động tốt hay không sử dụng mã dưới đây:
window.status = "xMousePos=" + xMousePos + ", yMousePos=" + yMousePos + ", xMousePosMax=" + xMousePosMax + ", yMousePosMax=" + yMousePosMax