キーをさまざまなキーと組み合わせ(対応するキーを含む)にマッピングする方法は?

キーをさまざまなキーと組み合わせ(対応するキーを含む)にマッピングする方法は?

各キーの前に+をdxhd使用して使用し、そのキーを入力し、以下のように別のキーを押してみました。xdotoolCtrlG

#!/bin/sh

# @{a-z}
xdotool key ctrl+g
xdotool type {a-z}
sleep 1
xdotool key Tab

たとえば、私が望むのは、任意の文字を入力した場合は、+をクリックしてからを入力して1秒待ってからをクリックするようにa動作することです。CtrlGaTab

問題は、入力しようとするとa実際にCtrl+を送信しGてから1つを送信し、a別のシーケンス(別のCtrl+ G- > a- > Ctrl+ G- > a- > ...)を再帰的にトリガーすることです。

正しい方法がありますか?

答え1

recursionの使用を避けるための基本的な方法はないようですが、次の方法dxhdで実行できます。sxhkd次の構成を使用します。

@{a-z}
    pkill -USR2 -x sxhkd; xdotool key ctrl+g key {a-z} sleep 1 key Tab; pkill -USR2 -x sxhkd

最初と最後のコマンドは次の信号をsxhkd送信します。SIGUSR2すべてのバインディングのインポートステータスを切り替えます。。これにより、再帰を発生させることなく、2つの間にバインディングキーを使用できます。

(このxdotoolコマンドは、組み込みコマンドを使用して1行に圧縮されました。命令体系、行を短くするために、区切り記号付きの生コマンド;も機能します。残念ながら、sxhkd複数行のコマンドはサポートされていません。 )

関連情報