如何将全局热键转发到仅在窗口处于焦点时侦听的程序?

如何将全局热键转发到仅在窗口处于焦点时侦听的程序?

假设有一个程序(如 OBS、Chrome 或 Discord)接受热键(打开、保存、打印等),我如何将像 i3 中配置的全局热键转发到仅本地接受目标事件的程序窗户。

例如,假设我想要将正在运行的 Chrome 版本作为打印 ( Ctrl+ P) 的目标。如何设置热键,以便 Chrome在未获得焦点时打开打印对话框 ( CTRL+ )?P

答案1

你可以通过以下方式做到这一点:

  1. 两者都找到,
    • 您当前的活动窗口。 ( src)
    • 目标窗口。 ( dst)。
  2. 脚本编写,
    1. 弹跳到dst
    2. 提交密钥
    3. 反弹回到src

要查找打开的窗口,您可以使用xdotool

src=$(xdotool getwindowfocus)
dst=$(xdotool search --onlyvisible --class "Chromium")

然后向其发送您可以使用的正确密钥,

export key="Ctrl+P"
xdotool windowfocus --sync "$dst" key "$key" windowfocus --sync "$src"

相关内容