繁体   English   中英

如何在C中控制Linux鼠标光标的移动

[英]how to control Linux mouse cursor movement in C

我正在尝试通过Android应用程序为linux服务器上的鼠标远程控制创建一个应用程序。 作为一个初学者,我有很多probs ..在用C编写linux服务器之前,我试着检查一下我是否可以根据代码在Linux上控制和移动鼠标:

#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <linux/input.h>

int main(){
struct input_event event, event_end;
int i=0;
int fd = -1;

fd = open("/dev/input/event4", O_RDWR | O_NONBLOCK);
if(fd<0){
perror("error");
}

memset(&event, 0, sizeof(event));
memset(&event, 0, sizeof(event_end));
gettimeofday(&event.time, NULL);
event.type = EV_REL;
event.code = REL_X;
event.value = 100;
gettimeofday(&event_end.time, NULL);
event_end.type = EV_SYN;
event_end.code = SYN_REPORT;
event_end.value = 0;
for( i=0; i<5; i++){

write(fd, &event, sizeof(event));// Move the mouse
write(fd, &event_end, sizeof(event_end));// Show move

sleep(1);
}
close(fd);
return 0;
}

在构建编译后执行..光标永远不会发生任何变化..是否会出现VirtualBox设置问题?

当我物理移动鼠标时,sudo cat / dev / input / event4显示奇怪的符号串。 这意味着能够通过event4得到鼠标光标移动的控制器不是吗? 我想知道为什么光标不会移动......任何人都可以帮忙吗?

而且,如果有人建议使用库和函数来控制鼠标,我会很高兴

多谢

您不能只写入设备文件并期望驱动程序的行为就像实际硬件发送这些事件一样。 事情比这复杂得多。

如果你只关心X Windows环境,那么你很幸运。 您可以使用此功能将事件发送到窗口:

http://tronche.com/gui/x/xlib/event-handling/XSendEvent.html

如果您不知道哪个窗口应该接收您的事件,只需将它们发送到根窗口,它们将被适当地路由。

还有一个图书馆。

http://www.x.org/releases/X11R7.6/doc/libXtst/recordlib.html

请记住,在X窗口中,事件有一个标志,指示事件是来自实际硬件还是由上述方法之一合成。 在大多数情况下,程序只是忽略此标志并且无论如何都表现相同。 但有时你会有奇怪的惊喜。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM