Contenu | Rechercher | Menus
Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !


Configurer un clavier multimédia ?

Ubuntu toutes versions

Traduction et adaptation par Rhys Hynaws, le 1er mai 2005ec.
Test, sans identification, histoire de vérifier si la remarque de nikko est juste :)
Différentes francisations et corrections faites par oguenel le 22/08/05.

remodelé par youp.
Mise en forme par Id2ndR.

Vous trouverez comment configurer les actions associées aux touches multimédia de votre clavier.

Mots-clefs : Clavier multimedia, touche multimedia.

Introduction

Bon nombre de machines sont maintenant vendues avec un clavier dit multimédia. C'est-à-dire qu'il y a quelques touches supplémentaires permettant d'augmenter ou diminuer le volume, ouvrir votre boite email, etc…

Utilisation

La plupart des claviers se configurent de manière relativement simple en utilisant l'application Raccourcis clavier (gnome-keybinding-properties).

Quand un clavier multimédia possède certaines touches qui ne semblent pas fonctionner avec xev, comme le Media Keyboard (idem version Elite) de Logitech, il faut alors plutôt essayer avec l'utilitaire keytouch qui après installation se lance par le menu Système → Administration → KeyTouch, il suffit alors de choisir son modèle de clavier (si l'on a la chance qu'il le gère) et affecter les touches comme on le veux.

Raccourcis clavier

  • Lancez l'application disponible dans le menu SystèmePréférencesRaccourcis clavier.

Dans cette application, il vous suffit de cliquer sur la ligne qui vous intéresse (exemple : Dossier personnel) et d'ensuite appuyer sur la touche du clavier qui va effectuer cette fonction (sur mon clavier Logitech, c'est la touche My Home).

Pour effacer un raccourci clavier assigné précédemment, vous devez cliquer sur la ligne qui vous intéresse et appuyer sur la touche BACKSPACE (retour en arrière).

Si cela ne fonctionne pas, ou si gnome-keybinding-properties ne possède pas l'action désirée pour votre touche, vous aurez besoin de lire le reste de cette page.

Retours d'utilisateurs

(Merci de préciser votre modèle de clavier ou de portable.)

retour 1 : Sur certains ordinateurs portables, les touches multimédias peuvent poser problème. C'est le cas de mon Acer. Si vous vous retrouvez bloqué, tuez la session X pour obtenir à nouveau le contrôle du clavier (pour rappel : touches CTRL + ALT + RETOUR EN ARRIERE en même temps pour tuer X).

retour 2 : J'ai aussi un ordinateur portable ACER sur lequel par contre ça marche très bien.

Problèmes et solutions

Et voilà, j'ai un super clavier multimédia, et pourtant, lorsque j'appuie sur la touche, rien ne se passe…

  • Les claviers supportés en natif par XOrg sont disponibles dans le fichier /etc/X11/xkb/rules/base.lst.
  • En éditant xorg.conf (sudo gedit /etc/X11/xorg.conf), il est possible de définir son clavier multimédia et ce pour l'ensemble des utilisateurs de l'ordinateur.
  • Commencez par essayer la première solution.

À ce niveau, toutes vos touches sont utilisables. Je vous conseille de redémarrer votre serveur X avant de passer à l'étape suivante.
Nous avons créé le couple scancode/keycode, maintenant, il va falloir lui mettre une petite étiquette pour dire au noyau à quoi il sert…

Code touche

Si la touche n'est pas prise en charge par le serveur X, vous devez assigner un code de touche à la touche du clavier (Explications sur le couple SCANCODE/KEYCODE).

Pour ce faire on commence par identifier les touches qui n'ont pas de keycode :

  • appuyez sur les touches qui vous intéressent
  • trouvez ensuite leur code :
    1. en interface graphique :
      • ouvrez le Visionneur de journaux système (SystèmeAdministrationVisionneur de journaux système).
      • ouvrez le journal nommé messages.
    2. ou en console :
      • Exécutez tail /var/log/messages
      • Autre méthode : Exécutez tail -f /var/log/messages (Ctrl–C pour revenir à l'invite de commande) et appuyez sur les touches : les informations s'afficheront directement à l'écran.

Vous devriez trouver deux lignes ressemblant quelque peu à celles-ci, vers la fin :

07:41:52 localhost   kernel   atkbd.c : Unknown key released (translated set 2, code 0xa5 on isa0060/serio0).
07:41:52 localhost   kernel   atkbd.c : Use 'setkeycodes e025 ' to make it known.

Ce qui nous intéresse, c'est le code de la touche (ici, 0xa5) et surtout le <scancode> associé (ici, e025).

On affecte alors un keycode à une touche :

  • Dans un terminal exécutez
    $ setkeycodes <scancode> <keycode>

    où <scancode> doit être remplacé par la valeur trouvée à l'étape précédente ; <keycode> est le code clavier attribué : commencez la numérotation à 129 ((Explications sur les keycodes disponibles) et incrémentez ce nombre à chaque touche supplémentaire (130, 131, etc.).

  • Répétez cette étape pour chacune des touches à programmer.
  • Utilisez alors raccourcis clavier avec les touches fraichement configurées.

Pour garder ce réglage après un redémarrage la machine, il faut rajouter la ligne de commade précédente au fichier /etc/init.d/bootmisc.sh :

  • dans un terminal exécutez
    gksudo gedit /etc/init.d/bootmisc.sh
  • à la fin du fichier ajoutez la ligne en question (juste avant la ligne : exit 0) :
    setkeycodes <scancode> <keycode>

Explications

Le couple SCANCODE/KEYCODE

« Où là là c'est quoi ce truc, une expression anglaise, HORREUR… »

Non, ne partez pas en courant, c'est plutôt logique.

Lorsque vous appuyez sur une touche du clavier, le noyau Linux reçoit un « scancode » (une marque, quoi, comme un scanner qui dit noir ou blanc) et met à disposition des applications un « keycode » (il dit à quoi cela sert, à quelle information-clé cela correspond).

Attention, tout cela se fait en dehors du noyau Linux. On reste chez X. X transforme le scancode en un keycode, mais il faudra dire ensuite au noyau linux, à quoi le keycode correspond.

En gros,

  • lorsque vous appuyerez sur la touche, elle enverra un scancode, à X.
  • X lui attribuera un keycode.
  • X dira au noyau linux à quoi sert le keycode lorsqu'il est appuyé.

Vous allez me dire, mais pourquoi X ne fait pas la relation direct entre le scancode, et l'action qui découle de cette touche.

En fait, pour que toutes les touches soient utilisables sous X, il faut donc définir pour chacune d'entre elles : un couple scancode/keycode valable pour le noyau quand il n'existe pas encore (un clavier de type AT est mis en place par défaut), plus une table de correspondance pour X.

Cette méthode peut sembler étrange mais permet à X de rester indépendant de la méthode utilisée par le noyau.

Les keycodes du noyau

Avant d'affecter les keycodes manquants et pour éviter tout conflit, vous devez savoir lesquels sont disponibles :

  • Allez sur une vraie console par <CTRL><ALT>+F1. (<CTRL><ALT>+F7 pour retourner sous GNOME)
  • Connectez vous
  • Obtenez alors la liste des keycodes en executant
    $ dumpkeys
  • Repérez ceux qui ne sont pas encore utilisés (keycode <valeur> = nul).

Remarque : Vous pouvez en sauvegarder la liste avec la commende :

dumpkeys | grep "nul" > keycode.list

Les keysyms de X

Le keysyms sont simplement un moyen de faire correspondre, dans X, un numéro à un nom. Cela permet aux humains que nous sommes de travailler avec des noms alors que X va travailler avec des numéros.

Introduction

La liste des keysyms affectés par le serveur X est fonction du modèle de clavier déclaré dans /etc/X11/xorg.conf.

Donc, il vaut que vous ayez déclaré que vous ayez un modèle multimédia, non ?? ;-) (voir Problèmes et solutions).

