Tengo el siguiente script que envía spam a un botón en un programa cuando se presiona el botón 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
Sin embargo, esto sólo funciona cuando el terminal está enfocado. ¿Hay alguna forma de hacer que escuche todas las pulsaciones de teclas?
Respuesta1
Esto funciona para elraízusuario:
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
Salida (hastaCtrl-C):
1 ԥ
2 �W
3 ^
4
5
El código se lee desde cualquier/dev/entrada/evento*El archivo corresponde actualmente al teclado. Hace eco de cada pulsación de tecla en líneas separadas, luego numera cada línea; las pulsaciones de teclas se acumulan rápidamente, por lo que los números de línea ayudan a mostrar que la rutina está funcionando.
Intente abrir un editor de texto en una pequeña ventana de primer plano, ingrese algo de texto en el editor y observe los números que se desplazan en la terminal de fondo.
El grep
código anterior tomado prestado deJacobPLa respuesta de aquí:
Captura de eventos de teclado de Linux /dev/inputX