¿Cómo crear un acceso directo que ejecute un comando xdotool para simular una pulsación de tecla?

Estoy tratando de simular una pulsación de tecla de medios usando un atajo personalizado.

Hasta ahora, he podido lograr la simulación que necesito usando el comando:

xdotool key XF86AudioPlay 

Funciona perfectamente, detiene o inicia el reproductor de música cada vez que se ejecuta.

El problema viene al intentar ejecutarlo como acceso directo.

Primero intenté ejecutar un alias con un acceso directo personalizado, pero no funcionó.

Como se explica en esta pregunta :

Los comandos ejecutados por enlaces de teclado no se analizan a través de un shell. Su mejor apuesta es crear una carpeta de directorio en su homedir.

Luego creé el guión sugerido y lo llamé simplay:

 #! /bin/sh xdotool key XF86AudioPlay 

Se encuentra dentro de una carpeta bin que forma parte de la PATH , esto funciona bien y puede ejecutarse desde cualquier ubicación.

Al intentar crear el acceso directo personalizado, no pude ejecutarlo, la configuración es la siguiente:

 Name: test Command: simplay Shortcut: Ctrl+Alt+R 

Después de buscar un poco más, encontré otra forma de ejecutar el acceso directo:

 gnome-terminal -e simplay 

Lo probé en un terminal y noté que al ejecutarlo abriría rápidamente una nueva ventana de terminal, ejecutaría el proceso secundario, pausaría la música e inmediatamente cerraría la ventana.

Cambié el comando en el acceso directo y cuando lo golpeé noté el mismo comportamiento al abrir un terminal y al cerrarme de inmediato, pero esta vez el proceso secundario no pausó la música, lo que me hace pensar que el script se ha ejecutado en todos mis bashs anteriores pero de alguna manera no se puede ejecutar.

¿Cómo puedo resolver este problema según tu conocimiento?

La cuestión

Su acceso directo se realiza al mismo tiempo que su pulsación de tecla simulada

Si ejecuta un comando, simulando una pulsación de tecla, pulsando con … otra pulsación de tecla, simulará una tercera pulsación de tecla, que es la combinación de ambas 🙂

Resolver

Debe evitar que su acceso directo se ejecute al mismo tiempo que la pulsación de tecla simulada, en otras palabras, agregue un retraso:

 /bin/bash -c "sleep 1 && xdotool key XF86AudioPlay" 

Agrega este comando a un acceso directo, y debería funcionar.

Nota

Por supuesto, puede jugar un poco con el valor en sleep 1 , para configurarlo al mejor valor que le resulte cómodo, dependiendo de qué tan “pegajosa” se presione la combinación. sleep 0.5 podría muy bien, y hacer que el atajo actúe más rápidamente.

También puede usar el comando directamente en la definición de acceso directo, por lo que no necesita crear una secuencia de comandos independiente para ello.

En lugar de usar la solución “dormir 1”, puede usar el indicador --clearmodifiers , es decir, su acceso directo personalizado se vería así:

 Name: test Command: xdotool key --clearmodifiers XF86AudioPlay Shortcut: Ctrl+Alt+R 

Para mí esto funciona cuando mapeo los accesos directos a Super+F9 .

    Intereting Posts