Teclas de atalho para alternar entre dispositivos de som

0

Como o título sugere, existe alguma maneira de mapear as teclas de atalho para mudar para onde o áudio está sendo roteado? Eu quero ser capaz de fazer ctrl + page up para mudar para uma placa de som USB, e ctrl + page down para mudar para o built-in na minha placa-mãe. Desta forma eu poderia trocar rapidamente entre usar meus fones de ouvido e meu alto-falante. Eu sei que posso definir o coletor de saída padrão com pulseaudio, mas para mim isso parece funcionar muito estranhamente. Parece que, independentemente do que eu faço, o som é roteado para o DAC USB, desde que esteja ativado. Eu tentei usar o pacmd move-sink-input, mas isso apenas diz "nenhum coletor encontrado com este índice", mesmo que eu tenha dado um número válido de acordo com o pacmd list-sinks.

    
por Ben 28.04.2016 / 01:30

1 resposta

0

Eu finalmente descobri! Você provavelmente precisará alterar a parte "grep -v" das linhas 3 e 4 dependendo de seus sumidouros (e usar egrep -v "sink1 | sink2 | sink3" para excluir múltiplos coletores). Para executar o script: bash (não sh) / caminho / para / script [-headphones, -speaker]. Eu configuro keybinds personalizados no menu de configurações que executam o script com os diferentes argumentos.

O código:

#!/bin/bash

headphonesIndex=$(pacmd list-sinks | grep -v "usb" | grep -B 1 "name:" | tr -d "[[:space:]]" | cut -c 7)
speakerIndex=$(pacmd list-sinks | grep -v "pci" | grep -B 1 "name:" | tr -d "[[:space:]]" | cut -c 7)

if [ "$1" = "-headphones" ]; then
    newOutput="headphones"
    newOutputIndex=$headphonesIndex
elif [ "$1" = "-speaker" ]; then
    newOutputIndex=$speakerIndex
else
    echo "Invalid argument. Valid arguments are \"-headphones\" and \"-speaker\"."
    exit
fi

playbackStreams=$(pacmd list-sink-inputs | grep "index" | cut -c 12-)
readarray -t playbackStreams <<<"$playbackStreams"

if [ "$playbackStreams" = "" ]; then
    pacmd set-default-sink $newOutputIndex
else
    for stream in "${playbackStreams[@]}"
    do
        pacmd move-sink-input $stream $newOutputIndex
    done
    pacmd set-default-sink $newOutputIndex
fi

Pastebin: link

Download: link

    
por Ben 15.05.2016 / 13:09