Bashスクリプトは遅延後にコマンドを実行します。

Bashスクリプトは遅延後にコマンドを実行します。

ショートカットにバインドして乱数文字列を入力するスクリプトを作成しました。

#!/bin/bash

ran="$(shuf -i 100000-999999 -n 1)"

sleep .2

xdotool type --delay 12 "untitled_$ran "

何らかの理由で、このxdotoolコマンドは最初の10分の1秒間何もしません。そうでない場合は、sleep何も入力しないでください。sleepコマンドが短い場合は、6文字未満で入力してください。これは、コマンドは実行中ですが、スクリプトの実行後最初の数分間は無視されるのと同じです。

なぜこれが起こるのですか?この問題をどのように解決できますか?

ベストアンサー1

あなたはあなたの意見でこのスクリプトを実行するために一種のショートカットを使用していると言いました。何が起こっているのかは確かにわかりませんが、キーボードフォーカスが動くことが疑われますxdotool。この仮説をテストするには、次のアプローチをお勧めします。

  • xevターミナルから始めてください。
  • 端末が見えるようにしながらウィンドウに焦点を合わせますxev(ウィンドウ内にマウスを移動するなど)。
  • ショートカットキーを押します。
  • イベントを監視しFocusOutて記録します。このような場合、鍵が消えた理由を説明できます。FocusInxevxev
  • KeyPressイベントは、KeyReleaseあなたがその仕事をしていることを示さなければなりませんxdotool

仮定が正しい場合、それを修正する方法については、フォーカス変更を引き起こさないようにショートカットを有効にする必要があります。全然知らない…

おすすめ記事