xvkbd 无法在 GTK3 应用上运行

xvkbd 无法在 GTK3 应用上运行

我有几个鼠标按钮映射(Fluxbox)来执行 xvkbd 命令,用于 Enter(\r)和 Ctrl+U(\Cu),这非常方便。

它适用于终端和大多数应用程序,但不适用于 GTK3 应用程序,现在 Firefox 也正在切换到它,这一点变得更加引人注目。

我通过在终端上进行测试来测试这一点:

sleep 3 && xvkbd -xsendevent -text "\Cu"

并且快速将焦点放在 GTK2 应用程序的文本字段上,它可以正常工作。当我在 GTK3 应用程序上执行此操作时,它不起作用。

其余的鼠标绑定工作正常,因此 GTK 可以识别鼠标按键但忽略指令,xvkbd -xsendevent如上述测试所证明的那样。

有什么见解吗?

我发现的只是 2012 年的这封邮件列表邮件,没有回复,也没有太多信息:https://mail.gnome.org/archives/gtk-list/2012-May/msg00001.html

答案1

我的解决方案是更换工具,xdotool效果很好。这似乎是因为 GTK3 已切换到 xvkbd 不支持的 X Input 2.0。

我的新按键绑定是:

xdotool key "Return"
xdotool key "Control_L+u"

替换:

xvkbd -xsendevent -text "\r"
xvkbd -xsendevent -text "\Cu"

答案2

尝试删除 -xsendevent 选项。

当指定 -xsendevent 时,xvkbd 使用 XSendEvent() 发送事件,但许多应用程序(可能包括 gtk3 应用程序)将忽略这些事件。

如果在 xvkbd 编译时启用了 XTEST 支持并且 X 服务器也启用了 XTEST,则在未指定 -xsendevent 的情况下 xvkbd 将使用另一种机制,即 XTEST 扩展。

相关内容