Il file .lircrc Parte 1
Nel precedente articolo abbiamo visto come far funzionare il demone lirc. Ora vediamo come dirgli cosa fare.
Dobbiamo creare un file nella nostra home, quindi apriamo il nostro bel terminale,
:~$ cd ~ :~$ touch .lircrc :~$ gedit .lircrc
Prima di iniziare a scrivere dobbiamo capire come funziona la sintassi che dobbiamo usare, dovremo immettere qualcosa del genere
begin
prog = ...
remote = ...
button = ...
repeat = ...
delay = ...
config = ...
mode = ...
flags = ...
end
dove:
- prog è il nome del programma che deve ricevere la stringa config.
- remote è il nome che avete dato al telecomando (questo serve solo nel caso in cui si siano configurati più di un telecomando, altrimenti può essere omesso).
- button è il pulsante premuto. E’ possibile inserire più di una riga button per specificare una sequenza di pulsanti premuti.
- repeat specifica cosa fare nel caso in cui la pressione di un pulsante sia ripetuta. Il valore zero specifica di ignorare le ripetizioni ed è il valore di default. Un valore maggiore di zero indica dopo quante ripetizioni ripassare la stringa config a prog.
- delay dice di ignorare il numero di ripetizioni specificato prima di iniziare a contare le ripetizioni specificate da repeat. Questo serve per prevenire eventuali ed involontarie ricezioni “doppie” quando il valore di repeat è molto basso. Il valore di default è zero.
- config è la stringa che verrà passata all’applicazione indicata da prog ogni volta che verrà ricevuta la sequenza specificata da remote, button. Se viene inserita più di una riga config, queste verranno passate in rotazione. E’ possibile passare caratteri non stampabili attravaverso una sequenza standard di escape (esempio: n=line-feed). E’ inoltre possibile specificare X dove X è un carattere maiuscolo o la @. Ad esempio C è Control+c.
- mode dice al programma di entrare in una modalità speciale. Grazie a questa opzione è possibile creare diverse configurazioni, come vedremo in altri articoli.
- flags, ne parleremo in altri articoli
E’ possibile suddividere il file di configurazione su più file tramite la direttiva include, la quale indica di leggere il file specificato prima di proseguire.
Ad esempio
include ~/.lirc/xawtv
Ora che ci siamo sorbiti la teoria, possiamo passare a fare un pò di pratica, quindi torniamo al nostro file .lircrc che avevamo aperto con gedit ed inseriamo il seguente codice:
begin
button = Play
prog = irexec
config = echo "Ciao belli!"
end
Ovviamente d’ora in avanti dovete considerare una cosa: tutto quello che scriverò farà riferimento ai pulsanti così come sono definiti nel mio file di configurazione, che potrebbe essere (anzi, sicuramente è ) diverso dal vostro, quindi dovrete sostituire nei miei esempi, alla voce button il nome del pulsante che va bene per voi, quindi aprite un terminale e digitate
:~$ sudo gedit /etc/lircd.conf
Qui troverete i vostri pulsanti con i rispettivi nomi.
Continuando il nostro discorso, salviamo il file ed in un terminale digitiamo:
:~$ irexec
questo è un semplice program launcher, che deve essere in esecuzione nel momento in cui viene richiamato da lircd, fornito insieme con lirc. In questo caso succede che alla pressione del tasto Play irexec viene richiamato ed il suo compito sarà eseguire ciò che è presente in config, che in questo caso è una semplice echo. Provate a premere Play (o il tasto che avete utilizzato).
Facciamo un’altra prova. Modifichiamo .lircrc come segue:
begin
button = Play
prog = irxevent
repeat = 0
config = Key ctrl-c CurrentWindow
end
killiamo irexec nel terminale (control+c) ed esguiamo irxevent.
:~$ irxevent
Poi premiamo Play. Cosa è successo?
irxevent è un altro tool fornito con lirc, che ci permette di interpretare la pressione di un pulsante del telecomando come se fosse stata premuta una sequenza di tasti della tastiera. Nell’esempio gli abbiamo detto di eseguire ctrl+c nella finestra corrente, quindi si è auto-killato !!
Ora che abbiamo scoperto i due principali tool di lirc e cioè irexec ed irxevent possiamo passare a qualche prova un pò più complessa. Modifichiamo .lircrc come segue:
begin button = Play prog = irexec repeat = 5 delay = 1 config = echo "Ciao Belli!" end
poi eseguiamo
:~$ irexec
e premiamo Play, tenendolo premuto. Si vede che il comando viene ripetuto dopo un’attesa iniziale lunga delay, ogni repeat ricezioni (la velocità delle quali dipende dalla velocità del telecomando). Facciamo un pò di prove modificando questi due parametri.
Ogni volta che modificate .lircrc dovete però killare e rieseguire irexec in quanto questo legge il file una sola volta, cioè quando viene avviato, per cui è necessario riavviarlo perchè prenda atto delle modifiche (questo vale anche per irxevent).
Ora che abbiamo capito il meccanismo si tratta solo di avere la buona volontà di costruirsi un file .lircrc che preveda la pressione di tutti i tasti del telecomando, magari in diverse modalità. Vi rimando alla documentazione originale per una più accurata comprensione di irexec ed irxevent.
sto cercando senza successo di far funzionare questa:
begin
prog = irxevent
button = ChanUp
repeat = 0
config = Key Alt-Tab CurrentWindow
end
…me lo prende come un tab e non come alt-tab… boh
@motumboe
Se la tua intenzione è quella di cambiare finestra, l’errore è che devi rivolgere il comando a RootWindow (il desktop) e non a CurrentWindow (la finestra attuale)! Ciao.
Ciao, sono riuscito a riprodurre l’esempio di echo con irexec, ma funziona solo all’avvio del pc.
Sto usando ubuntu 9.10 con un telecomando imon e il case Antec Fusion, e prima di metter mano alla configurazione avevo il pad configurato per i movimenti del mouse e i tasti CH+ e CH- come SU e GIU.
Ho seguito la guida scrivendo in .lircrc l’esempio, ma se eseguo /etc/init.d/lirc restart, irexec non mi da alcun feedback alla pressione del tasto, mentre continuo a poter mouvere il mouse con il pad.
Se riavvio il pc invece, il movimento del mouse con il pad smette di funzionare, e eseguendo irexec e premendo il tasto play ottengo il messaggio scritto nell’esempio, quindi sembrerebbe funzionare.
Ma eseguendo nuovamente /etc/init.d/lirc restart la situazione torna ad essere quella inziale, pad funzionante e comandi in .lircrc ingorati, come se venisse utilizzato un altro file… Sai darmi qualche dritta?
potrebbe dipendere dal fatto che riavviando lirc con /etc/init.d/lirc restart automaticamente killi irexec. Prova, dopo aver dato quel comando a dare irexec -d e vedi se a quel punto hai delle reazioni. Enjoy!
Ciao! Volevo dirti che i due articoli su lirc sono stati eccezionali!
Dopo aver spulciato la rete, solo con questi ho capito bene come funziona!
Bravissimo vai così…..
Una domanda: e se volessi fare in modo che all’avvio di ubuntu io possa già richiamare da telecomando xbmc senza dover avviare manualmente irexec?
)))
Vorrei fare un po come su Win che posso richiamare MC senza dover avviare prima altro (altrimenti a che serve il telecomando???
@ciccio_prompt
Ciao! Grazie e scusa il ritardo … L’ho fatto un po’ di tempo fa sul pc dei miei proprio per xbmc. Ricordo che mettere irexec in esecuzione automatica non funzionava bene come soluzione. Se non sbaglio ho creato uno script per lanciarlo direttamente nella cartella /etc/init.d.
Comunque appena posso verifico e ti faccio sapere, perchè è un po’ che non ci smanetto su …
@ciccio_prompt
Ok ho verificato. Il problema di cui accennavo probabilmente c’era in versioni vecchie, se hai una versione recente è sufficente mettere il comando “irexec -d” in esecuzione automatica. (su ubuntu per esempio devi andare in Sistema->Preferenze->Applicazioni d’avvio)
Ciao!