我可以将键盘和鼠标合并到单个虚拟输入设备吗?

我可以将键盘和鼠标合并到单个虚拟输入设备吗?

有些应用程序使用奇怪/不方便的用户交互,并且无法编辑。我想将键盘和鼠标事件的组合重新映射到键盘和鼠标事件的另一个组合。

准确地说,我希望当指定的应用程序(达芬奇解析)处于焦点状态时激活这样的映射ctrl+ wheel up -> alt+ 。wheel up

轮子正是解决此任务的实用程序。但该实用程序非常过时并且针对 X11,而我正在寻找 Wayland 的解决方案。作为补充说明,尽管我当前的用例允许使用它(因为 davinci 解析当前仅通过 Xwayland 运行),但它的工作效果不是很好。有时,一些事件没有被“翻译”,这会导致不必要的影响。我希望新的 Wayland 支持公用事业不会出现这样的问题。

我发现了一个非常类似的问题,但是对于两只老鼠来说,它并没有确切的答案。

我找到了实用程序(evdevremapkeys 的 Pronobis 分叉或者埃弗雷图)可能可以完成此任务,因为它们允许 N:N 映射。但它们的配置文件仅使用一个设备(至少在撰写本文时),请参阅这里

现在我有了一个想法,从我的键盘和鼠标创建一个虚拟 evdev 输入设备(换句话说,合并它们),并在实用程序的配置中使用它。是否可以?

我有一种强烈的感觉,这可能是可能的python-evdev或者埃夫西韦。但我不知道我到底应该做什么来制作这样的虚拟输入设备。

答案1

我已使用以下命令成功创建了一个合并设备(在文档):

$ evsieve --input /dev/input/event8 grab --input /dev/input/event5 grab --output

/dev/input/event8我的键盘在哪里,/dev/input/event5我的鼠标在哪里。并/dev/input/event3以名称创建Evsieve Virtual Device

对于实际的重新映射ctrl+wheelalt+wheelalt+wheelctrl+,wheel我们可以将命令更改为以下内容(取自这里):

sudo evsieve --input /dev/input/event8 grab --input /dev/input/event5 grab \
    --hook   key:leftalt:1 toggle=alt:2 \
    --hook   key:leftalt:0 toggle=alt:1 \
    --hook   key:leftctrl:1 toggle=ctrl:2 \
    --hook   key:leftctrl:0 toggle=ctrl:1 \
    --toggle rel:wheel @alt-up @alt-down id=alt \
    --map    yield rel:wheel@alt-down key:leftalt:0 key:leftctrl:1 key:leftctrl:2 rel:wheel key:leftctrl:0 key:leftalt:1 \
    --toggle rel:wheel @ctrl-up @ctrl-down id=ctrl \
    --map    yield rel:wheel@ctrl-down key:leftctrl:0 key:leftalt:1 key:leftalt:2 rel:wheel key:leftalt:0 key:leftctrl:1 \
    --block  rel:wheel_hi_res \
    --print  @alt-down @alt-up @ctrl-down @ctrl-up \
    --output create-link=/dev/input/by-id/merged-virtual-KM name="merged virtual KM"

如果想使用evremap,我们可以使用以下配置:

device_name = "Evsieve Virtual Device"

[[remap]]
input = ["KEY_LEFTALT", "BTN_RIGHT"]
output = ["KEY_PAGEUP"]

按 Alt + 鼠标右键将光标向上移动,即生成 PgUp。但映射车轮事件是现在不可能的。

相关内容