Как переключить вывод звука с помощью сочетания клавиш

Мне нравится переключать звук с динамика на наушники USB с помощью ярлыка. Есть ли способ сделать это?

7
задан 17 March 2014 в 03:48

4 ответа

  1. Проверьте на имена порта pactl list sinks (Я удаляю не необходимый вывод приемников):

    Sink #1
        State: RUNNING
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo
        Description: Built-in Audio Analog Stereo
        Driver: module-alsa-card.c
    ...
        Ports:
            analog-output-speaker: Speakers (priority: 10000, not available)
            analog-output-headphones: Headphones (priority: 9000, available)
        Active Port: analog-output-headphones
        Formats:
            pcm
    
  2. Установите использование порта приемника pactl set-sink-port:

     pactl set-sink-port 1 analog-output-speaker
    

    или

     pactl set-sink-port 1 analog-output-headphones
    

    Если Вы используете съемное устройство (Пример: USB-устройства), лучше использовать приемник name вместо id. Например:

     pactl set-sink-port alsa_output.pci-0000_00_1b.0.analog-stereo analog-output-headphones
    

Ссылка: man pactl

6
ответ дан 17 March 2014 в 03:48

Сделайте это в 2 шага:

  1. Найдите параметр командной строки, чтобы переключаться между этими настройками.

  2. Добавьте их к некоторым комбинациям клавиш. Настройки системы >> Клавиатура >> Сочетания клавиш

0
ответ дан 17 March 2014 в 03:48

Автоматизированное решение https://ubuntuforums.org/showthread.php?t=1370383 Он работает в Ubuntu 18.04

  1. Откройте терминал и введите:

     sudoedit /usr/local/bin/audio-device-switch.ш
    
  2. Скопируйте и вставьте приведенный ниже код в редактор nano.

  3. Сохраните его и закройте редактор nano.

  4. sudo chmod 755 /usr/local/bin/audio-device-switch.sh

  5. Система -> Настройки -> Сочетания клавиш

  6. Нажмите Добавьте и введите Переключение между аудиоустройствами в качестве имени и audio-device-switch.sh в качестве команды и нажмите Применить .

  7. Выберите только что добавленную строку быстрого доступа и нажмите на столбец ярлык. 8. Выберите комбинацию клавиш - например, Выигрыш + F12.

  8. Вот и все - теперь вы можете подключить устройство HDMI и переключать аудиовыход, нажимая выбранную комбинацию клавиш.

Код:

#!/bin/bash

declare -i sinks_count=`pacmd list-sinks | grep -c index:[[:space:]][[:digit:]]`
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p'`
declare -i major_sink_index=$sinks_count-1
declare -i next_sink_index=0

if [ $active_sink_index -ne $major_sink_index ] ; then
    next_sink_index=active_sink_index+1
fi

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p');
do
    pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"/\1/p' | while read line;
do
    if [ $next_sink_index -eq $ndx ] ; then
        notify-send -i notification-audio-volume-high "Sound output switched to" "$line"
        exit
    fi
done
5
ответ дан 16 January 2020 в 07:39

У меня Ubuntu 20, и я понял, что индексы устройств не считаются от 0 до COUNT-1. Поэтому мне пришлось изменить сценарий. Сейчас работает этот:

#!/bin/bash

declare -i sinks_count=`pacmd list-sinks | grep -c index:[[:space:]][[:digit:]]`

if [ $sinks_count -eq 0 ] ; then
    exit
fi

declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/\*[[:space:]]index:    [[:space:]]\([[:digit:]]\)/\1/p'`

active_index_position_found=0
let next_sink_index=-1
while read index ;
do
    declare -i ind=($(echo $index | tr -dc '[0-9]+'))
    if [ $next_sink_index -lt 0 ] ; then
        export next_sink_index=$ind
    fi
    if [ $active_index_position_found -eq 1 ] ; then
        export next_sink_index=$ind
        break;
    fi
    if [ $active_sink_index -eq $ind ] ; then
        export active_index_position_found=1
    fi
done < <(pacmd list-sinks | grep index:[[:space:]][[:digit:]])

#change the default sink
pacmd "set-default-sink ${next_sink_index}"

#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]    \)/\1/p');
do
    pacmd "move-sink-input $app $next_sink_index"
done

#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"\(.*\)"    /\1/p' | while read line;
do
    if [ $next_sink_index -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high "Sound output switched to"     "$line"
        exit
    fi
    ndx+=1
done;
1
ответ дан 2 January 2021 в 14:22

Другие вопросы по тегам:

Похожие вопросы: