如何在Linux中控制鼠标移动?

我尝试在Linux中控制鼠标。Xlib似乎可以工作,但是当我尝试将其与OpenCV一起使用时,它会不断返回:

Resource temporarily unavailable

所以我决定写“ / dev / psaux”。代码如下:

#include <unistd.h>

#include <string.h>

#include <stdio.h>

#include <errno.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int main() {

unsigned char a[5]={0, 0xff, 0, 0x28, 0xff};

int fp = open ("/dev/psaux", O_WRONLY);

if(!fp)printf("open error:%s\n", strerror(errno));

for(int i = 0; i < 10; i++)

printf("write:%d\t\t%s\n", write(fp, a, 5), strerror(errno));

close(fp);

return 0;

}

用以下命令编译:

gcc  my_psaux.c -o my_psaux -std=gnu99 -g

运行并获得

$sudo ./my_psaux 

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

write:5 Success

但是鼠标不会移动。然后,我打开一个新终端,输入“ sudo cat / dev / psaux”并运行“ my_psaux”。但是我什么都没有。

有人可以帮我吗?

如果这不是控制鼠标的好方法,有人可以告诉我另一个吗?

回答:

提醒我一些其他方式,而不是 /dev/psaux

于是,我就/dev/input/mouse*/dev/input/event*

通过使用

cat /proc/bus/input/devices

我得到这个:

I: Bus=0003 Vendor=0461 Product=4d81 Version=0111

N: Name="USB Optical Mouse"

P: Phys=usb-0000:00:1d.0-1/input0

S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/input/input10

U: Uniq=

H: Handlers=mouse2 event10

B: EV=17

B: KEY=70000 0 0 0 0 0 0 0 0

B: REL=143

B: MSC=10

经过测试,仅/dev/input/event10适用。代码如下:

#include <stdio.h>

#include <unistd.h>

#include <linux/input.h>

#include <errno.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <sys/time.h>

int main() {

struct input_event event, event_end;

int fd = open("/dev/input/event10", O_RDWR);

if (fd < 0) {

printf("Errro open mouse:%s\n", strerror(errno));

return -1;

}

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 (int i=0; i<5; i++) {

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

write(fd, &event_end, sizeof(event_end));// Show move

sleep(1);// wait

}

close(fd);

return 0;

}

以上是 如何在Linux中控制鼠标移动? 的全部内容, 来源链接: utcz.com/qa/427269.html

回到顶部