我如何在Linux下使用C程序在X窗口中设置鼠标光标的位置? 谢谢:)(如WIN中的setcursorpos())
编辑:我试过这段代码,但不起作用:
#include <curses.h> main(){ move(100,100); refresh(); }
如何判断VB6中菜单项的位置?
如何在Windows 7 / Vista上以编程方式装载WebDAV共享,无需分配盘符?
Nginx的。 如果为空URI。 如果空域。 位置。 正则expression式
C# – 如何访问WLAN信号强度和其他?
Apacheconfiguration – 从authentication中排除位置
Nginx的位置,别名,重写,根
如何在windows .bat脚本中查看32位Program Files文件夹的位置
如何获取terminal中的光标位置?
12.4 – 移动指针
尽管指针的移动通常应该由最终用户来控制,但是有时在程序控制下有必要将指针移动到新的位置。
要将指针移动到窗口中的任意点,请使用XWarpPointer() 。
例:
display *dpy; Window root_window; dpy = XOpendisplay(0); root_window = XRootwindow(dpy,0); XSelectInput(dpy,root_window,keyreleaseMask); XWarpPointer(dpy,None,100,100); XFlush(dpy); // Flushes the output buffer,therefore updates the cursor's position. Thanks to Achernar.
这是旧的,但万一有人遇到这个问题。 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,100); XFlush(dpy); return 0;}
您要编写一个X11程序 ,使用调用XWarpPointer函数将该点移动到相对或全局位置。 (Xlib编程手册,第1卷)
一般来说,使用Xlib来编程X Window系统,是在Unix或Linux系统上进行图形编程的最基本和最底层的接口。 现在开发的大多数应用程序都使用更高级别的库(如GTK或Qt)来开发GUI应用程序。
Curses或NCurses(New Curses)用于编程面向终端的接口,所以在这种情况下是没有用的。
您可以使用XWarpPointer在X窗口中移动鼠标光标。
XWarpPointer(display,src_w,dest_w,src_x,src_y,src_width,src_height,dest_x,dest_y) display *display; Window src_w,dest_w; int src_x,src_y; unsigned int src_width,src_height; int dest_x,dest_y;
使用Jordan Sissel的优秀实用程序xdotool。
http://www.semicomplete.com/projects/xdotool/
它提供了像xdo_mousemove()这样的XWarpPointer包装函数,下面是一些例子:
display *display = NULL; xdo_t *xdo = NULL; void mouse_left_down(int x,int y) { xdo_mousemove(xdo,x,y,0) xdo_mousedown(xdo,CURRENtwindOW,Button1); } void mouse_left_up(int x,int y) { xdo_mouseup(xdo,Button1,1,0); } void mouse_left_double_click(int x,0); xdo_click_multiple(xdo,0); doubleclick = TRUE; } int main() { display = XOpendisplay(NULL); if(display == NULL) { fprintf(stderr,"can't open display!n"); return -1; } xdo = xdo_new((char*) display); //some task here // ... return 0; }
所有的现代终端都应该支持ANSI转义序列 。 对于任何更复杂(更便携)的东西,你应该使用一个库,比如ncurses 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。