Exemple : si vous avez un Logitech Cordless Keyboard et que vous déclarez un clavier de type « pc105 », les touches multimédia devraient être opérationnelles mais sans keysym. Pour s'éviter du travail, choisissez plutôt le type "logiciink" et redémarrez votre serveur X.

Même avec un paramétrage adapté du clavier dans /etc/X11/xorg.conf, il y a des chances pour que toutes les touches n'aient pas encore reçues l'affectation d'un keysyn. Nous allons donc les déclarer manuellement.

Comme il n'est pas évident de trouver le nom du clavier (le nom commerciel est rarement le même que le nom du clavier dans les fichiers X, si jamais le clavier est connu de X), la déclaration d'un clavier multimédia n'est pas nécessaire.

Configuration

Désormais, tout se passe sous X.

Les keysyms de X sont des étiquettes réservées comme : XF86AudioMedia, XF86WWWW, etc. La liste des keysyms est disponible dans le ficher /usr/share/X11/XKeysymDB.

La liste des keysyms affectés par le serveur X est fonction du modèle de clavier déclaré dans /etc/X11/xorg.conf.

  • Dans un terminal exécutez xev.
  • Appuyez sur la touche désirée. Si l'affectation est déjà faite, le terminal affiche quelque chose comme :
            KeyRelease event, serial 28, synthetic NO, window 0x3200001,
               root 0xb7, subw 0x0, time 137010761, (693,138), root:(705,256),
               state 0x10, keycode 136 (keysym 0x1008ff27, XF86Forward), same_screen YES,
               XLookupString gives 0 bytes:
  • C'est la troisième ligne qui nous intéresse : elle signifie que cette touche possède un keycode (136) et un keysym (XF86Forward). Si un keysym lui est affecté, c'est parfait, et vous pourrez l'utliser pour déclencher une action via gnome keybindings ou metacity bindings comme indiqué un peu plus loin (allez au paragraphe III c), plus bas) .
  • Votre touche n'a probablement pas encore de keysym associé. Vous recevez alors ceci :
            KeyRelease event, serial 28, synthetic NO, window 0x3200001,
               root 0xb7, subw 0x0, time 137355697, (401,146), root:(413,264),
               state 0x10, keycode 136 (keysym 0x0, NoSymbol), same_screen YES,
               XLookupString gives 0 bytes:
  • Dans ce cas il suffit d'utiliser xmodmap pour associer un keysym au keycode (136).
  • En premier lieu, récupérez la configuration de votre clavier X. Dans un terminal, exécutez :
    $ xmodmap -pke > ~/xmodmap.conf
  • Puis, éditez xmodmap.conf pour y ajouter les keysyms manquants: utilisez xev pour connaître le keycode attribué par X et recherchez dans le fichier /usr/lib/X11/XKeysymDB (ou /usr/share/X11/XKeysymDB) le keysym qui convient. Exemple : il serait tout indiqué d'associer la touche iTouch d'un clavier Logitech au keysym "XF86iTouch".
  • Répétez cette étape pour chacune de vos touches sans keysym.
  • Quand c'est terminé, sauvegardez le fichier xmodmap.conf et appliquez vos changements avec
    $ xmodmap ~/xmodmap.conf

Maintenant, il ne reste plus qu'à charger xmodmap.conf sous Ubuntu ou sous Kubuntu.

Sous Ubuntu

Note : la procédure qui suit ne fonctionne pas sous Gnome 2.10. Sous Hoary, le chargement de votre nouveau xmodmap.conf se fera automatiquement au prochain démarrage de la session. Vous pouvez donc passer directement au paragraphe suivant.

