3

xdotoolコマンドの実行、新しいタブのオープンなどを自動化するために使用しています。

問題は、現在のウィンドウでそれを行うときです。具体的には、しばらくスリープするか、xdotool keyup Return何もする前に使用する必要があります。そうxdotoolしないと、Enter キーを押しません。

kartik@kartikpc:~/junk/xdotool$ cat automate 
#!/bin/bash

# Release the Return key
# xdotool keyup Return
# Or sleep 1

xdotool type --delay 1 --clearmodifiers "clear"
xdotool key --clearmodifiers Return

kartik@kartikpc:~/junk/xdotool$ source automate 
clearkartik@kartik-lappy:~/junk/xdotool$ clear

私が非常に少数の情報源から読んだことは、

%睡眠1; xdotool type "$(printf "hello\nworld\n")" (スリープは、入力する前に実際の「return」キーを離すためのものです)

キーボードで「Enter」を押してスクリプトを具体的に呼び出すと、「return」キーが押されることを理解しています。しかし、なぜ自動的に解放されないのでしょうか?

xdotoolを使用して何かを入力している場合でも、xdotool typeその時まで「return」キーを放してはいけません。または、すべての文字が同じ行に来るのではなく、行ごとに移動する必要があります。

4

1 に答える 1

5

この問題は、特別な OS の概念よりも、キーボード自体の状態に関係しています。キーが「上」から「下」の状態に移行するときにのみ「押された」と言われる場合。

アプリケーションがキープレスを送信しようとすると、キーダウンに続いてキーアップが送信されます。キーがすでに「ダウン」状態にある場合、キーの状態が「アップ」から「ダウン」に遷移せず、単に「ダウン」状態のままであるため、キーダウンを送信してもキーの押下として登録されません。(すでに「ダウン」状態にあるときにキーダウンを送信することは、キーを押したままにしておくことと同じであり、もう一度押すことはありません。)

于 2015-12-04T16:22:54.917 に答える