ウィンドウにフォーカスがある場合にのみ、リスニングプログラムにグローバルショートカットをどのように渡すことができますか?

ウィンドウにフォーカスがある場合にのみ、リスニングプログラムにグローバルショートカットをどのように渡すことができますか?

ショートカット(開く、保存、印刷など)を許可するプログラム(OBS、Chrome、Discordなど)があると仮定すると、i3で設定されたものなどのグローバルショートカットをローカルでターゲットイベントのみを許可するプログラムウィンドウにどのように渡すことができますか? ?

Ctrlたとえば、私が実行しているChromeのバージョンを印刷ターゲット(+)としてターゲットにしたいとしますP。 Chromeにフォーカスがないときに印刷ダイアログ(+)が開くようにショートカットキーを設定するにはどうすればよいですかCTRLP

答え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"

関連情報