Texte d'origine : Maintenant vous voulez loader votre nouveau xmodmap.conf lorsque X démarre. Ce qui suit ne marchera que pour GDM (Utilisé par défaut avec Ubuntu). Tapez:

$ sudo cp xmodmap.conf /etc/xmodmap.conf 
$ cd /etc/X11/gdm/PostLogin 
$ sudo cp Default.sample Default

* Maintenant ouvrir le ficher Default et ajoutez à la fin:

xmodmap /etc/xmodmap.conf
exit 0

* De cette façon, tout vos scancodes/keycodes/keysyms seront assignés au démarrage de X et du système. * Maintenant vous pourrez faire quelquechose d'utile avec:

Sous Kubuntu

Avec l'environnement Kde, c'est un peu différent.

Une fois le fichier xmodmap.conf modifié, placez-le dans /etc/ :

sudo cp xmodmap.conf /etc/xmodmap.conf

Créez un script qui prendra xmodmap.conf en compte à chaque lancement de KDE :

vim ~/.kde/Autostart/xmod

Appuyez sur la touche I (comme Insertion) et copiez-collez les deux lignes suivantes :

#!/bin/sh
xmodmap /etc/xmodmap.conf

Tapez Echap puis :w (avec les deux points) et enfin :q pour successivement enregistrer et quitter le script.

Vous devez ensuite rendre ce script executable :

chmod +x ~/.kde/Autostart/xmod

Relancez KDE, vos touches devraient être prises en charge.

Associer une commande à une touche

Bon voilà, c'est enfin plus simple pour vous.

Alors bref, Vous avez le couple Scancode/keycode reconnue avec un keysyms, il ne reste plus qu'à lui attribuer des actions via l'un de ces deux programmes :

Sous Ubuntu
  • Ouvrez raccourcis clavier et suivez simplement les indications affichées.
  • Si cela ne suffit pas, utilisez metacity :
    • lancez "Editeur de configuration GConf" :
      • Dans un terminal, exécutez gconf-editor
      • ou passez par les menus pour lancer "Editeur de configuration GConf"
    • Ouvrez apps/metacity. Parmi d'autres lignes vous voyez apparaître "global_keybindings" et "keybinding_commands".
    • Cliquez sur global_keybindings : sur la partie droite de la fenêtre apparaissent alors quelques entrées de commandes, comme: run_command_1, run_command_2, etc. Ces commandes doivent être renseignées avec le keysym associé à une touche (éventuellement, utilisez xev pour connaître le keysym d'une touche).
    • Ensuite, cliquez sur keybinding_commands : sur la partie droite de la fenêtre, cliquez sur la ligne de la commande retenue et inscrivez la commande que vous désirez (ou le nom d'un script). Les possibilités sont quasi infinies (exemple : xmms –fwd).
Sous Kubuntu
  • Ouvrez l'éditeur de menu KDE (clic droit sur l'icône du menu > Éditeur le menu), et assignez aux applications les touches voulues.
  • Maintenant si vous avez par exemple une touche Play, il vous faudra sans doute créer votre propre raccourci. Par exemple nous voulons que la touche Play de notre clavier multimédia lance la lecture dans AmaroK :
    • On va créer une entrée de menu pour lancer la lecture. Comme nous n'avons pas forcément envie de la voir en ouvrant le menu K, nous lui donnerons un nom commençant par un point (.), ce qui fera qu'elle ne sera pas visible dans le menu. nous l'appelons ici .play.
    • On assigne ensuite à cette entrée de menu l'action amarok –play-pause.
    • Et enfin, nous assignons à cette entrée de menu le raccourci clavier voulu. Et voilà, le tour est joué !

Remarque : Vous pouvez utiliser un terminal pour découvrir les paramètres disponibles pour une application (exemple : xmms –help).


Contributeurs: loxol.


materiel/clavier_multimedia.1190591862.txt.gz · Dernière modification: Le 18/04/2011, 14:47 (modification externe)
Le contenu de ce wiki est sous licence : CC BY-SA v3.0