【问题标题】:Creating Macros With Python interfacing with Libinput使用与 Libinput 连接的 Python 创建宏
【发布时间】:2016-02-16 19:50:21
【问题描述】:

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

this post 之后,我想出了如何成功地做到这一点in console 和 evdev;

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

【问题讨论】:

  • 将文件重命名为 uinput.py 以外的名称,然后重试。
  • 同时删除任何uinput.pyc
  • @VincentSavard Doh 太初级了!这就是我不习惯导入的结果(我也有一段时间没有接触过 bash 脚本之外的任何代码,为我辩护)。在编译完成后,我重新表述了这个问题以适应我目前的困境。感谢您的帮助,也很抱歉造成混乱。

标签: python linux uinput


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我希望创建一个第三方宏程序,它可以欺骗 libinput,使其认为有输入来自键盘使用 uinput。但你是说我可以用 uinput 创建一个 libinput 能够读取的虚拟键盘设备?
  • 是的,使用 uinput 创建的键盘看起来与 libinput 的真实键盘相同
  • 谢谢,我试试看。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
相关资源
最近更新 更多