gpt4 book ai didi

linux - 在 linux wayland 上模拟鼠标运动

转载 作者:IT王子 更新时间:2023-10-29 00:34:43 26 4
gpt4 key购买 nike

我从我的网络接收到 xy 数据,我想在 wayland 上使用 linux 控制鼠标位置。

我见过许多使用 X 库或 X 应用程序的源代码,但它无法在 Wayland 上运行。我也查看了 libinput 和 evedev,但我没有找到任何关于如何创建/模拟鼠标的代码示例。

最佳答案

Uinput就是答案。

void initMouse(){
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
ioctl(fd, UI_SET_EVBIT, EV_KEY);
ioctl(fd, UI_SET_KEYBIT, BTN_LEFT);
ioctl(fd, UI_SET_EVBIT, EV_ABS);
ioctl(fd, UI_SET_ABSBIT, ABS_X);
ioctl(fd, UI_SET_ABSBIT, ABS_Y);

struct uinput_user_dev uidev;
memset(&uidev,0,sizeof(uidev));
snprintf(uidev.name,UINPUT_MAX_NAME_SIZE,"HolusionMouse");
uidev.id.bustype = BUS_USB;
uidev.id.version = 1;
uidev.id.vendor = 0x1;
uidev.id.product = 0x1;
uidev.absmin[ABS_X] = 0;
uidev.absmax[ABS_X] = 1080;
uidev.absmin[ABS_Y] = 0;
uidev.absmax[ABS_Y] = 1080;
write(fd, &uidev, sizeof(uidev));
ioctl(fd, UI_DEV_CREATE);

usleep(100000);
}

并更新:

struct input_event ev[2], evS;
memset(ev, 0, sizeof(ev ));
ev[0].type = EV_ABS;
ev[0].code = ABS_X;
ev[0].value = 100;
ev[1].type = EV_ABS;
ev[1].code = ABS_Y;
ev[1].value = 100;
write(fd, ev, sizeof(ev));

memset(&evS,0,sizeof(struct input_event));
evS.type = EV_SYN;
write(fd, &evS, sizeof(struct input_event));

usleep(10000);

关于linux - 在 linux wayland 上模拟鼠标运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com