在 C 中抓取一个设备

Grab a device in C

如何在 C 中获取设备(比如鼠标?)以便只有给定的进程才能使用它?

例如,它允许鼠标仅在当前进程上使用。

我正在创建一个虚拟设备,我在“/dev/uinput”上写下发送鼠标移动的信息。如何限制这个虚拟鼠标只能在一个进程中使用。

evtest or evemu 是否不足以满足您的测试需求?它们位于大多数 Linux 发行版的标准存储库中,当然足以进行临时测试。

我已经发布了一些示例代码 as an answer on 。它具有超时支持,并获取输入设备(在输入事件设备文件描述符上使用 ioctl(fd, EVIOCGRAB, 1)),这样事件就不会传播,其他尝试获取设备的进程也会失败并显示 EBUSY

以您觉得舒服的方式修改它以检查您的设备提供的事件结构应该不会太难。