xdotool はタブの代わりに 8 を出力します

xdotool はタブの代わりに 8 を出力します

私は現在、「オートタイプ」スクリプトに取り組んでいます。合格そのためには、ユーザー名を入力し、「Tab」キーを押してからパスワードを入力する必要があります。

テストには次のコードを使用しています:

WID=$(xdotool selectwindow)
xdotool windowactivate $WID type --delay 100 "Hello World"
xdotool windowactivate $WID key --clearmodifiers Tab
xdotool windowactivate $WID type --delay 100 "Hello World" 

次に、ウィンドウとして を選択しましたkateが、出力はHello World8Hello Worldではなく ですHello World Hello World。何が間違っているのでしょうか?

編集:xte 'key Tab'回避策として、パッケージから 使用できますxautomation。しかし、元の質問はまだ残っています。

答え1

xdotoolを探しています「Xキーシム」文字列ですが、これをどのように決定するかに関するドキュメントは簡潔です。

一般的に、有効な X Keysym 文字列であればどれでも機能します。複数のキーは '+' で区切られます。"alt"、"ctrl"、"shift"、"super"、"meta" にはエイリアスがあり、これらはすべて Foo_L にマップされます。Alt_Lそして Control_Lなど

私は次のようなキーコードを使用しました0xff09タブ)xtermでページを開発するときに特殊キーこのアプローチにより、キーボード設定で定義されたすべてのキーを送信することができました。

私のコマンドラインは異なっていました。テスト スクリプトの関連部分だけがこれを示しています:

KEY=0xff09      # XK_tab

sendkey() {                                                                     
        echo "** $1"                                                            
        xdotool key --window $ID $1 2>/dev/null                                 
}

sendkey "$KEY"

問題となるコマンドは

xdotool windowactivate $ID key --clearmodifiers $1 2>/dev/null

xdotoolのマニュアルでは、オプションを追加する必要があるかもしれないと--sync示唆しており、コマンド チェーンが機能する (つまり、windowactivateと がkey連鎖する) ことを示唆していますが、その組み合わせも私の環境では機能しません。ただし、--windowのオプションはkey機能します。

xdotool key --window $ID --clearmodifiers $1 2>/dev/null

答え2

これは少し古いですが、誰かの役に立つかもしれません。たとえば、KP_Tab または KP_Enter も使用できます。

関連情報