Bonjour,
Je fais part ici de ce que j'ai pu apprendre en consultant forums et autres sites internets (désolé je ne me rappelle plus lesquels, aussi si vous savez, postez les sources !) sur la manière d'activer les boutons spéciaux pour les portables ASUS M2N series (en fait j'ai essayé sur le mien qui est un M2400N) : volume, lecture /pause, suivant (pour un lecteur multimedia), ou bien lancer firefox...
Les dossiers concernés sont "/etc/acpi" et "/etc/acpi/events".
Mon installation d'Ubuntu installe par défaut le package nécessaire
acpi-support (qui contient les fichiers nécessaires pour les portables ASUS). Si ce n'est pas le cas pour vous, installez-le.
# apt-get install acpi-support
0) [OPTIONNEL] Récupération des "key id" des touches concernées
IMPORTANT : les key id des touches spéciales de mon portable devraient être les mêmes que pour les autres M2N, cependant vous pouvez verifier en faisant comme suit :
* tuer le démon acpi (l'arrêter par /etc/init.d/acpid stop ne suffit pas !) :
$ ps -fA | grep acpid
$ sudo kill -15 id_de_acpid
* déterminer les "key id", qui sont les identifiants acpi des touches et boutons de votre PC.
# cat /proc/acpi/event
Vous tapez alors sur une touche spéciale, et quelque chose de se genre apparait :
hotkey ATKD 00000051 00000000
Dès lors que vous aurez noté toutes les key id de vos boutons favoris, vous pouvez faire un Ctrl+C pour reprendre la main dans le terminal.
1) Fichiers d'association d'action aux boutons
Il faut maintenant editer les fichiers situés dans le répertoire "/etc/acpi/events". Ils contiennent les actions à exécuter lorsqu'un bouton est préssé. Ceux qui nous intéressent, sont les fichiers commençant par "asus-". On pourra en créér d'autres si besoin est.
* En premier (comme toute configuration sous linux) il faut sauvegarder les fichiers que l'on va modifier :
$ mkdir -p ~/asus/events
# cp /etc/acpi/event/asus* /home/votre_login/asus/events/.
# cp /etc/acpi/asus* /home/votre_login/asus/.
* Ensuite l'édition des dits fichiers.
# cd /etc/acpi/events
Par exemple, le fichier "asus-internet" ressemble à ceci :
event=hotkey ATKD 00000051
action=/etc/acpi/asus-internet.sh
Vous remarquez donc les deux choses importantes de ce fichier : la "key id" que vous avez relevé (correspondant à la touche internet des ASUS M2N series; notez aussi que seule la première série de chiffres est donnée :
il ne faut pas mettre la seconde série de 8 chiffres car sinon la touche ne fonctionnera pas), et l'emplacement du script qui s'exécutera quand la touche sera pressée).
Faites de même avec les autres touches. Moi j'ai eu besoin de modifier les fichiers suivants (les autres je pense qu'il n'y a pas besoin de les modifier) :
asus-mail (key id = ... 00000050 ...) (script = /etc/acpi/asus-mail.sh)
asus-media-play-pause (key id = ... 00000045 ...) (script = /etc/acpi/asus-lecture.sh)
asus-volume-up (key id = ... 00000030 ...) (script = /etc/acpi/asus-volup.sh)
asus-internet (key id = ... 00000051 ...) (script = /etc/acpi/asus-internet.sh)
asus-media-prev (key id = ... 00000040 ...) (script = /etc/acpi/asus-precedent.sh)
asus-volume-down (key id = ... 00000031 ...) (script = /etc/acpi/asus-voldown.sh)
asus-media-next (key id = ... 00000041 ...) (script = /etc/acpi/asus-suivant.sh)
asus-media-stop (key id = ... 00000043 ...) (script = /etc/acpi/asus-stop.sh)
et deux autres que j'ai créé (deux boutons qui sous Windows sont configurables)
asus-perso01 (key id = ... 00000052 ...) (script = /etc/acpi/asus-perso01.sh)
asus-perso02 (key id = ... 00000053 ...) (script = /etc/acpi/asus-perso02.sh)
2) Script d'exécution
Il faut maintenant créér (ou modifier) les fichiers script du répertoire "/etc/acpi" pour assigner l'action que l'on veut à un bouton :
# cd /etc/acpi
IMPORTANT : il faut savoir que chacun fait ce qu'il veut en ce qui concerne sese scripts. Je vous livre ici les miens qui ne sont pas parfaits (surtout en ce qui concerne le media player), mais cela peut intéresser certains d'entre vous...
*
internet
# vim asus-internet.sh
NB : j'utilise l'editeur de texte VIM, mais vous pouvez utiliser celui que vous voulez 😉
#!/bin/bash
# Ouvre une nouvelle fenêtre Firefox pour l'utilisateur qui le demande.
# détermine qui demande d'ouvrir Firefox
. /usr/share/acpi-support/power-funcs
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
fi
done
getXuser;
# ouvre pour l'utilisateur. Changer "firefox" en "konqueror", si vous préférez utiliser konqueror par
# exemple.
sudo -u $user firefox &
Il faut maintenant donner les bons droits au fichier.
# chmod 755 asus-internet.sh
Faire ainsi pour tous les autres fichiers (droits...).
*
mail (fichier "asus-mail.sh")
#!/bin/bash
# Ouvre Mozilla Thunderbird pour l'utilisateur qui le demande
. /usr/share/acpi-support/power-funcs
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
fi
done
getXuser;
sudo -u $user mozilla-thunderbird &
*
volume up (fichier "asus-volup.sh")
Pour que ce script fonctionne, il faut installer le package "aumix". Il permet d'augmenter le son de 5%. Vous pouvez changer cette valeur, mais dans ce cas penser à changer 95 en "100 - valeur_choisie"
#!/bin/bash
# Augmente le volume de 5 %
# nécessite que le package 'aumix' soit installé.
vol=`aumix -v q | awk -F ', ' '{print $2}'`
if [ $vol -gt 95 ] ; then
vol=100
else
vol=`expr $vol + 5`
fi
aumix -v $vol
*
volume down (fichier "asus-voldown.sh")
#!/bin/bash
# Baisse le volume de 5 %
# nécessite que le package 'aumix' soit installé.
vol=`aumix -v q | awk -F ', ' '{print $2}'`
if [ $vol -lt 5 ] ; then
vol=0
else
vol=`expr $vol - 5`
fi
aumix -v $vol
*
Lecture / pause de VLC (fichier "asus-lecture.sh")
Ce script contrôle VLC par interface web (il faut donc VLC installé 😉). Vous pouvez l'adapter à un autre player, ou même à une autre manière de contrôler VLC (telnet, rc...). Cependant c'est la seule manière que j'ai trouvé pour contrôler VLC (avec un problème : lorsqu'on utilise ces scripts de contrôle de VLC, des fichiers html apparaissent dans votre home... mais vous pouvez les effacer à tout moment sans aucun danger...).
VLC doit donc être lancé avec l'option "
--extraintf http" pour que ça marche (que ce soit le lanceur KDE, GNOME, ou en ligne de commande !)
** edit **
J'ai rajouté la possibilité de lancer VLC par le bouton lecture, s'il ne l'est pas déjà.
** **
-------------
** EDIT ** J'ai rajouté des scripts (à tester !) pour contrôler Amarok.
-------------
VLC
#!/bin/bash
# Lecture / Pause de VLC (necessite de lancer vlc avec l'option '--extraintf http')
res_vlc=`ps -fA | grep -c 'vlc'`
if [ $res_vlc -lt 2 ]; then
. /usr/share/acpi-support/power-funcs
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
fi
done
getXuser;
sudo -u $user wxvlc --extraintf http &
else
if [ '$asusmedia' != 'lecture' ]; then
asusmedia=pause
wget
http://localhost:8080/?control=pause
else
asusmedia=lecture
wget
http://localhost:8080/?control=play
fi
fi
AMAROK
#!/bin/bash
# Lecture / Pause d'AMAROK
res_amarok=`ps -fA | grep -c 'amarok'`
if [ $res_amarok -lt 2 ]; then
. /usr/share/acpi-support/power-funcs
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
fi
done
getXuser;
sudo -u $user amarok &
else
if [ '$asusmedia' != 'lecture' ]; then
asusmedia=pause
amarok --pause
else
asusmedia=lecture
amarok --play
fi
fi
*
Piste suivante (fichier "asus-suivant.sh")
VLC
AMAROK
#!/bin/bash
# Joue la piste suivante d'AMAROK
amarok --next
*
Piste précédente (fichier "asus-precedent.sh")
VLC
AMAROK
#!/bin/bash
# Joue la piste précédente d'AMAROK
amarok --previous
*
Stoppe la lecture de VLC (fichier "asus-stop.sh")
VLC
AMAROK
#!/bin/bash
# Stoppe la lecture d'AMAROK
amarok --stop
Voilà ! Il reste maintenant à relancer le démon acpid et à profiter des boutons (vous avez certainement remarqué que je laisse libre cours à votre imagination pour les 2 touches "persos"😉)
# /etc/init.d/acpid restart