O que eu quero é o seguinte:
- Quando conecto meus fones de ouvido, quero que o som fique sem som e definido para um nível de volume específico.
- Quando desconecto os fones de ouvido, quero que o som fique mudo (ou definido para um nível de volume específico).
Definir os níveis de volume não é o problema, mas de alguma forma eu preciso fazer isso ao desconectar / conectar os fones de ouvido, então estou procurando uma maneira de ser notificado sobre esses eventos.
Eu rapidamente descobri /proc/asound/card0/codec#0
que os fones de ouvido estão conectados ou não, então tentei monitorá-lo usando inotifywait
e alterando o nível do volume com base nas notificações modificadas . Infelizmente inotifywait
falhei porque proc não é um sistema de arquivos comum.
Existem outras maneiras de fazer isso (talvez via PulseAudio)?
Dispositivo de áudio: Intel HDA , codec de áudio: Conexant CX20585 .
Para resumir o que tentei até agora:
- Ear Candy: não funcionou no meu sistema. Parece ser um projeto abandonado?
- O código postado por Karl Bielefeldt pode funcionar em algum hardware, não no meu.
- A ideia de StephenPaulger falha devido à falta de um canal 'Speaker'.
- Motivado por aking1012, eu fiz o trabalho invadindo o código do kernel (depois de encontrar o código do sensor de tomada do codec), mas essa é uma solução bastante complicada.
Então, ainda estou procurando uma maneira fácil de fazer isso.