LinuxPedia

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

Outils pour utilisateurs

Outils du site


opensuse:config_touches_fn

Différences

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

Lien vers cette vue comparative

opensuse:config_touches_fn [2018/11/17 13:53] (Version actuelle)
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 13:53 (modification externe)