0

我正在尝试使用 uinput(和 evdev)模拟输入,但我遇到了一个问题,即键码通常在 Linux 中由使用 XKB 的窗口系统解释,因此使用 XKB 键映射进行翻译。所以在德沃夏克键盘中,ecodes.KEY_S 变成了 o。有没有避免这种情况发生的好方法?我想要一个在 X11 和 Wayland 下都可以工作的解决方案,并且不受 XKB 键盘映射的后续更改或用户更改键盘组时的影响。

这是一个说明问题的简单程序:

#!/usr/bin/env python3
import evdev

fake = evdev.uinput.UInput()

def tap(key):
    fake.write(evdev.ecodes.EV_KEY, key, 1)
    fake.write(evdev.ecodes.EV_KEY, key, 0)

def xx():
    tap(evdev.ecodes.KEY_A)
    tap(evdev.ecodes.KEY_S)
    fake.syn()
    return True

xx()
fake.close()

使用 Dvorak 键盘映射输入“ao”而不是“as”。

4

0 回答 0