lunedì 1 giugno 2009

Freevo & il topo

Non avendo ancora acquistato un telecomando per controllare freevo, mi sono inventato un modo per poter usare in alternativa il mouse.

Ho appositamente creato una pagina nel wiki di freevo, nella quale descrivo come si configura.

Quello che non ho indicato, ma che potrebbe essere utile farlo in un altra pagina del wiki, è come lanciare freevo dopo che la fase di avvio del mediabox è terminata.

Ho deciso infatti di non eseguire automaticamente freevo, visto che potrei avere bisogno del media box solo come server (mldonkey o file) e non per vedere un film. Inoltre, l'esecuzione di freevo incrementa l'uso della CPU dal 3 al 30% (in modalità idle!), per cui in ottica di risparmio energetico e di durata di componenti hardware ho deciso di lanciarlo solo in caso di necessità.

Login automatico

La prima cosa da fare è quella di impostare il login automatico: si compila il semplice file dal nome autologin.c contentente:
int main() { execlp( "login", "login", "-f", "nomeutente", 0); }
dove al posto di nomeutente si mette l'utenza con cui si vuole effettuare l'accesso automatico.

Poi si modifica il file /etc/event.d/tty1 (/etc/init/tty1.conf) in modo che risulti simile a questo:


start on stopped rc2
start on stopped rc3
start on stopped rc4
start on stopped rc5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/getty -n -l /usr/local/sbin/autologin 38400 tty1
dove /usr/local/sbin/autologin è il programma compilato poco sopra.


Segnalazione di boot terminato

Nel file .bashrc, eseguito automaticamente nel passo precedente, si mette alla fine la seguente sequenza di comandi:
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
beep
./mousem
fi
Con beep si intende un comando che esegue un suonetto, disponibile nella fattispecie eseguendo "sudo apt-get install beep" da terminale. Se non si sente il suonetto, probabilmente è disabilitato nel file /etc/modprobe.d/blacklist, riabilitarlo commentando la riga "blacklist pcspkr".


Lancio di freevo a schermo spento

Il comando mousem del passo precedente è un altro applicativo scritto in c da compilare
#include <stdio.h>
#include <gpm.h>
#include <unistd.h>

int my_handler(Gpm_Event *event, void *data) {
switch(event->buttons) {
case 1:
printf("tasto dx\n");
break;
case 2:
printf("tasto cx\n");
break;
case 4:
printf("\a\n");
execl("/home/zac/vai.sh", "vai.sh", (char *)0);
break;
}
return 0;
}

int main() {
Gpm_Connect conn;
int c;
conn.eventMask = ~0; /* Want to know about all the events */
conn.defaultMask = 0; /* don't handle anything by default */
conn.minMod = 0; /* want everything */
conn.maxMod = ~0; /* all modifiers included */

if(Gpm_Open(&conn, 0) == -1)
printf("Cannot connect to mouse server\n");

printf("mouse menù\n");

gpm_handler = my_handler;
while((c = Gpm_Getc(stdin)) != EOF)
printf("%c", c);
Gpm_Close();
return 0;
}
Questo programma associa al tasto sinistro del mouse l'esecuzione di un programma a nostra scelta, nella fattispecie lo script vai.sh che contiene:
#!/bin/sh
xinit
./mousem
che esegue il server x, e quando si esce da freevo rilancia automaticamente il programma che ascolta il mouse.


Nessun commento:

Posta un commento