假设有一个程序(如 OBS、Chrome 或 Discord)接受热键(打开、保存、打印等),我如何将像 i3 中配置的全局热键转发到仅本地接受目标事件的程序窗户。
例如,假设我想要将正在运行的 Chrome 版本作为打印 ( Ctrl+ P) 的目标。如何设置热键,以便 Chrome在未获得焦点时打开打印对话框 ( CTRL+ )?P
答案1
你可以通过以下方式做到这一点:
- 两者都找到,
- 您当前的活动窗口。 (
src
) - 目标窗口。 (
dst
)。
- 您当前的活动窗口。 (
- 脚本编写,
- 弹跳到
dst
- 提交密钥
- 反弹回到
src
- 弹跳到
要查找打开的窗口,您可以使用xdotool
,
src=$(xdotool getwindowfocus)
dst=$(xdotool search --onlyvisible --class "Chromium")
然后向其发送您可以使用的正确密钥,
export key="Ctrl+P"
xdotool windowfocus --sync "$dst" key "$key" windowfocus --sync "$src"