frx*_*x08 21 c linux x11 pointers position
如何在Linux下使用C程序在X窗口中设置鼠标光标位置?谢谢:)(像WIN中的setcursorpos())
编辑:我已经尝试过这段代码,但不起作用:
#include <curses.h>
main(){
move(100, 100);
refresh();
}
Run Code Online (Sandbox Code Playgroud)
Ber*_*ron 33
12.4 - 移动指针
尽管指针的移动通常应由最终用户控制,但有时需要将指针移动到程序控制下的新位置.
要将指针移动到窗口中的任意点,请使用XWarpPointer().
例:
Display *dpy;
Window root_window;
dpy = XOpenDisplay(0);
root_window = XRootWindow(dpy, 0);
XSelectInput(dpy, root_window, KeyReleaseMask);
XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, 100, 100);
XFlush(dpy); // Flushes the output buffer, therefore updates the cursor's position. Thanks to Achernar.
Run Code Online (Sandbox Code Playgroud)
小智 11
这是旧的,但万一其他人遇到这个问题.tusbar提供的答案是正确的,但必须在末尾添加命令XFlush(dpy)以更新光标的位置.所需的库是:X11/Xh,X11/Xlib.h,X11/Xutil.h.
int main(int argc, char *argv[]){
//Get system window
Display *dpy;
Window root_window;
dpy = XOpenDisplay(0);
root_window = XRootWindow(dpy, 0);
XSelectInput(dpy, root_window, KeyReleaseMask);
XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, 100, 100);
XFlush(dpy);
return 0;}
Run Code Online (Sandbox Code Playgroud)
您想编写一个使用call 函数将点移动到相对或全局位置的X11程序XWarpPointer。(Xlib编程手册,第1卷)
通常,使用Xlib对X Window系统进行编程是在Unix或Linux系统上进行图形编程的最基本的底层接口。如今,大多数应用程序是使用更高级别的库(例如GTK或Qt)开发的,以开发其GUI应用程序。
Curses或NCurses(New Curses)用于编程面向终端的接口,因此在这种情况下没有用。