Laptop SONY SZ3XP : le clavier et les touches Fn
NB : il existe à priori de nombreuses manière de
catcher les évènements provenant des
touches multimédia d'un clavier : via
l'ACPI' ou encore
XModMap par exemple. J'expose ici la méthode
XModMap un peu brutale. Elle me paraît en effet moins "délicate" que
l'ACPI que je n'ai pas encore eu le temps de mettre en place (cf. les fichiers dans
/etc/acpi qui sont liés à ceux dans
/usr/share/hotkey-setup/ et
le lien suivant). Cependant il paraitrait que la gestion des touches spéciales via
l'ACPI soit
deprecated,
hal permet lui aussi de contrôler ces touches comme énoncé dans
cet article très intéressant
Gestion de la luminosité de l'écran avec le module sony-laptop (remplaçant de sonypi)
Normalement le module prend en charge les touches de luminosité (
Fn+F5 et
Fn+F6).
aptitude install sony-laptop
Pour vérifier que le module est bien chargé :
lsmod | grep sony-laptop
Au besoin pour charger le driver :
modprobe sony-laptop
Ce driver permet de reconnaitre les touches multimedia du clavier SONY et les touches de réglage de la luminosité sont (à mon avis / à confirmer) gérées par
ACPI.
Touches de gestion du volume avec XModmap
Une partie des scripts qui suivent ont été récupérés sur la
faq de Xfce ou encore
ici, éventuellement modifiés par mes soins pour mon usage personnel.
- Lancer xev dans un terminal et regarder le code des combinaisons de touches S1, S2, Fn+F2 (mute), Fn+F3 (volume down) et Fn+F4 (volume up) :
- mute = 160
- volume down = 174
- volume up = 176
- S1 = 159
- S2 = 151
- Pour faire le mapping entre les touches Fn+Fx et leurs keycodes (par défaut non assignées par le système), créer le fichier ~/.Xmodmap et y insérer les lignes suivantes :
keycode 160 = XF86AudioMute
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 159 = XF86AudioStop
keycode 151 = XF86AudioPlay
Il est bien entendu possible d'associer d'autres touches multimedia, par exemple :
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 237 = XF86AudioMedia
keycode 230 = XF86Favorites
keycode 236 = XF86Mail
keycode 178 = XF86WWW
- Pour être certain que le fichier créé soit pris en compte par X ajouter au fichier ~/.xinitrc la ligne suivante (créer le fichier au besoin en lui assignant les droits à l'éxécution) :
/usr/bin/xmodmap $HOME/.Xmodmap
Cette page contient de nombreux renseignements sur le fonctionnement de X, notamment sur les fichiers de configuration.
[edit 18/04/09]
En parcourant le man de
Xsession et comme la solution du
~/.xinitrc ne fonctionnait plus, j'ai trouvé la méthode suivante plus élégante et mieux intégrée à X (copier-coller du man).
Créer le fichier suivant :
vim /etc/X11/Xsession.d/40custom_load-xmodmap
Y insérer les lignes ci-dessous :
SYSMODMAP="/etc/X11/Xmodmap"
USRMODMAP="$HOME/.Xmodmap"
if [ -x /usr/bin/X11/xmodmap ]; then
if [ -f "$SYSMODMAP" ]; then
xmodmap "$SYSMODMAP"
fi
fi
if [ -x /usr/bin/X11/xmodmap ]; then
if [ -f "$USRMODMAP" ]; then
xmodmap "$USRMODMAP"
fi
fi
Scripts de contrôle
- Pour assigner les actions volume up, volume down et mute aux boutons et lancer les commandes adéquates au mixer alsa (amixer), recopier les scripts suivants et leur donner les droits à l'éxécution.
#!/bin/bash
###########################################
# Copyright (C) 2005 Patrick A. Read
#
# louder - this shell script increases
# the volume of the Master playback control
# in alsamixer. Usage: louder [number]
# where (optional) number is the number of
# clicks you wish to increase the volume.
# Example: louder 4 cranks up the volume
# four steps. If you do not specify a
# number, then louder will raise the
# volume one step. NOTE: Alsamixer uses
# 32 steps (0-31) in its volume controls.
###########################################
if [ "$1" != "" ]
then
VOLADJ=${1}+
else
VOLADJ="10+"
fi
amixer set Master ${VOLADJ}
exit 0
###########################################
# end of louder script
###########################################
#!/bin/bash
###########################################
# Copyright (C) 2005 Patrick A. Read
#
# softer - this shell script decreases
# the volume of the Master playback control
# in alsamixer. Usage: softer [number]
# where (optional) number is the number of
# "clicks" you wish to decrease the volume.
# Example: softer 3 softens the volume
# three steps. If you do not specify a
# number, then softer will lower the
# volume one step. NOTE: Alsamixer uses
# 32 steps (0-31) in its volume controls.
###########################################
if [ "$1" != "" ]
then
VOLADJ=${1}-
else
VOLADJ="10-"
fi
amixer set Master ${VOLADJ}
exit 0
###########################################
# end of softer script
###########################################
#!/bin/bash
## This script toggles the Master volume using amixer.
## (Toggles mute LED on HP nc6120)
## Carel van Wyk
amixer set Master toggle
exit 0
Configuration de XFCE
- Associer les touches aux scripts via l'interface de configuration du clavier de XFCE (menuXFCE -> Paramètres -> Paramètres du clavier -> Raccoucis)
Installation Sony VAIO SZ3XP
[TEST] Essai de gestion des raccourcis clavier avec Hal
Pour l'instant je poste tout en vrac. Tests réalisés d'après ce site :
http://people.freedesktop.org/~hughsient/quirk/quirk-keymap-try.html
cd /usr/share/hal/fdi/information/10freedesktop
more 30-keymap-module-sony-laptop.fdi
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<!-- These are buttons synthesized in the sony-laptop kernel module
You can find the scancodes in the kernel source of the module (drivers/misc/sony-laptop.c) -->
<match key="input.product" string="Sony Vaio Keys">
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" prefix="Sony">
<!-- Older Vaios have a different keymap -->
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains_outof="PCG-C1;PCG-K25;PCG-F1;PCG-F2;PCG-F3;PCG-F4;PCG-F5;PCG-
F6;PCG-FX;PCG-FRV;PCG-GR;PCG-TR;PCG-NV;PCG-Z;VGN-S360;VGN-SZ2HP_B">
<append key="input.keymap.data" type="strlist">0x06:battery</append>
<append key="input.keymap.data" type="strlist">0x07:mute</append>
</match>
<!-- now the generic mapping -->
<match key="input.keymap.data" exists="false">
<append key="input.keymap.data" type="strlist">0x06:mute</append> <!-- Fn+F2 mute -->
<append key="input.keymap.data" type="strlist">0x07:volumedown</append> <!-- Fn+F3 mixer down -->
<append key="input.keymap.data" type="strlist">0x08:volumeup</append> <!-- Fn+F4 mixer up -->
<append key="input.keymap.data" type="strlist">0x09:brightnessdown</append> <!-- Fn+F5 brightness up -->
<append key="input.keymap.data" type="strlist">0x0a:brightnessup</append> <!-- Fn+F6 brightness down -->
</match>
<!-- now the common part -->
<match key="input.keymap.data" exists="true">
<append key="input.keymap.data" type="strlist">0x0b:switchvideomode</append> <!-- Fn+F7 switch crt/lcd -->
<append key="input.keymap.data" type="strlist">0x0e:zoom</append> <!-- Fn+F10 zoom -->
<append key="input.keymap.data" type="strlist">0x10:suspend</append> <!-- Fn+F12 hibernate -->
<append key="info.capabilities" type="strlist">input.keymap</append>
</match>
</match>
</match>
</device>
</deviceinfo>
Liste des mappings (décrits dans le fichier ci-dessus) supportés par Hal :
lshal | grep keymap
info.callouts.add = {'hal-setup-keymap'} (string list)
info.capabilities = {'input', 'input.keys', 'input.keymap', 'button'} (string list)
input.keymap.data = {'0x06:mute', '0x07:volumedown', '0x08:volumeup', '0x09:brightnessdown',
'0x0a:brightnessup', '0x0b:switchvideomode', '0x0e:zoom', '0x10:suspend'} (string list)
A priori tout devrait fonctionner mais seuls les boutons de brightness sont fonctionnels.
Reste à voir comment est fait le mapping entre '0x07:volumedown' par exemple et l'action à réaliser.
[edit 11-03-2009]
Pour chaque couple
keycode:event (i.e.
0x0a:brightnessup), l'event correspond à un des
KEY_* listé dans le fichier
/usr/include/linux/input.h.
Maintenant reste à voir qui gère l'évènement en question (et comment)
Installation Sony VAIO SZ3XP
[DEPRECATED] Avec le module sonypi (projet obsolète remplacé par sony-laptop)
Tout d'abord il faut
recompiler le noyau avec le module sonypi (absent de la version 64bits).
Télécharger la dernière version du driver
sonypi sur
http://www.popies.net/sonypi/.
D'autres infos sur
sonypi sont dispo
à cette adresse.
wget sonypi-1.9.1.tar.bz2
Décompresser l'archive
bunzip2 sony-1.9.1.tar.bz2
tar -xvf sony-1.9.1.tar
Installer les dépendances nécessaires pour compiler le driver
aptitude install libxtst-dev
Aller dans le répertoire et compiler le driver
cd sonypi-1.9.1
make
En root, installer le démon
sonypid
make install
Créer le fichier
/etc/modprobe.conf et y ajouter les lignes suivantes pour charger le module
sonypi automatiquement au démarrage.
alias char-major-10-250 sonypi
options sonypi minor=250
Créer le node
sonypi dans le filesystem
mknod /dev/sonypi c 10 250
Installation Sony VAIO SZ3XP