Skip to main content

controllare il volume simulando la pressione dei tasti

Posted in

   La domanda che potreste farvi è perchè complicarsi così la vita, in realtà io me la sono semplificata.
  Il problema in vecchie versioni di mythtv è che abilitando l'audio sourround non c'è la possibilità di controllare internamente il volume su tutti i canali. Esternamente lo si può fare usando uno script che nel mio caso non funzionava. A complicare le cose l'audio è gestito da Oss alsa e pulseaudio, e in giro per gnome ci sono diversi menù che sembrano identici ma non lo sono e che interferiscono con la gestione dell'audio.
   Altra complicazione il telecomando viene gestito dal demone lirc che non riesce ad usare direttamente i tasti multimediali del volume ma si deve passare attraverso irexec e uno script che va ad agire su un demone che controlla il volume.
   Nel mio caso il controllo del volume a tastiera, dopo un po' di smanettamenti funzionava correttamente mentre gli script per controllare il volume no.
   La soluzione è stata xdotool che simula la pressione dei tasti sulla tastiera e il movimento del mouse.
   Questo è lo script che a seconda del parametro passato al lancio dello script esegue una diversa funzione

#!/bin/bash
# opzioni: up alza il volume down a lo abbassa mute lo toglie
if [ $1 = down ]
then
    /usr/bin/xdotool key XF86AudioLowerVolume
fi
if [ $1 = up ]
/usr/bin/xdotool key XF86AudioRaiseVolume
fi
if [ $1 = mute ]
/usr/bin/xdotool key XF86AudioMute
fi 

    Il file è stato nominato volume.sh, salvato nella home dell'utente che lancia mythtv ed è stato reso eseguibile (chmod +x volume.sh)
   Lanciando il comando con le opzioni down, up o mute viene simulata la ssione dei tasti multimediali

./prova.sh down

   Per farlo funzionare con il comando per prima cosa va lanciato irw che è un demone di lirc che serve a leggere i comandi mandati dal telecomando, schiacciando in sequenza i tasti per abbassare, alzare e mettere in mute il volume si scopre che nome hanno come nell'esempio sottostante:

$ irw
000000037ff07bef 00 VolUp mceusb
000000037ff07bee 00 VolDown mceusb
000000037ff07bf1 00 Mute mceusb

   Notate che viene definito il nome del tasto (es VolUp) e il tipo di ricevitore che viene usato (es mceusb)
una volta capito quali siano i tasti diamo un occhiata ai file di configurazione di lirc.
    I file in mythbuntu si trovano nella cartella .lirc nella home dell'utente da cui si lancia mythtv e mythtv ha una copia del file ~/.lirc/mythtv nellla cartella ~/mythtv/lircrc, per eliminare qualsiasi tipo di dubbio ho creato un link simbolico dal file nella cartella .lirc nella cartella .mythtv.
    Avendo come telecomando mceusb ho eliminato tutti le righe relative agli altri telecomandi, ma prima di fare tutto questo e qualsiasi altra modifica o prova ho creato dei file di backup con cui ripristinare il sistema. Lo script va controllato da terminale e deve funzionare, createvi delle certezze man mano che procedete.
    Ho sostituito qualsiasi riferimento al telecomando nel file lircrc sostituendo le righe corrispondenti con queste

begin
    remote = mceusb
    prog = irexec
    button = VolUp
    config = /home/luca/volume.sh up &
    repeat = 1
end

begin
    remote = mceusb
    prog = irexec
    button = VolDown
    config = /home/luca/volume.sh down &
    repeat = 1
end

begin
    remote = mceusb
    prog = irexec
    button = Mute
    config = /home/luca/volume.sh mute &
    repeat = 0
end

nota bene che dovete mettere il path corretto per consentire a lirc di trovare lo script, se il vostro utente si chiama pippo e lo script si trova nella home di pippo il comando diventa:

    config = /home/pipo/volume.sh mute &

Mythtv per poter usare il comando va spento e riacceso, nel mio caso solo riavviare il demone rendeva il telecomando inutilizzabile. Va disabilitato il controllo del volume interno di mythtv andando nell'apposita finestra di configurazione nelle impostazioni generali del programma

buona fortuna!