GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo enviar pulsaciones de teclas (f5) desde la terminal a un programa Gui?

Estoy usando una Raspberry Pi en combinación con Chromium (modo quiosco) para mostrar algunas estadísticas. El Pi no tiene un teclado conectado, así que busqué una solución para enviar pulsaciones de teclas desde la terminal al proceso Chromium (pestaña). La entrada normal funciona, pero ¿cómo envío algo como F5? (una tecla especial:actualización del navegador) a través de esta solución?

# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0

Respuesta aceptada:

Los programas GUI no leen de su entrada estándar, obtienen su entrada del servidor X. Hay herramientas para inyectar una pulsación de tecla en una ventana. xdotool es bastante común y conveniente.

Deberá encontrar el ID de la ventana a la que desea enviar la pulsación de tecla. Puedes hacerlo con xdotool. xdotool search --class Chrome devuelve la lista de ID de ventana de todas las ventanas de Chrome. Si esto devuelve más de uno, debe elegir el que desee. Puedes usar xdotool search --name para hacer coincidir el título en lugar de la clase. También puede analizar la salida de wmctrl y extraer la ID de ventana deseada.

Una vez que haya encontrado la ID de ventana correcta, puede llamar a xdotool para inyectar una pulsación de tecla. Desafortunadamente, muchas aplicaciones rechazan los eventos sintéticos, es decir, las pulsaciones de teclas y los eventos del mouse enviados por otra aplicación. Este es el caso de las versiones actuales de Chrome. Es posible inyectar una pulsación de tecla desde otra aplicación mediante un mecanismo diferente, pero eso requiere que la ventana esté enfocada. Puede hacer todo eso con xdotool, pero hará que el foco se desplace rápidamente a la ventana de Chrome y viceversa. El siguiente fragmento envía F5 a la primera ventana de Chrome (en un orden algo arbitrario).

xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)

O con versiones anteriores de xdotool:

xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)

Recuerde que esto envía F5 a esa ventana y depende del programa decidir qué hacer con ella. En Chrome, esto vuelve a cargar la pestaña actual.


Linux
  1. Cómo buscar en la web desde la terminal en Linux

  2. ¿Ejecutar un programa Gui al inicio?

  3. Cómo usar SSMTP para enviar un correo electrónico desde la terminal de Linux

  4. ¿Cómo crear un archivo en Linux desde la ventana de terminal?

  5. ¿Cómo enviar una señal para que el programa se ejecute en un contenedor docker?

Cómo instalar un programa desde la fuente en Linux

Cómo buscar el desbordamiento de pila desde la terminal

Cómo verificar si la GUI está instalada en Linux desde la línea de comandos

Cómo abrir una ventana de terminal de Linux

Cómo usar Gmail desde la Terminal de Ubuntu para enviar correos electrónicos

cómo trazar stdin desde la terminal?