Ich habe das folgende Skript, das eine Schaltfläche in einem Programm spammt, wenn die V-Taste gedrückt wird
#!/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
Dies funktioniert jedoch nur, wenn das Terminal fokussiert ist. Gibt es eine Möglichkeit, es auf alle Tastendrücke reagieren zu lassen?
Antwort1
Dies funktioniert für dieWurzelBenutzer:
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
Ausgabe (bisStrg-C):
1 ԥ
2 �W
3 ^
4
5
Der Code liest von dem/dev/Eingabe/Ereignis*Datei entspricht derzeit der Tastatur. Gibt jeden Tastendruck in einer separaten Zeile wieder und nummeriert dann jede Zeile – Tastendrücke häufen sich schnell, sodass die Zeilennummern dabei helfen, zu zeigen, dass die Routine funktioniert.
Öffnen Sie in einem kleinen Vordergrundfenster einen Texteditor, geben Sie einen Text in den Editor ein und beobachten Sie, wie auf dem Hintergrundterminal die Zahlen vorbeilaufen.
Der grep
obige Code stammt vonJacobPDie Antwort hier:
Erfassung von Linux-Tastaturereignissen /dev/inputX