如何通过 bash 向程序发送快捷方式?

How to send a shortcut by bash to a program?

我想将刷新标签页的快捷方式发送到 Firefox。

我有:

我发现/尝试过的:

我在终端上尝试了什么(没有收到错误消息,它在寻找我,就像我没有真正重新加载网页一样)。它可以将终端的输出发送到终端而不是 firefox。:

xdotool key F5
xdotool key Ctrl + R

问题:

备注和新知识:

通过 bash 将 F5 发送到浏览器的示例,用于重新加载页面:

xdotool sleep 0.5 search --onlyvisible --classname Navigator windowactivate --sync key F5
xdotool sleep 0.5 search --onlyvisible --classname Navigator windowactivate --sync keyup F5

通过 bash 将 Ctrl+F5 发送到浏览器的示例,用于重新加载缓存和页面:

xdotool sleep 0.5 search --onlyvisible --classname Navigator windowactivate --sync key Ctrl+F5
xdotool sleep 0.5 search --onlyvisible --classname Navigator windowactivate --sync keyup Ctrl
xdotool sleep 0.5 search --onlyvisible --classname Navigator windowactivate --sync keyup F5

备注: keyup 稍微修复了 buggy xdotool。

现在在错误跟踪器上发现了错误:

发现错误原因如下:

“xdotool 似乎不起作用的事实可能与检测和丢弃合成事件的应用程序有关:

Sending keystrokes to a specific window uses a different API than simply typing to the active window.

[...]

Many programs observe this flag and reject these events."

来源:Automatic web-page refresh using xdotool - not sending key after window focus

找到以下解决方案:

“考虑到这一点,我能够使用下面的一系列命令让它工作。这会重新加载 Chromium 和 Firefox。

cwid=$(xdotool getwindowfocus) # Save the current window
twid=$(xdotool search --name somename)
xdotool windowactivate $twid
sleep 0.1 # The key event might be sent before the window has been fully activated
xdotool key --window $twid F5
xdotool windowactivate $cwid # Done, now go back to where we were

” 资料来源:Automatic web-page refresh using xdotool - not sending key after window focus