vendredi 29 août 2008

Commit : Support des touches multimédia

Si vous utilisez comme moi un ordinateur portable similaire au DELL XPS m1530, vous avez problement aussi des touches multimédia autour de votre clavier. Moi en plus, avec mon Dell j’ai eu droit à une mini-télécommande qui me permet d’utiliser ces touches là à distance.

C’est là que je me suis dit que ça pourrait être le pied de pouvoir changer de chaîne sans avoir à bouger du lit.

Du coup, j’ai cherché comment intégrer ça à FreetuxTV. Et là je doit avouer que j’ai pensé que ça serait plus simple que ça. J’ai fouiner dans les sources de tous les programmes GTK qui supportait ça (Totem, Exaile, Listen, l’utilitaire raccourci clavier de Gnome, Gmpc…). Après moult compilation, j’ai peu à peu desespéré d’y arriver. Je trouvais des pistes mais le mécanisme étant assez compliqué, je ne comprenais rien au fonctionnement qu’utilisait ces softs. La plupart des programmes supportant cette fonction, sont écrit en Python et ne connaissant pas le langage c’était vraiment tendu.

C’est alors qu’avec obstination je suis tombé sur le plugin Rythmbox écrit en C. Et la avec beaucoup de bidouille et de chance (commenter des lignes quasi au hasard), j’ai reussi à faire un petit programme qui détectait quand j’appui sur mes touches multimédia. Vous imaginez pas la joie que j’ai ressenti sur le moment (ça m’as pris une semaine pour avoir ça).

Enfin voilà pour la petite histoire, j’ai pu épuré le code que j’avais trouvé (je ne comprend ce qui fait, mais ça marche), et j’en ai fait une petite librairie qui me permettra de facilement réutiliser ça à l’avenir. Un petit exemple pour ceux que ça interesse.

#include
#include “lib-gmmkeys.h”

static void
on_mm_key_pressed (GMMKeys *mmkeys,
GMMKeysButton button, gpointer user_data)
{
switch(button){
case GMMKEYS_BUTTON_PLAY :
break;
case GMMKEYS_BUTTON_PAUSE :
break;
case GMMKEYS_BUTTON_STOP :
break;
case GMMKEYS_BUTTON_PREV :
break;
case GMMKEYS_BUTTON_NEXT :
break;
}
}

int main (int argc, char *argv[])
{
gtk_init(&argc, &argv);

GtkWidget* window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);

g_signal_connect (window, “destroy”, gtk_main_quit, NULL);

GMMKeys* mmkeys;
mmkeys = g_mmkeys_new (”MonApplication”);
g_mmkeys_activate (mmkeys);

g_signal_connect(G_OBJECT(mmkeys),
“mm_key_pressed”,
G_CALLBACK(on_mm_key_pressed),
NULL);

gtk_main();

g_mmkeys_deactivate (mmkeys);

return 0;
}

Pour compiler voici un Makefile (y’a besoin de dbus) :

CFLAGS = `pkg-config –cflags gtk+-2.0 x11 dbus-glib-1`
LIBS = `pkg-config –libs gtk+-2.0 x11 dbus-glib-1`
all: main.c lib-gmmkeys.o
gcc ${LIBS} ${CFLAGS} -o main main.c lib-gmmkeys.o
lib-gmmkeys.o : lib-gmmkeys.c lib-gmmkeys.h
gcc -c ${CFLAGS} lib-gmmkeys.c lib-gmmkeys.h

J’en parle parce que vu le peu d’infos que j’ai trouvé pour faire ça. Ca servira sûrement à quelqu’un un jour.

Par contre, je pense que ça ne marche que sur Gnome. J’ai pas testé, mais si y’en a qui utilise FreetuxTV sur KDE ou autres, ça serait sympa de m’informer de ce qu’il en est.

Voilà, comme toujours ceux qui veulent testé prenez les sources, et rapportez moi les bugs.

En espérant que cette fonction vous plaisent même si tout le monde ne peut pas en profiter.

mardi 26 août 2008

Déplacement du blog

J’ai décidé de mettre enfin le blog sur le serveur freetuxtv.org, ce qui me semblait logique…

Donc pensez à mettre à jour vos flux RSS et vos favoris.

Désolé pour le dérangement.

mardi 12 août 2008

Internationalisation

Bon, j’ai pas mal planché ces dernières semaines pour mettre en place l’internationalisation du programme avec les autotools. Ça m’a prit un temps considérable pour comprendre comment ça marche mais j’ai finalement réussi. C’est vrai que pour l’instant c’est pas le truc indispensable parce que il n’y a probablement que des francophones qui utilisent FreetuxTV. Mais bon, je pense qu’il est judicieux de commencer ça maintenant plutôt que d’attendre que l’appli soit encore plus grosse…

Donc du coup, ce qui change c’est que le texte de l’appli est écrit de base en anglais, et j’ai fait un fichier de traduction en Français.

Maintenant, sachant que je ne suis pas (encore) une star en anglais, si vous avez envie de vérifier si je n’ai pas écrit trop d’idioties, vous pouvez consulter ce fichier pour me corriger :

http://code.google.com/p/freetuxtv/source/browse/trunk/po/fr.po

Par ailleurs, si vous avez envie de traduire l’appli dans une autre langue, vous pouvez copier ce fichier fr.po, et remplacer le texte en Français par sa traduction dans la langue concernée, puis transmettez-le moi.

vendredi 1 août 2008

FreetuxTV 0.1.1 : Paquets Ubuntu

Avec un peu de retard, le paquets Ubuntu i386 est enfin disponible, pour ceux qui n’aurait pas vu.

Disponible sur http://www.freetuxtv.org/packages/.