Simular chaves de mídia no terminal

25

Eu tenho um novo telefone Android que possui vários aplicativos para comunicação através de uma conexão ssh. Gostaria de saber se posso usar os comandos ssh para simular a tecla pressionada, especificamente as teclas de mídia (volume de pausa na reprodução). Eu preferiria não instalar software adicional.

Nota: Eu sei que existem aplicativos que fazem isso imediatamente, isso é simplesmente para uma melhor compreensão.

Aaron Schif
fonte

Respostas:

44

A resposta é xdotool, e ela já pode estar instalada no seu sistema Ubuntu. Pode simular pressionamentos de tecla. Veja também [1].

Alguns comandos:

  • a pausa

    xdotool key XF86AudioPlay
    
  • Anterior Próximo

    xdotool key XF86AudioPrev 
    xdotool key XF86AudioNext
    
  • aumentar / diminuir volume

    xdotool key XF86AudioLowerVolume 
    xdotool key XF86AudioRaiseVolume
    
  • mudo

    xdotool key XF86AudioMute
    

Para mais comandos XF86, consulte [2].

Em vez de fazer o volume passo a passo, você também pode configurá-lo usando o alsamixer ou o pulseaudio (recomendado). Supondo que você use o dispositivo 0 (você pode verificar isso com alsamixerou pacmd list-sinks), você pode definir o volume para, por exemplo, 80% com

  • alsamixer (-c 0 especifica a identificação do dispositivo de som)

    amixer -c 0 sset Master,0 80%
    
  • pulseaudio (o 0 na frente dos 80% é o ID do dispositivo de som)

    pactl set-sink-volume 0 80%
    

Para mais informações sobre esses comandos, consulte suas páginas de manual.


Edição: Se você está tentando executar os comandos xdotool sobre ssh e receber a seguinte mensagem de erro

Error: Can't open display: (null)
Segmentation fault

você precisa definir a variável DISPLAY:

export DISPLAY=':0.0'

Depois disso, deve funcionar sem problemas


[1] http://www.semicomplete.com/projects/xdotool/xdotool.xhtml
[2] http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols

Gerhard Burger
fonte
O que é necessário para que isso funcione sobre SSH? O uso desses comandos em um shell remoto resulta em simulação na máquina local versus a máquina remota.
usar o seguinte código
3
@earthmeLon Tem certeza de que está executando o comando na máquina remota? Porque para mim funciona bem sobre ssh. Eu precisava definir a variável DISPLAY, veja minha edição.
Gerhard Burger
Definir a exibição como você sugeriu como resolveu o problema. Graças: D
earthmeLon
2
Observe que quando você as vincula a algumas chaves no xfce4, você precisará usar a --clearmodifiersflag, algo como isto:xdotool key --clearmodifiers XF86AudioPlay
cab404
O que o @ cab4040 mencionado também se aplica ao GNOME. Se você deseja adicionar teclas de mídia personalizadas em um teclado que não possui, pode ir para a Keyboard Shortcutsseção em configurações e adicionar uma ligação entre um atalho de teclado e um xdotool keycomando --clearmodifiers, veja acima.
Pierre Thalamy 28/03