如何在Linux上设置C中的鼠标光标位置?

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)


mct*_*ylr 5

您想编写一个使用call 函数将点移动到相对或全局位置的X11程序XWarpPointer。(Xlib编程手册,第1卷)

通常,使用Xlib对X Window系统进行编程是在Unix或Linux系统上进行图形编程的最基本的底层接口。如今,大多数应用程序是使用更高级别的库(例如GTKQt)开发的,以开发其GUI应用程序。

Curses或NCurses(New Curses)用于编程面向终端的接口,因此在这种情况下没有用。