一度に 1 文字ずつ読み込み、操作を実行する特定のシェル (zsh) スクリプトがあります。シェルはループで "read -k"を使用してこれを行います。シェルを開かずにキーボードショートカットでスクリプトを実行したいです。
キーボード入力を取得する最も簡単な方法は何ですか?文字列全体を読み取るにはdmenuを使用できますが、スクリプトは一度に1文字ずつ解析できる必要があります。
ありがとうございます。
答え1
(コメントを残そうとしましたが、エラーが発生しました。回答として試してみます。)
「シェルを開かずにショートカットで実行する」と言うと、ターミナルエミュレータウィンドウを開かずにグラフィック環境(X11)で話すのでしょうか?
シェルコマンドは、read
「標準入力」文字ストリームから文字を読み込みます。必ずしもキーボードである必要はありません。
ターミナルエミュレータはウィンドウからX11キーボードイベントを受け取り、それを文字ストリーム(通常は標準入力で始まる)にマッピングします。
ターミナルエミュレータを使用したいがread
使用したくない場合は、一部のウィンドウのX11キーイベントを文字ストリームにマッピングする別のものが必要です。 (おそらく「ルートウィンドウ」)
スクリプトが文字で実行する操作によっては、小さなグラフィックプログラムを作成する方が簡単かもしれません。
答え2
xbindkeys
ショートカットを登録して必要な操作を実行できます。これにより、プログラムをアクティブにし、必要な操作を実行するための鍵が得られます。
始める必要があるのは、zshが直接実行されるスクリプトを実行する端末エミュレータですread -k
。これにより、端末を直接起動する必要がなくなります。希望のサイズ(小さい方)で表示するように端末に指示できます。
アクティベーションキー(または他のアクティベーション)がないと、通常のキーボード入力がプログラムまたは利用可能な他のアプリケーションに入るべき時期をどのように区別できるかは不明です。