#1 Le 03/04/2006, à 15:32
- trashie
[Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
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-funcsfor 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`
fiaumix -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`
fiaumix -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-funcsfor 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'AMAROKres_amarok=`ps -fA | grep -c 'amarok'`
if [ $res_amarok -lt 2 ]; then
. /usr/share/acpi-support/power-funcsfor 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
#!/bin/bash
# Joue la piste suivante de VLC (necessite de lancer vlc avec l'option '--extraintf http')wget http://localhost:8080/?control=next
AMAROK
#!/bin/bash
# Joue la piste suivante d'AMAROKamarok --next
* Piste précédente (fichier "asus-precedent.sh")
VLC
#!/bin/bash
# Joue la piste précédente de VLC (necessite de lancer vlc avec l'option '--extraintf http')wget http://localhost:8080/?control=previous
AMAROK
#!/bin/bash
# Joue la piste précédente d'AMAROKamarok --previous
* Stoppe la lecture de VLC (fichier "asus-stop.sh")
VLC
#!/bin/bash
# Stoppe la lecture de VLC (necessite de lancer vlc avec l'option '--extraintf http')wget http://localhost:8080/?control=stop
AMAROK
#!/bin/bash
# Stoppe la lecture d'AMAROKamarok --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
Dernière modification par trashie (Le 23/04/2006, à 13:37)
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#2 Le 03/04/2006, à 15:46
- SamheG
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Je crois que tu m'as l'air partie pour faire également la version pour le wiki
Beau boulot en tout cas ... mais si j'ai pas de M2N !
Hors ligne
#3 Le 06/04/2006, à 19:08
- trashie
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Salut
Je viens juste de rajouter le lancement de VLC, lorsqu'on appuie sur le bouton "lecture" et que VLC n'est pas déjà lancé.
Par ailleurs, toutes ces astuces sont utilisables pour d'autres portables que les ASUS...
Mathieu
Dernière modification par trashie (Le 06/04/2006, à 19:52)
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#4 Le 07/04/2006, à 01:08
- Ju.
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
C'est super ce truc...
Bien joue.. .c'est propre aux asus ? (je veux dire si on remplace les occurences de asus par ibm, ca marche aussi ?)
Si oui http://doc.ubuntu-fr.org/materiel/liste_portables/asus
Hors ligne
#5 Le 07/04/2006, à 10:00
- trashie
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Salut,
He bien non ce n'est pas propre aux Asus. Tu peux adapter la démarche à IBM (ou tout autre portable avec des boutons spéciaux). Le seul truc c'est que les "key id" que je donne sont ceux des Asus M2N series, mais il suffit que tu fasses ce qui est écrit dans la partie "0) [OPTIONNELLE]", et alors il te suffira de changer les "key id " dans les fichiers du répertoire "/etc/acpi/events" (tu peux bien sûr les mettre dans "ibm-truc", plutôt que dans "asus-truc", et de même pour les scripts shell (ie. "asus-truc.sh" -> "ibm-truc.sh")).
Le tout c'est que tu sois cohèrent avec ce que tu fais.
ex :
* tu as un bouton "volume up" sur ton IBM. Tu détermines donc sa "key id" grâce à la partie 0). Admettons pour l'exemple que ce soit "hotkey IBMD 00000067"
* tu crées un fichier spécial (s'il n'existe pas déjà) : sudo vim /etc/acpi/events/ibm-volume-up .
Dans ce fichier tu marqueras qqch comme ça :
event=hotkey IBMD 00000067
action=/etc/acpi/ibm-volup.sh
* tu crées le fichier script nécessaire : sudo vim /etc/acpi/ibm-volup.sh . Dans ce fichier tu peux recopier mot pour mot (sans rien changer du tout) les scripts correspondant que j'ai donné dans la partie 3).
Voilà, j'espère avoir été clair... @+
Mathieu.
Dernière modification par trashie (Le 07/04/2006, à 10:02)
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#6 Le 09/04/2006, à 23:03
- trashie
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Salut à tous,
Bon, j'essaye d'améliorer mes scripts... mais j'ai toujours des petits problèmes. Vous avez dû remarquer (pour ceux qui ont essayé mes conf de boutons) que lorqu'on redémarre le PC, il faut redémarrer à la main le démon acpid pour que les boutons "internet" et "mail" fonctionnent :
$ sudo /etc/init.d/acpid restart
Je n'en connais pas la cause, mais bon.
J'ai donc essayé une manière plus conventionnelle de lancer ces deux applications en changeant les scripts de la manière suivante (ex. pour "asus-internet.sh") :
#!/bin/bash
# Ouvre une nouvelle fenêtre Firefox 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 firefox &
Si on exécute ce code dans un terminal (ou bien même en lançant le script directement : $ /etc/acpi/asus-internet.sh), cela marche parfaitement !
MAIS, quand on utilise le bouton (qui ne fait que lancer ce script normalement), cela régle le problème précédent (à savoir le fonctionnement du bouton lors d'un redémarrage), MAIS firefox se lance en anglais !!! (cependant il est ouvert en tant que bon utilisateur, et avec les préférences de celui qui lance le prog).
Je ne comprends pas ce que je fais de mal pour que ça ne marche pas comme prévu... si donc quelqu'un a une idée, je suis preneur.
Merci et @+
-----------------------------------------
EDIT : début SOLUTION ?
-----------------------------------------
Il semble que le problème de langue (et donc tous les problèmes ?) soit réglé par un redémarrage du démon acpid après modification des scripts.
Donc remplacer tous les user=`finger| grep -m1 ":$displaynum" | awk '{print $1}'` dans les scripts précédent (même pour VLC), par des :
. /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;
Ce sera plus propre (la manière de coder les scripts), mais j'ai bien peur que l'on doive (pour que la langue soit bonne) redémarrer le démon acpid après chaque redémarrage du PC... DES IDEES ?????
-----------------------------------------
Mathieu
Dernière modification par trashie (Le 09/04/2006, à 23:51)
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#7 Le 23/04/2006, à 13:39
- trashie
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Salut à tous,
Juste un petit message pour dire que j'ai rajouté la possibilité de contrôler AMAROK... Cela reste à tester, mais ça devrait marcher.
Hésitez pas à faire des commentaires, et à poster des idées, des scripts, ou à à signaler des erreurs (ou même des optimisations !).
@+
Mathieu
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#8 Le 04/03/2007, à 23:48
- pfdm
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Bonjour,
Vous avez des news par rapport au fait qu'il faille relancer le demon a chaque connexion?? Les touches pour le net et le mail fonctionnent ,mais pas les touches media.
Ps: J'ai un M6
Merci
#9 Le 05/03/2007, à 07:36
- trashie
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Bonjour,
Je n'utilise plus mes scripts, car il y a mieux, plus conviviale, et certainement plus propre : keytouch. Il permet de faire ce que l'on veut avec ses touches multimedia (il est facile d'ajouter et de configurer son clavier de portable s'il n'est pas dans la liste du programme).
Pour les touches media (en façade pour moi), quand j'utilisais mes scripts cela fonctionnait sans problème, mais depuis que je suis passé sous Edgy, les 2 touches de config personnelles (à côté du net et mail pour moi) ne fonctionne plus.
Donc solution : Keytouch (+Keytouch config). Chercher sur Google, je crois que le programme n'est pas dans les dépôts.
@+
Mathieu
"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]
Hors ligne
#10 Le 05/03/2007, à 20:42
- pfdm
Re : [Astuce] Boutons spéciaux (ACPI) ASUS M2N (M2400N)
Bonjour,
merci je test tout de suite . Il est dans mes depots