使用 Python 与 Libinput 接口创建宏

Creating Macros With Python interfacing with Libinput

我是 运行 Fedora 22;我正在尝试使用 uinput 创建一个非常简单的键盘宏脚本,它将跨显示服务器(和控制台)工作。

关注 this post I figured out how to do this successfully in console 并与 evdev;

但是我也希望能够通过 libinput(对于 wayland、mir 和 X11)做到这一点;有人知道怎么做吗?

这个问题在目前的形式下没有多大意义,你混淆了堆栈的两个不同层。

libinput 是一个用于处理来自内核 evdev 设备的事件的库。它执行双指滚动、触摸板手势、鼠标滚轮模拟等操作。对于键盘,它几乎只是转发内核提供的任何内容(键盘布局由合成器和客户端处理)。

uninput 是一个内核接口,用于创建虚拟设备,然后显示为内核 evdev 设备节点。 libinput 不关心设备是物理设备还是虚拟 uinput 设备(事实上,libinput 的测试套件大量使用 uinput 设备)。

因此,由 uinput 创建的设备位于 libinput 之下,您使用 uinput 创建的任何键盘设备都将在使用 libinput 的合成器中显示为键盘。因此,任何按键事件都将像普通键盘一样被转发。

现在,您可以尝试直接向 libinput 添加宏支持,但这要困难得多,而且几乎没有机会进入上游。对于本地用例,基于 uinput 的解决方案就足够了。