Como criar um atalho que executa um comando xdotool para simular uma tecla pressionada?

5

Estou tentando simular uma pressionamento de tecla de mídia usando um atalho personalizado.

Até agora, consegui alcançar a simulação que preciso usando o comando:

xdotool key XF86AudioPlay

Funciona perfeitamente, faz uma pausa ou inicia o music player toda vez que é executado.

O problema surge ao tentar executá-lo como um atalho.

Primeiro, tentei executar um alias com um atalho personalizado, mas não funcionou.

Como explicado em esta pergunta :

% bl0ck_qu0te%

Em seguida, criei o script sugerido e o nomeei como simplay:

#! /bin/sh

xdotool key XF86AudioPlay

Ele está localizado dentro de uma pasta bin que faz parte do PATH , isso funciona bem e pode ser executado de qualquer local.

Ao tentar criar o atalho personalizado, não consegui executá-lo, a configuração é a seguinte:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

Depois de pesquisar um pouco mais, encontrei outra maneira de executar o atalho:

gnome-terminal -e simplay

Eu tentei em um terminal e percebi que, ao executá-lo, ele abriria rapidamente uma nova janela de terminal, executaria o processo filho, pausando a música e fechando imediatamente a janela.

Mudei o comando no atalho e, ao tocá-lo, notei o mesmo comportamento abrindo um terminal e imediatamente sendo fechado, mas desta vez o processo filho não pausou a música, o que me faz pensar que o script foi chamado em todos minhas tentativas anteriores, mas de alguma forma não é capaz de executar.

Como posso resolver este problema de acordo com o seu conhecimento?

    
por Jorge Cuevas 16.01.2017 / 23:12

2 respostas

5

O problema

Seu atalho é executado ao mesmo tempo que sua tecla simulada é pressionada

Se você executar um comando, simulando uma tecla pressionada, chamada com ... outra tecla, você simulará uma tecla pressionada em terceiro , que é a combinação de ambos:)

Para resolver

Você precisa impedir que seu atalho seja executado ao mesmo tempo que o pressionamento de tecla simulada. Em outras palavras, adicione um atraso:

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

Adicione este comando a um atalho e ele deve funcionar.

Nota

É claro que você pode brincar um pouco com o valor em sleep 1 , para definir o melhor valor que se sente confortável, dependendo de quão "pegajosa" a combinação é pressionada. sleep 0.5 pode muito bem fazer isso, e fazer o atalho agir mais rapidamente.

    
por Jacob Vlijm 16.01.2017 / 23:18
1

Você também pode usar o comando diretamente na definição de atalho, portanto, não é necessário criar um script autônomo para ele.

Em vez de usar a solução alternativa "sleep 1", você pode usar o sinal --clearmodifiers , ou seja, seu atalho personalizado ficaria assim:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

Para mim, isso funciona ao mapear os atalhos para Super+F9 .

    
por Jan 18.01.2018 / 10:48