LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:config_touches_fn
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


opensuse:config_touches_fn [2018/11/17 12:53] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Configuration avancée du clavier :: introduction======
  
 +Bienvenue dans la magie de Xorg ! Vous trouverez ici un mode opératoire simple et élégant pour modifier le //mappage// de votre clavier et l'affectation des boutons de votre souris. \\
 +
 +À l'origine, il s'agissait pour l'auteur de retrouver l'usage des touches Fn de son clavier de portable -c'est donc ce cheminement que nous allons suivre, mais il peut tout à fait servir pour configurer très finement son clavier et affecter à des touches, combinaisons de touches ou boutons tout un tas d'actions gérées par Xorg, voire même configurer un //mappage// par utilisateur du système ! \\ 
 +
 +
 +
 +Ce //tutoriel// est librement inspiré de [[http://doc.ubuntu-fr.org/clavier_multimedia|celui-ci]] (ubuntu-fr) mais il est de loin bien plus simple et surtout en contourne un défaut potentiel relatif à la configuration de base du clavier.\\
 +
 +
 +
 +=== Conditions liminaires ===
 +
 +  * Avoir un serveur X à peu près fonctionnel ;
 +
 +  * savoir se servir un peu de la ligne de commande ;
 +
 +  * ouvrir trois terminaux virtuels sous X.
 +
 +
 +
 +=== Légende ===
 +
 +  * ligne de code commençant par **$** = action à effectuer en tant qu'utilisateur
 +
 +  * ligne de code commençant par **#** = action à effectuer en tant que //root//
 +
 +
 +
 +====== Déroulé ===
 +
 +La méthode que nous allons suivre est la suivante :
 +
 +  * récupération des actions à affecter (augmenter le volume sonore par exemple) ;
 +
 +  * récupération du //keycode// des combinaisons de touches ou de boutons qui nous intéressent ;
 +
 +  * création d'un fichier de configuration personnalisé ;
 +
 +  * test ;
 +
 +  * mise en place permanente des modifications.
 +
 + 
 +
 +====== Identification des actions gérées par X ======
 +
 +Dans le premier terminal, entrez la commande : <code>$ cat /usr/share/X11/XKeysymDB | grep XF86</code>
 +
 +On obtient une sortie de ce genre : <code>! The definitions here should match <X11/XF86keysym.h>
 +
 +XF86ModeLock            :1008FF01
 +
 +XF86MonBrightnessUp     :1008FF02
 +
 +XF86MonBrightnessDown   :1008FF03
 +
 +XF86KbdLightOnOff       :1008FF04
 +
 +XF86KbdBrightnessUp     :1008FF05
 +
 +XF86KbdBrightnessDown   :1008FF06
 +
 +XF86Standby             :1008FF10
 +
 +XF86AudioLowerVolume    :1008FF11
 +
 +XF86AudioMute           :1008FF12
 +
 +XF86AudioRaiseVolume    :1008FF13
 +
 +XF86AudioPlay           :1008FF14
 +
 +XF86AudioStop           :1008FF15
 +
 +XF86AudioPrev           :1008FF16
 +
 +XF86AudioNext           :1008FF17
 +
 +XF86HomePage            :1008FF18
 +
 +XF86Mail                :1008FF19
 +
 +XF86Start               :1008FF1A
 +
 +XF86Search              :1008FF1B
 +
 +XF86AudioRecord         :1008FF1C
 +
 +XF86Calculator          :1008FF1D
 +
 +[...]</code>
 +
 +Il faut ici choisir les actions qui nous intéressent. En l'occurrence et pour l'exemple : ''XF86AudioLowerVolume'',
 +
 +''XF86AudioMute'', et ''XF86AudioRaiseVolume''.
 +
 +
 +
 +====== Identification des combinaisons de touches ======
 +
 +==== L'utilitaire xev  ====
 +
 +''xev'' est un des utilitaires de xorg. Il permet d'afficher certaines informations relatives aux évènements d'entrée de X, notamment ceux créés par nous à l'aide du clavier ou la souris.\\ 
 +
 +Quand on le lance dans un terminal sous X, une petite fenêtre s'ouvre : __elle doit être active__ pour surveiller ce qui se passe et afficher dans le terminal le résultat des actions du clavier ou de la souris. Pour quitter ''xev'', fermez cette petite fenêtre. 
 +
 +
 +
 +==== Récupération des keycode ====
 +
 +Dans le second terminal, lancez ''xev'' : <code>$ xev</code>
 +
 +
 +
 +Voici ce qui s'affiche quand on presse puis relâche la touche "flèche bas" :
 +
 +<code>KeyPress event, serial 31, synthetic NO, window 0x1e00001,
 +
 +    root 0x87, subw 0x0, time 12858900, (610,-381), root:(612,67),
 +
 +    state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES,
 +
 +    XLookupString gives 0 bytes:
 +
 +    XmbLookupString gives 0 bytes:
 +
 +    XFilterEvent returns: False
 +
 +
 +
 +KeyRelease event, serial 34, synthetic NO, window 0x1e00001,
 +
 +    root 0x87, subw 0x0, time 12858994, (610,-381), root:(612,67),
 +
 +    state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES,
 +
 +    XLookupString gives 0 bytes:
 +
 +    XFilterEvent returns: False</code>
 +
 +Ce qui nous intéresse, c'est cette partie : ''keycode 104 (keysym 0xff54, Down)''. Cela nous dit que la touche en question a le //keycode// n° 104 et que ce code est associé à une action particulière **"Down"**. 
 +
 +
 +
 +Quand une touche ou une combinaison n'a pas d'action attribuée, on a la sortie suivante : 
 +
 +<code>KeyRelease event, serial 35, synthetic NO, window 0x1e00001,
 +
 +    root 0x87, subw 0x0, time 13186503, (708,-91), root:(710,357),
 +
 +    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
 +
 +    XLookupString gives 0 bytes:
 +
 +    XFilterEvent returns: False</code> On voit clairement le ''(keysym 0x0, NoSymbol)'' qui signifie que cet évènement de //keycode// 223 n'entraîne aucune action. C'est le cas pour certaines de mes combinaison **Fn+[touches_bleues]** et c'est ce que nous allons changer.\\
 +
 +
 +
 +Repérez les combinaisons de touches qui vous intéressent et vérifiez bien qu'aucune action ne leur est attribuée. Si par hasard il y en a déjà une, passez directement à la seconde étape du § **Test**. 
 +
 +
 +
 +====== Création du fichier de configuration ======
 +
 +Dans le troisième terminal (ou à l'aide de votre éditeur de texte favori), créez le fichier ''/home/votre_nom/.xmodmap.conf'' et remplissez-le comme suit : <file># Hacking de clavier par Toto "la rotule de la M0r7" 
 +
 +keycode 160 = XF86AudioMute
 +
 +keycode 174 = XF86AudioLowerVolume
 +
 +keycode 176 = XF86AudioRaiseVolume</file>
 +
 +Comme vous l'aurez compris, les numéros de //keycode// sont trouvés grâce à ''xev'' (second terminal), et le nom des actions XF86 proviennent du premier terminal. 
 +
 +
 +
 +====== Test ======
 +
 +Dans le troisième terminal : <code>$ xmodmap /home/toto/.xmodmap.conf</code> De deux choses l'une : le test est positif, ou pas ! S'il ne l'est pas, rien n'est perdu : dans la configuration de votre environnement graphique, trouvez l'application qui gère le volume sonore, et affectez aux actions //augmenter//, //diminuer//, //tuer le volume// les raccourcis que vous venez de configurer. Re-testez, normalement ça devrait fonctionner. 
 +
 +
 +
 +====== Rendre les modifications permanentes ======
 +
 +Si vous souhaitez rendre ces modifications disponibles pour tous vos utilisateurs, effectuez la manipulation suivante :
 +
 +<code># mv /home/toto/.xmodmap.conf /etc/xmodmap.conf</code>
 +
 +Pour finir, configurez votre environnement graphique pour qu'il exécute à chaque démarrage la commande :
 +
 +  * ''xmodmap /etc/xmodmap.conf'' (cas de la configuration générale) ;
 +
 +  * ou ''xmodmap /home/toto/.xmodmap.conf'' (cas de la configuration particulière à l'utilisateur //toto//).
 +
 +
 +
 +=== Pour KDE ===
 +
 +Dans ''/home/toto/.kde/Autostart'' créez un fichier de nom quelconque (par exemple ''xmodmap'') et gavez-le :
 +
 +<file>#!/bin/sh
 +
 +xmodmap /etc/xmodmap.conf</file>
 +
 +Rendez-le exécutable (clic droit, "droits d'accès", puis cochez "est exécutable") :
 +
 +<code>chmod +x /home/toto/.kde/Autostart/xmodmap</code>
 +
 +Et voilà !
 +
 +
 +
 +====== Quelques explications ======
 +
 +La commande ''xmodmap'' permet de modifier finement le comportement du clavier ou de la souris, mais aussi d'afficher la configuration en cours : <code>xmodmap -pke</code> Regardez de près le résultat de cette commande, vous verrez que la signification de chaque touche (quand il y en a une) est précisée. Les plus aguerris auront remarqué que cette sortie est sensible à la configuration du clavier (notamment son //mappage//) et qu'elle fait la synthèse entre ce qui est défini dans la partie ''Keyboard'' du ''/etc/X11/xorg.conf'' et dans notre ''/etc/xmodmap.conf''. \\
 +
 +:!: **Ce qui est défini dans notre ''xmodmap.conf'' et exécuté avec ''xmodmap'' a priorité sur la configuration du clavier de ''xorg.conf''.** 
 +
 +
 +
 +
 +
 +=== Une petite application : un mappage par utilisateur ===
 +
 +Nous allons simplement utiliser la propriété précédente pour configurer le mappage du clavier par utilisateur (cas de madame qui ne supporte pas le mappage dvorak sur l'ordi familial) !\\
 +
 +
 +
 +On suppose notre xmodmap.conf configuré //a minima// et aux petits oignons, nous sommes connectés sous la session de l'utilisateur //toto//, la configuration du clavier dans ''xorg.conf'' (ou dans Yast) est fixée à celle que bon vous semble. Faites : <code>$ xmodmap -pke > /home/toto/.xmodmap.conf
 +
 +$ xmodmap /home/toto/.xmodmap.conf</code>
 +
 +Ensuite, modifiez en root) le ''xorg.conf'' avec une autre configuration du clavier pour l'utilisateur //mme_toto//, déconnectez-vous, redémarrez X et logguez-vous sous la session de //mme_toto//. Recommencez l'opération précédente avec pour sortie le fichier ''/home/mme_toto/.xmodmap.conf''.
 +
 +Assurez-vous que chaque session utilisateur exécute bien au lancement la commande ''xmodmap /home/xxxx/.xmodmap.conf''. C'est fini.
 +
 +
 +
 +=== D'autres pistes ===
 +
 +On peut donc même se permettre le luxe de distraire seulement une ou deux touches de leur signification initiale rien qu'en modifiant notre ''xmodmap.conf''. Ce peut être le cas pour avoir à portée de main des symboles compliqués ou mieux, mélanger certaines attributions des variantes de clavier français ''oss'' et ''latin9'', par exemple.\\
 +
 +Bref, les explications simples s'arrêtent là, les plus aventureux se débrouilleront bien tout seuls ;) !
opensuse/config_touches_fn.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1