我正在运行 Fedora 22;我正在尝试使用 uinput 创建一个非常简单的键盘宏脚本,该脚本可以跨显示服务器(和控制台)工作。
在这篇文章之后,我想出了如何在控制台和 evdev 中成功地做到这一点;
但是我也希望能够通过 libinput 来做到这一点(对于 wayland、mir 和 X11);没有人知道怎么做吗?
这个问题在目前的形式下不太有意义,你混淆了堆栈的两个不同层。
libinput 是一个用于处理来自内核 evdev 设备的事件的库。它执行两指滚动、触摸板手势、鼠标滚轮模拟等操作。对于键盘,它几乎只是转发内核提供的任何内容(键盘布局由合成器和客户端处理)。
uninput 是一个内核接口,用于创建虚拟设备,然后显示为内核 evdev 设备节点。libinput 不关心设备是物理设备还是虚拟 uinput 设备(实际上,libinput 的测试套件大量使用了 uinput 设备)。
因此,由 uinput 创建的设备位于 libinput 下方,您使用 uinput 创建的任何键盘设备都将在使用 libinput 的合成器中显示为键盘。因此,任何键事件都将像从普通键盘一样被转发。
现在,您可以尝试直接将宏支持添加到 libinput,但这样做要困难得多,而且几乎没有机会进入上游。对于本地用例,基于 uinput 的解决方案就足够了。