Как можно отключить при отключении наушников? [dубликат]

Есть ли способ заглушить звук с моего компьютера каждый раз, когда я отсоединяю наушники (например, телефон), чтобы остановить звук, а затем проиграть из моих динамиков?

9
задан 8 May 2012 в 17:40

8 ответов

Как обнаружить отключение

В принципе, для меня это было:

# When plugged in: cat /proc/asound/card0/codec#0 > pluggedin.txt # When not plugged in: cat /proc/asound/card0/codec#0 > notplugged.txt # Then compare the differences diff pluggedin.txt notplugged.txt

Для меня разница была в «Node 0x16» в разделе «Amp-Out vals»: [ ! d2] Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] | Amp-Out vals: [0x00 0x00]

Итак, я основывал обнаружение на найденной разности.

Howto mute

С помощью этих знаний вы можете иметь скрипт, работающий в фоновом режиме. Если отключено, скрипты приглушают ваши колонки, используя amixer sset Master playback 0% (или любую другую команду).

#!/bin/bash # This scripts detecs unplugging headphones. oldstatus="unrelated string" while [ 1 ]; do # The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0' status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' | grep 'Amp-Out vals: \[0x80 0x80\]') if [ "$status" != "$oldstatus" ]; then if [ -n "$status" ]; then echo "Plugged in" amixer sset Master playback 80% # Set volume to 80% oldstatus="$status" else echo "Unplugged" amixer sset Master playback 0% # Mute oldstatus="$status" fi fi done

Вы можете сделать его исполняемым с помощью chmod +x scriptname.sh и поместить в загрузочные приложения. Вам придется настроить обнаружение отключений, хотя, обнаружив свою собственную разницу в /proc/asound/card0/codec#0 (возможно, даже измените номера здесь для нескольких звуковых карт.

Ссылки по теме:

https: // wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

Как автоматически изменить уровень громкости, когда не подключайте наушники?

8
ответ дан 17 July 2018 в 21:17

Как обнаружить отключение

В принципе, для меня это было:

# When plugged in: cat /proc/asound/card0/codec#0 > pluggedin.txt # When not plugged in: cat /proc/asound/card0/codec#0 > notplugged.txt # Then compare the differences diff pluggedin.txt notplugged.txt

Для меня разница была в «Node 0x16» в разделе «Amp-Out vals»: [ ! d2] Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] | Amp-Out vals: [0x00 0x00]

Итак, я основывал обнаружение на найденной разности.

Howto mute

С помощью этих знаний вы можете иметь скрипт, работающий в фоновом режиме. Если отключено, скрипты приглушают ваши колонки, используя amixer sset Master playback 0% (или любую другую команду).

#!/bin/bash # This scripts detecs unplugging headphones. oldstatus="unrelated string" while [ 1 ]; do # The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0' status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' | grep 'Amp-Out vals: \[0x80 0x80\]') if [ "$status" != "$oldstatus" ]; then if [ -n "$status" ]; then echo "Plugged in" amixer sset Master playback 80% # Set volume to 80% oldstatus="$status" else echo "Unplugged" amixer sset Master playback 0% # Mute oldstatus="$status" fi fi done

Вы можете сделать его исполняемым с помощью chmod +x scriptname.sh и поместить в загрузочные приложения. Вам придется настроить обнаружение отключений, хотя, обнаружив свою собственную разницу в /proc/asound/card0/codec#0 (возможно, даже измените номера здесь для нескольких звуковых карт.

Ссылки по теме:

https: // wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

Как автоматически изменить уровень громкости, когда не подключайте наушники?

8
ответ дан 23 July 2018 в 21:56

Для ubuntu-16.10 я сделал несколько изменений в этом ответе.

oldresult="Some Random String" while [ 1 ]; do # incase of plugged out result will contain some data result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0) # checking for oldresult if not same then only go inside if [ "$oldresult" != "$result" ]; then oldresult=$result if [[ -z "$result" ]]; then notify-send "Plugged In" amixer sset Master playback 80% # Set volume to 80% else notify-send "Plugged Out" amixer sset Master playback 0% # Set volume to 0% fi fi done
0
ответ дан 17 July 2018 в 21:17

Если у вас есть проблемы с перехватом событий в /etc/acpi/handler.sh, см. мой ответ. Это также коды устройств как Node 0x16.

0
ответ дан 17 July 2018 в 21:17

Это работало для меня на Ubuntu 14.04:

", когда наушники отключены от него. Вставьте наушники и поднимите громкость. Удалите наушники и проверьте, чтобы они были отключены."

Кредит: RevDrStrangelove на https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/

0
ответ дан 17 July 2018 в 21:17

Для ubuntu-16.10 я сделал несколько изменений в этом ответе.

oldresult="Some Random String" while [ 1 ]; do # incase of plugged out result will contain some data result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0) # checking for oldresult if not same then only go inside if [ "$oldresult" != "$result" ]; then oldresult=$result if [[ -z "$result" ]]; then notify-send "Plugged In" amixer sset Master playback 80% # Set volume to 80% else notify-send "Plugged Out" amixer sset Master playback 0% # Set volume to 0% fi fi done
0
ответ дан 23 July 2018 в 21:56
  • 1
    И этот ответ, и ответ, который он получил, - плохие граждане. Они, похоже, работают, но они боятся системных ресурсов, которые не масштабируются - одновременно запускайте несколько таких программ, и это разрушает систему. Пожалуйста, никогда не делай этого. Вместо этого вы можете использовать одно из решений, включающих acpi_listen или подобное. – Don Hatch 2 June 2018 в 15:43

Если у вас есть проблемы с перехватом событий в /etc/acpi/handler.sh, см. мой ответ. Это также коды устройств как Node 0x16.

0
ответ дан 23 July 2018 в 21:56

Это работало для меня на Ubuntu 14.04:

", когда наушники отключены от него. Вставьте наушники и поднимите громкость. Удалите наушники и проверьте, чтобы они были отключены."

Кредит: RevDrStrangelove на https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/

0
ответ дан 23 July 2018 в 21:56

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

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