我通过创建虚拟键盘/鼠标来玩 uinput。我设置虚拟设备没有问题。
int fd;
struct uinput_user_dev uidev;
struct input_event ev;
int dx, dy;
int i;
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
if(fd < 0)
die("error: open");
if(ioctl(fd, UI_SET_EVBIT, EV_KEY) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_KEYBIT, BTN_LEFT) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_EVBIT, EV_REL) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_X) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_Y) < 0)
die("error: ioctl");
memset(&uidev, 0, sizeof(uidev));
snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "test");
uidev.id.bustype = BUS_USB;
uidev.id.vendor = 0x1;
uidev.id.product = 0x1;
uidev.id.version = 1;
write(fd, &uidev, sizeof(uidev))
ioctl(fd, UI_DEV_CREATE)
我可以在 /dev/uinput 中编写事件。它就像一个魅力,鼠标在移动或键盘在工作。
但是我不明白在哪里可以读取输入的事件。我可以在 /dev/input/mice 上阅读鼠标并查看虚拟鼠标的数据。但是 /dev/input/mice 适用于所有鼠标...
我应该在哪个 /dev/input/eventX 中阅读?我试图阅读所有这些,但什么也没有。
我为我的 USB 鼠标读取 event0,为键盘读取 event1……但是我在哪里可以了解我的虚拟设备?