端末に焦点を当てていない場合は、「読み取り」を実行してください。

端末に焦点を当てていない場合は、「読み取り」を実行してください。

Vボタンを押すとプログラムのボタンをスパムに送信するスクリプトがあります。

#!/bin/bash
winid=$(xdotool search "application name here" | head -n1)
while true; do
read -rsn1 input
if [ "$input" = "v" ]; then
    xdotool keydown --window $winid "button"
    xdotool keyup --window $winid "button"
fi
done

ただし、これは端末に焦点が合っている場合にのみ機能します。すべてのキーを押すようにする方法はありますか?

答え1

これは以下に適用されます。ユーザー:

cat /dev/input/$(grep -E  'Handlers|EV=' /proc/bus/input/devices | \
                 grep -B1 'EV=120013' |  grep -Eo 'event[0-9]+') | \
while read -rsn1 foo ; do echo "$foo" ; done | nl

出力(までCtrl-C):

     1  ԥ
     2  �W
     3  ^
     4  
     5  

コードはどこでも読み取られます。/dev/入力/イベント*ファイルは現在のキーボードに対応しています。別の行に各キーを押すことをエコーし​​、各行に番号を付けます。キーストロークがすばやく追加されるため、行番号はルーチンが実行されているかどうかを示すのに役立ちます。

小さなフロントウィンドウでテキストエディタを開き、エディタにテキストを入力し、バックグラウンドで端末を横切って数字がスクロールするのを見てください。


上記のコードはgrep以下から借りたものです。ジェイコブP答えはここにあります: Linux キーボードイベントのキャプチャ /dev/inputX

関連情報