« Configurer les touches de son clavier multimédia » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (restitution de la dernière modification de Fred (phorum))
Aucun résumé des modifications
 
(14 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:Autres]]
= Configurer les touches de son clavier multimédia =
= Configurer les touches de son clavier multimédia =


Ligne 13 : Ligne 12 :
Tout d'abord, il va nous falloir espionner le clavier pour savoir ce qu'il renvoie quand vous appuyez sur les touches bonus.
Tout d'abord, il va nous falloir espionner le clavier pour savoir ce qu'il renvoie quand vous appuyez sur les touches bonus.


Pour cela, il faut utiliser le programme xev, qui se trouve sur mandrake dans le paquet X11R6-contrib. Si vous avez [http://groupes.lea-linux.org/fiches/ficheurpmi.html correctement configuré les sources urpmi], il vous suffit de taper ceci en tant que root : <code>urpmi X11R6-contrib</code>.
Pour cela, il faut utiliser le programme xev, qui se trouvait sur d'anciennes versions de Mandriva dans le paquet X11R6-contrib et s'installe maintenant à partir d'un paquetage spécifique xev. Dans la 2007, si vous avez [http://groupes.lea-linux.org/fiches/ficheurpmi.html correctement configuré les sources urpmi], il vous suffit de taper ceci en tant que root : <div class="code">urpmi xev</div>


Lorsque tout est installé, lancez le programme <code>xev</code>. En appuyant sur les touches, vous devriez obtenir quelque chose ressemblant à ceci :
Lorsque tout est installé, lancez le programme <b>xev</b>. En appuyant sur les touches, vous devriez obtenir quelque chose ressemblant à ceci :


<div class="code">[root@mastonsbox maston28]# xev<br /> KeyRelease event, serial 27, synthetic NO, window 0x3400001,<br /> root 0x48, subw 0x0, time 7029077, (249,-81), root:(252,517),<br /> state 0x0, keycode 233 (keysym 0x1008ff27, XF86Forward), same_screen YES,<br /> XLookupString gives 0 bytes: ""</div>
<div class="code">[root@mastonsbox maston28]# xev<br /> KeyRelease event, serial 27, synthetic NO, window 0x3400001,<br /> root 0x48, subw 0x0, time 7029077, (249,-81), root:(252,517),<br /> state 0x0, keycode 233 (keysym 0x1008ff27, XF86Forward), same_screen YES,<br /> XLookupString gives 0 bytes: ""</div>


Le champ qui nous intéresse ici est le champ <code>keycode</code>. Par exemple, la touche que j'ai ici espionnée renvoie la valeur <code>keycode 233</code>.
Le champ qui nous intéresse ici est le champ <b>keycode</b>. Par exemple, la touche que j'ai ici espionnée renvoie la valeur <b>keycode 233</b>.


Répétez cette opération pour chacune des touches spéciales, et notez quelque part la valeur de chacune de ces touches.
Répétez cette opération pour chacune des touches spéciales, et notez quelque part la valeur de chacune de ces touches.


<div class="note">Si certaines touches ne semblent rien renvoyer, vérifiez dans le fichier <code>/usr/X11R6/lib/X11/xkb/keycodes/xfree86</code> que vous avez ceci :<br /><div class="code"> xkb_keycodes "basic" {<br /><br /> minimum= 8;<br /> maximum= 255;<br /> </div><br /> En effet, il arrive parfois que les valeurs soient plus petites, et donc que le programme ne scanne pas sur toute la plage possible. </div>
<div class="note">Si certaines touches ne semblent rien renvoyer, vérifiez dans le fichier <b>/usr/X11R6/lib/X11/xkb/keycodes/xfree86</b> (ou <b>/usr/share/X11/xkb/keycodes/xfree86</b>) que vous avez ceci :<br /><div class="code"> xkb_keycodes "basic" {<br /><br /> minimum= 8;<br /> maximum= 255;<br /> </div><br /> En effet, il arrive parfois que les valeurs soient plus petites, et donc que le programme ne scanne pas sur toute la plage possible. </div>


==== xev ne réagit pas à vos touches ====
==== xev ne réagit pas à vos touches ====
Il arrive fréquemment que <code>xev</code> ne réagisse pas à l'appuie sur certaines touches des claviers multimédia. C'est, la plupart du temps, du au fait que le kernel n'a pas connaissance de ces touches. Mais il existe une solution !  
Il arrive fréquemment que <b>xev</b> ne réagisse pas à l'appuie sur certaines touches des claviers multimédia. C'est, la plupart du temps, du au fait que le kernel n'a pas connaissance de ces touches. Mais il existe une solution !  


===== vérifier que le kernel est capable de gérer une touche =====
===== vérifier que le kernel est capable de gérer une touche =====
Dans un terminal tapez :  
Dans un terminal (attention, il faut utiliser un vrai terminal, pas un terminal dans X), tapez :  
<code multi>tail -f /var/log/messages</code>
<code multi>tail -f /var/log/messages</b>
Puis appuyez sur la touche qu'<code>xev</code> ne reconnaît pas, vous devriez voir apparaître quelque chose du genre :
Puis appuyez sur la touche qu'<b>xev</b> ne reconnaît pas, vous devriez voir apparaître quelque chose du genre :
<code multi>Feb  7 16:13:08 localhost atkbd.c: Use 'setkeycodes e012 <keycode>' to make it known.</code>
<code multi>Feb  7 16:13:08 localhost atkbd.c: Use 'setkeycodes e012 <keyb>' to make it known.</b>
Ce qui nous intéresse, c'est la valeur annoncée : '''e012'''. C'est le '''scancode''' de la touche en question. Tant que vous y êtes appuyez sur la plupart de touches de votre clavier pour voir s'il n'y a pas d'autre touche inconnue du noyau. Vérifiez aussi les touches aprés le vérouillage de la touche <key>Verr. F</key> (enfin c'est son nom sur mon clavier) : elle donne accès à une douzaines de '''touches''' parallélement aux touches de fonction.
Ce qui nous intéresse, c'est la valeur annoncée : '''e012'''. C'est le '''scancode''' de la touche en question. Tant que vous y êtes appuyez sur la plupart de touches de votre clavier pour voir s'il n'y a pas d'autre touche inconnue du noyau. Vérifiez aussi les touches après le verrouillage de la touche <key>Verr. F</key> (enfin c'est son nom sur mon clavier) : elle donne accès à une douzaines de '''touches''' parallèlement aux touches de fonction.


Il faut maintenant affecter un '''keycode''' à ce '''scancode'''. C'est ce que dit le message d'erreur renvoyé par le noyau.
Il faut maintenant affecter un '''keycode''' à ce '''scancode'''. C'est ce que dit le message d'erreur renvoyé par le noyau.
===== vérifier les '''keycodes''' disponibles =====
===== vérifier les '''keycodes''' disponibles =====
Un outils liste les '''keycodes''' utilisé : <code>getkeycodes</code>. Il renvoie une table qui liste les touches par '''scancode''' affiche leur '''keycodes''' associé.  
Un outil liste les '''keycodes''' utilisés : <b>getkeycodes</b>. Il renvoie une table qui liste les touches par '''scancode''' affiche leur '''keycodes''' associé.  


Pour afficher uniquement les '''keycodes''' libres, on peut utiliser la commande :  
Pour afficher uniquement les '''keycodes''' libres, on peut utiliser la commande :  
<code>root@localhost # IFS=$'\n ' ; for i in $(getkeycodes | grep "[0-9]:" | cut -d ":" -f 2) ; do echo $i ; done | sort | uniq > list.codes
<b>root@localhost # IFS=$'\n ' ; for i in $(getkeycodes | grep "[0-9]:" | cut -d ":" -f 2) ; do echo $i ; done | sort | uniq > list.codes
root@localhost # for ((i=80;i<=255;i++)) ; do if grep -E "^$i\$" list.codes > /dev/null ; then true ; else echo "$i" ; fi ; done > free.codes
root@localhost # for ((i=80;i<=255;i++)) ; do if grep -E "^$i\$" list.codes > /dev/null ; then true ; else echo "$i" ; fi ; done > free.codes
root@localhost # cat free.codes
root@localhost # cat free.codes
</code>
</b>


'''Note : ''' il semblerait que les versions récentes de setkeycodes ou du kernel ne permettent plus d'attribuer les keycodes supérieurs à 127, ce qui est plus que pénible.
'''Note : ''' il semblerait que les versions récentes de setkeycodes ou du kernel ne permettent plus d'attribuer les keycodes supérieurs à 127, ce qui est plus que pénible.
Ligne 51 : Ligne 51 :


Par exemple, pour affecter le '''keycode''' : ''200'' à la touche dont le '''scancode''' est ''e012'', il suffit de taper :  
Par exemple, pour affecter le '''keycode''' : ''200'' à la touche dont le '''scancode''' est ''e012'', il suffit de taper :  
<code multi>setkeycodes e012 200</code>
<code multi>setkeycodes e012 200</b>
On peut affecter plusieurs touches en même temps, par exemple :  
On peut affecter plusieurs touches en même temps, par exemple :  
<code multi>setkeycodes e012 200 e013 201 e017 215</code>
<code multi>setkeycodes e012 200 e013 201 e017 215</b>
Un fois ceci fait, vous pourrez espionner vos touches avec <code>xev</code> comme préconisé ci-dessus.
Un fois ceci fait, vous pourrez espionner vos touches avec <b>xev</b> comme préconisé ci-dessus.


'''PS:''' Pensez à ajouter à l'un de vos scripts de démarrage l'affectation des '''keycodes'''
'''PS:''' Pensez à ajouter à l'un de vos scripts de démarrage l'affectation des '''keycodes'''
Sur ma gentoo, j'ai créé le script <code>/etc/init.d/keycodes</code> :
Sur ma gentoo, j'ai créé le script <b>/etc/init.d/keycodes</b> :
<code>#!/sbin/runscript
<b>#!/sbin/runscript
# Distributed under the terms of the GNU General Public License v2 (and no other version)
# Distributed under the terms of the GNU General Public License v2 (and no other version)
#NB: Config is in /etc/conf.d/keycodes
#NB: Config is in /etc/conf.d/keycodes
Ligne 82 : Ligne 82 :
stop() {
stop() {
         ewarn "nothing to stop"
         ewarn "nothing to stop"
}</code>
}</b>
Je n'ai pas oublié de rendre ce script exécutable :  
Je n'ai pas oublié de rendre ce script exécutable :  
<code multi>root@localhost # chmod +x /etc/init.d/keycodes</code>
<code multi>root@localhost # chmod +x /etc/init.d/keycodes</b>
Et j'ai créé le fichier de configuration <code>/etc/conf.d/keycodes</code> :
Et j'ai créé le fichier de configuration <b>/etc/conf.d/keycodes</b> :
<code multi>KEYCODES="e011 227 e012 228 e013 229 e014 230 e03b 190 e03c 191 e03d 192 e03e 193 e03f 194 e040 195 e041 196 e042 197 e043 198 e044 199 e057 201 e058 202"
<code multi>KEYCODES="e011 227 e012 228 e013 229 e014 230 e03b 190 e03c 191 e03d 192 e03e 193 e03f 194 e040 195 e041 196 e042 197 e043 198 e044 199 e057 201 e058 202"
</code>
</b>
Ensuite j'ai demandé à ma gentoo de démarrer automatiquement ce fichier :  
Ensuite j'ai demandé à ma gentoo de démarrer automatiquement ce fichier :  
<code multi>root@localhost # rc-update add keycodes default</code>
<code multi>root@localhost # rc-update add keycodes default</b>


=== Nommer les touches ===
=== Nommer les touches ===


Pour que les touches soient reconnues, il faut associer leur <code>keycode</code> avec un nom de touche g énérique connu par Xfree. Ces noms de touches sont listés dans le fichier <code>/usr/X11R6/lib/X11/XKeysymDB</code> et commencent par <code>XF86</code>. Il faut ensuite créer le fichier <code>~/.xmodmaprc</code> dans lequel on va définir ces fameuses correspondances...Comme un exemple vaut mieux qu'un long discours, voici le contenu de mon <code>~/.xmodmaprc</code> :
Pour que les touches soient reconnues, il faut associer leur <b>keycode</b> avec un nom de touche g énérique connu par Xfree. Ces noms de touches sont listés dans le fichier <b>/usr/X11R6/lib/X11/XKeysymDB</b> (ou <b>/usr/share/X11/XKeysymDB</b> pour Debian) et commencent par <b>XF86</b>. Il faut ensuite créer le fichier <b>~/.xmodmaprc</b> dans lequel on va définir ces fameuses correspondances...Comme un exemple vaut mieux qu'un long discours, voici le contenu de mon <b>~/.xmodmaprc</b> :


<div class="code">keycode 234 = XF86Back<br /> keycode 233 = XF86Forward<br /> keycode 232 = XF86Stop<br /> keycode 231 = XF86Refresh<br /> keycode 229 = XF86Search<br /> keycode 230 = XF86Favorites<br /> keycode 178 = XF86VendorHome<br /> keycode 236 = XF86Mail<br /> keycode 160 = XF86AudioMute<br /> keycode 174 = XF86AudioLowerVolume<br /> keycode 176 = XF86AudioRaiseVolume<br /> keycode 162 = XF86AudioPlay<br /> keycode 164 = XF86AudioStop<br /> keycode 144 = XF86AudioPrev<br /> keycode 153 = XF86AudioNext<br /> keycode 237 = XF86Video<br /> keycode 235 = XF86OfficeHome<br /> keycode 161 = XF86Calculator<br /> keycode 222 = XF86PowerOff<br /> keycode 223 = XF86Sleep<br /> keycode 227 = XF86WakeUp</div>
<div class="code">keycode 234 = XF86Back<br /> keycode 233 = XF86Forward<br /> keycode 232 = XF86Stop<br /> keycode 231 = XF86Refresh<br /> keycode 229 = XF86Search<br /> keycode 230 = XF86Favorites<br /> keycode 178 = XF86VendorHome<br /> keycode 236 = XF86Mail<br /> keycode 160 = XF86AudioMute<br /> keycode 174 = XF86AudioLowerVolume<br /> keycode 176 = XF86AudioRaiseVolume<br /> keycode 162 = XF86AudioPlay<br /> keycode 164 = XF86AudioStop<br /> keycode 144 = XF86AudioPrev<br /> keycode 153 = XF86AudioNext<br /> keycode 237 = XF86Video<br /> keycode 235 = XF86OfficeHome<br /> keycode 161 = XF86Calculator<br /> keycode 222 = XF86PowerOff<br /> keycode 223 = XF86Sleep<br /> keycode 227 = XF86WakeUp</div>


En fonction des <code>keycode</code> que vous avez trouvé et des noms que vous souhaitez donner à vos touches, remplissez ce fichier avec cette syntaxe très simple.
En fonction des <b>keycode</b> que vous avez trouvé et des noms que vous souhaitez donner à vos touches, remplissez ce fichier avec cette syntaxe très simple.


<div class="note">L'attribution de ces noms est totalement arbitraire du moment qu'ils sont dans le fichier <code>/usr/X11R6/lib/X11/XKeysymDB</code>. Le choix de ces noms n'influera en rien sur les actions associées aux touches dans le futur. Une bonne chose est de choisir les noms qui se rapprochent le plus du dessin associé à la touche sur le clavier pour s'y retrouver...</div>
<div class="note">L'attribution de ces noms est totalement arbitraire du moment qu'ils sont dans le fichier <b>/usr/X11R6/lib/X11/XKeysymDB</b> (ou <b>/usr/share/X11/XKeysymDB</b> pour Debian). Le choix de ces noms n'influera en rien sur les actions associées aux touches dans le futur. Une bonne chose est de choisir les noms qui se rapprochent le plus du dessin associé à la touche sur le clavier pour s'y retrouver...</div>


Une fois cela fait, il faut taper la commande <code>xmodmap ~/.xmodmaprc</code> pour activer le nouveau mapping.
Une fois cela fait, il faut taper la commande <b>xmodmap ~/.xmodmaprc</b> pour activer le nouveau mapping.


==== Charger les attributions automatiquement sous KDE ====
==== Charger les attributions automatiquement sous KDE ====


Pour que cela prenne effet à chaque démarrage de KDE, placez le fichier suivant dans le répertoire <code>~/.kde/Autostart/</code>.
Pour que cela prenne effet à chaque démarrage de KDE, placez le fichier suivant dans le répertoire <b>~/.kde/Autostart/</b>.


<div class="code"><nowiki>#!/bin/sh</nowiki><br /> xmodmap ~/.xmodmaprc</div>
<div class="code"><nowiki>#!/bin/sh</nowiki><br /> xmodmap ~/.xmodmaprc</div>


Rendez ensuite ce script exécutable : <code> chmod +x ~/.kde/Autostart/clavier</code> (si vous avez appelé le fichier <code>clavier</code> bien entendu...)
Rendez ensuite ce script exécutable : <b> chmod +x ~/.kde/Autostart/clavier</b> (si vous avez appelé le fichier <b>clavier</b> bien entendu...)


== KDE est installé sur ma machine ==
== KDE est installé sur ma machine ==
Ligne 117 : Ligne 117 :
Une méthode simple pour attribuer des touches à des commandes est de créer un menu caché.
Une méthode simple pour attribuer des touches à des commandes est de créer un menu caché.


Pour cela, lancez <code>kmenuedit</code> ou <code>menudrake</code> (sous mandrake), ou encore sous mandriva 10.1 Kcontrol->Système->Touches spéciales du clavier. Créez un menu caché en mettant un point au début du nom de menu, par exemple : <code>.clavier</code> sera un menu caché.
Pour cela, lancez <b>kmenuedit</b> ou <b>menudrake</b> (sous Mandriva 2006 ou 2007), ou encore sous Mandriva 10.1 ''Kcontrol->Système->Touches spéciales du clavier''. Créez un menu caché en mettant un point au début du nom de menu, par exemple : <b>.clavier</b> sera un menu caché.


Vous pouvez maintenant créer des entrées de menu avec un nom et une commande associée, chacune de ces commandes pourra ensuite être attribuée à une touche ou à une combinaison de touches.
Vous pouvez maintenant créer des entrées de menu avec un nom et une commande associée, chacune de ces commandes pourra ensuite être attribuée à une touche ou à une combinaison de touches.
Ligne 123 : Ligne 123 :
<div class="note">Vous trouverez à la fin de cet article quelques commandes utiles de gestion de son par exemple, ou de certains logiciels.</div>
<div class="note">Vous trouverez à la fin de cet article quelques commandes utiles de gestion de son par exemple, ou de certains logiciels.</div>


Maintenant que vous avez créé les entrées, allez voir : "centre de controle kde -> Régionalisation & accessibilité -> raccourcis claviers -> raccourcis de commandes". Tout dépend de votre version de KDE, mais cela n'a pas beaucoup changé, vous devriez trouver cela en quelques secondes à peine. Vous avez maintenant tous vos menus, y compris votre menu caché. Pour chacune de entrées de menu, vous pouvez créer un raccourci personnalisé, et utiliser vos touches fraichement nommées ! Ça marche ! Qui a dit que les claviers multimédias ne sont pas compatibles avec linux ?
Maintenant que vous avez créé les entrées, allez voir : "Centre de controle kde -> Régionalisation & accessibilité -> Raccourcis claviers -> raccourcis de commandes". Tout dépend de votre version de KDE, mais cela n'a pas beaucoup changé, vous devriez trouver cela en quelques secondes à peine. Vous avez maintenant tous vos menus, y compris votre menu caché. Pour chacune de entrées de menu, vous pouvez créer un raccourci personnalisé, et utiliser vos touches fraichement nommées ! Ça marche ! Qui a dit que les claviers multimédias ne sont pas compatibles avec Linux ?


Une autre méthode utilisant KDE pour lancer une commande avec un raccourci clavier consiste à utiliser la fonction d'"Actions d'entrées" disponnible sous le versions les plus récentes de KDE. Pour ce faire allez dans :  
Une autre méthode utilisant KDE pour lancer une commande avec un raccourci clavier consiste à utiliser la fonction d'"Actions d'entrées" disponible sous le versions les plus récentes de KDE. Pour ce faire allez dans :  
Centre de configuration de KDE (<code>kcontrol</code>) > Régionalisation & accessibilité > Actions d'entrées.
Centre de configuration de KDE (<b>kcontrol</b>) > Régionalisation & accessibilité > Actions d'entrées.


Ensuite, cliquez sur le bouton "Nouveau groupe" et nommez-le "Clavier", par exemple.  
Ensuite, cliquez sur le bouton "Nouveau groupe" et nommez-le "Clavier", par exemple.  
Ligne 140 : Ligne 140 :
|- align="center"
|- align="center"
| Lecture-pause
| Lecture-pause
| <code>xmms --play-pause</code>
| <b>xmms --play-pause</b>
|- align="center"
|- align="center"
| STOP
| STOP
| <code>xmms --stop</code>
| <b>xmms --stop</b>
|- align="center"
|- align="center"
| Chanson précédente
| Chanson précédente
| <code>xmms --rew</code>
| <b>xmms --rew</b>
|- align="center"
|- align="center"
| Chanson suivante
| Chanson suivante
| <code>xmms --fwd</code>
| <b>xmms --fwd</b>
|- align="center"
|- align="center"
| Baisser le son
| Baisser le son
| <code>aumix -v-15</code> ici de 15%.
| <b>aumix -v-15</b> ici de 15%.
|- align="center"
|- align="center"
| Monter le son
| Monter le son
| <code>aumix -v+15</code> ici de 15%.
| <b>aumix -v+15</b> ici de 15%.
|- align="center"
|- align="center"
| Couper le son
| Couper le son
| <code>aumix -vn</code>
| <b>aumix -vn</b>
|- align="center"
|- align="center"
| Lancer kmail
| Lancer kmail
| <code>kmail</code>
| <b>kmail</b>
|- align="center"
|- align="center"
| Relever les mails dans kMail
| Relever les mails dans kMail
| <code>dcop kmail KMailIface checkMail</code>
| <b>dcop kmail KMailIface checkMail</b>
|- align="center"
|- align="center"
| Vérouiller l'écran
| Verrouiller l'écran
| <code>dcop kdesktop KScreensaverIface lock</code>
| <b>dcop kdesktop KScreensaverIface lock</b>
|- align="center"
|- align="center"
| Ejecter cdrom
| Ejecter cdrom
| <code>eject /dev/cdrom</code>
| <b>eject /dev/cdrom</b>
|- align="center"
|- align="center"
| Avaler cdrom
| Avaler cdrom
| <code>eject -t /dev/cdrom</code>
| <b>eject -t /dev/cdrom</b>
|- align="center"
|- align="center"
| Calculatrice
| Calculatrice
| <code>kcalc</code>
| <b>kcalc</b>
|- align="center"
|- align="center"
| Chercher un fichier
| Chercher un fichier
| <code>kfind</code>
| <b>kfind</b>
|- align="center"
|- align="center"
| Konqueror comme gestionnaire de fichiers
| Konqueror comme gestionnaire de fichiers
| <code>kfmclient openProfile filemanagement</code>
| <b>kfmclient openProfile filemanagement</b>
|- align="center"
|- align="center"
| Konqueror comme navigateur
| Konqueror comme navigateur
| <code>kfmclient openProfile webbrowsing</code>
| <b>kfmclient openProfile webbrowsing</b>
|- align="center"
|- align="center"
| Éxécuter une commande
| Exécuter une commande
| <code>dcop kdesktop KDesktopIface popupExecuteCommand</code>
| <b>dcop kdesktop KDesktopIface popupExecuteCommand</b>
|}
|}


Ligne 200 : Ligne 200 :
* A quel modèle X associe t-il notre clavier
* A quel modèle X associe t-il notre clavier


Pour la première, retournez votre clavier et lisez l'étiquette ;)<br /> Pour la deuxième, éditez le fichier <code>/usr/X11R6/lib/X11/xkb/rules/xfree86.lst</code>. S'il ne se trouve pas là, faites <code>locate *xkb*/xfree86.lst</code> dans un shell).
Pour la première, retournez votre clavier et lisez l'étiquette ;)<br /> Pour la deuxième, éditez le fichier <b>/usr/X11R6/lib/X11/xkb/rules/xfree86.lst</b>. S'il ne se trouve pas là, faites <b>locate *xkb*/xfree86.lst</b> dans un shell).


<div class="exemple">Au dos de mon clavier il est écrit : ''Logitech Internet Naviguator Keyboard''. Le modèle de X est donc ''logiink''.</div>
<div class="exemple">Au dos de mon clavier il est écrit : ''Logitech Internet Naviguator Keyboard''. Le modèle de X est donc ''logiink''.</div>


Maintenant on va insérer tous ces paramètres dans le fichier de configuration de X, pour ce faire : éditez en root le fichier <code>/etc/X11/XF86Config-4</code> (ou <code>XF86Config</code> selon votre version de X). Cherchez la section du clavier : ''Driver "keyboard"'' et insérez les paramètres :
Maintenant on va insérer tous ces paramètres dans le fichier de configuration de X, pour ce faire : éditez en root le fichier <b>/etc/X11/XF86Config-4</b> (ou <b>XF86Config</b> selon votre version de X). Cherchez la section du clavier : ''Driver "keyboard"'' et insérez les paramètres :


<div class="code">Section "InputDevice"<br />   Identifier "Generic Keyboard"<br />   Driver "keyboard"<br />   Option "CoreKeyboard"<br />   Option "XkbRules" "xfree86"<br />   Option "XkbModel" "'''logiink'''"<br />   Option "XkbLayout" "'''be'''"<br /> EndSection</div>
<div class="code">Section "InputDevice"<br />   Identifier "Generic Keyboard"<br />   Driver "keyboard"<br />   Option "CoreKeyboard"<br />   Option "XkbRules" "xfree86"<br />   Option "XkbModel" "'''logiink'''"<br />   Option "XkbLayout" "'''be'''"<br /> EndSection</div>


Enregistrez, relancez vos sessions si vous voulez que les changements soit appliqués immédiatement. La configuration de X est terminée.
Enregistrez, relancez vos sessions si vous voulez que les changements soit appliqués immédiatement. La configuration de X est terminée.
Ligne 212 : Ligne 212 :
=== Récupérer les KeyCodes de toutes les touches ===
=== Récupérer les KeyCodes de toutes les touches ===


Les KeyCodes sont les numéros des touches qui définissent les touches de votre clavier, parfois c'est sous forme de chaîne de caractères comme ici. C'est très utile parce que grâce à ça on ne doit pas deviner à quel numéro est associée telle touche. Éditez le fichier <code>/etc/X11/xkb/symbols/inet</code> (si le fichier ne se trouve pas là, essayez <code>locate *xkb*/inet</code>), et recherchez le modèle de votre clavier. Vous trouverez ainsi tous les KeyCodes des touches supplémentaires de votre clavier étendu.
Les KeyCodes sont les numéros des touches qui définissent les touches de votre clavier, parfois c'est sous forme de chaîne de caractères comme ici. C'est très utile parce que grâce à ça on ne doit pas deviner à quel numéro est associée telle touche. Éditez le fichier <b>/etc/X11/xkb/symbols/inet</b> (si le fichier ne se trouve pas là, essayez <b>locate *xkb*/inet</b>), et recherchez le modèle de votre clavier. Vous trouverez ainsi tous les KeyCodes des touches supplémentaires de votre clavier étendu.


<div class="aparte">Vous pouvez utiliser les touches pour des actions sous KDE, Gnome, Fluxbox, WindowMaker, etc...</div>
<div class="aparte">Vous pouvez utiliser les touches pour des actions sous [[KDE]], [[GNOME]], Fluxbox, [[Utiliser_WindowMaker|WindowMaker]], etc...</div>


=== Association des touches supplémentaires à une commande ===
=== Association des touches supplémentaires à une commande ===
Ligne 224 : Ligne 224 :
==== Configurer KeyLaunch ====
==== Configurer KeyLaunch ====


La configuration est très simple et très pratique : tout se fait dans <code>.keylaunchrc</code> que ''' vous devez créer''' dans votre dossier home. Il y a un exemple du fichier dans <code>/usr/share/doc/keylaunch/examples</code> (si vous avez installé le paquet Debian sinon c'est dans le dossier <code>debian</code> là où vous avez décompressé KeyLaunch).
La configuration est très simple et très pratique : tout se fait dans <b>.keylaunchrc</b> que ''' vous devez créer''' dans votre dossier home. Il y a un exemple du fichier dans <b>/usr/share/doc/keylaunch/examples</b> (si vous avez installé le paquet Debian sinon c'est dans le dossier <b>debian</b> là où vous avez décompressé KeyLaunch).


Voici, en français, comment personnaliser ce fichier :<br /> Une seule association par ligne, chaque association commence par : <code>key=</code> faites suivre ensuite par l'état des modificateurs. Insérez trois points si une simple pression sur la touche vous suffit. <code>key=...</code>. (Le premier point est le modificateur '''[<tt>Shift</tt>]''', activez-le en remplaçant le point par une astérisque (*). Le second point est le modificateur '''[<tt>Ctrl</tt>]''' et enfin le dernier est le modificateur '''[<tt>Alt</tt>]'''.) Et terminez enfin la ligne par la commande à exécuter précédée de ':'.
Voici, en français, comment personnaliser ce fichier :<br /> Une seule association par ligne, chaque association commence par : <b>key=</b> faites suivre ensuite par l'état des modificateurs. Insérez trois points si une simple pression sur la touche vous suffit. <b>key=...</b>. (Le premier point est le modificateur '''[<tt>Shift</tt>]''', activez-le en remplaçant le point par une astérisque (*). Le second point est le modificateur '''[<tt>Ctrl</tt>]''' et enfin le dernier est le modificateur '''[<tt>Alt</tt>]'''.) Et terminez enfin la ligne par la commande à exécuter précédée de ':'.


<div class="exemple">
<div class="exemple">
Ligne 267 : Ligne 267 :
|}
|}


Pour le reste, entrez dans une console et tapez <code>xmms --help</code>.
Pour le reste, entrez dans une console et tapez <b>xmms --help</b>.


==== Autre programme ====
==== Autre programme ====
Ligne 302 : Ligne 302 :
Vous pouvez également créer ce script que vous pouvez associer à la touche '''[<tt>Go</tt>]''', présente sur certains claviers Logitech. Il affiche simplement une boite de dialogue KDE, pour vous permettre d'entrez l'URL que Mozilla doit vous afficher :
Vous pouvez également créer ce script que vous pouvez associer à la touche '''[<tt>Go</tt>]''', présente sur certains claviers Logitech. Il affiche simplement une boite de dialogue KDE, pour vous permettre d'entrez l'URL que Mozilla doit vous afficher :


<div class="code"> #!/bin/bash<br /> # kwebgo<br /> file=$(kdialog --inputbox "Site Web :" "$@")<br /> if [ -n "$file" ]; then<br />   mozilla "$file"<br /> fi</div>
<div class="code"> #!/bin/bash<br /> # kwebgo<br /> file=$(kdialog --inputbox "Site Web :" "$@")<br /> if [ -n "$file" ]; then<br />   mozilla "$file"<br /> fi</div>


<code>kwebgo http://www.mozdex.com</code> ouvrira la boite de dialogue avec pour valeur par défaut : [http://www.mozdex.com/ http://www.mozdex.com].
<b>kwebgo http://www.mozdex.com</b> ouvrira la boite de dialogue avec pour valeur par défaut : [http://www.mozdex.com/ http://www.mozdex.com].


<div class="note">Changez <code>mozilla "$file"</code> en <code>konqueror "$file"</code>, et vous utiliserez ainsi Konqueror au lieu de Mozilla.</div>
<div class="note">Changez <b>mozilla "$file"</b> en <b>konqueror "$file"</b>, et vous utiliserez ainsi Konqueror au lieu de Mozilla.</div>


=== Comment associer une touche à une combinaison de touches ? ===
=== Comment associer une touche à une combinaison de touches ? ===
Ligne 330 : Ligne 330 :
Le XBindKeys ne fonctionne que si le programme n'applique pas un "grab" sur les périphériques (i.e les capturer pour lui tout seul). Il faut donc lancer Diablo II en fenêtré tout en restant en plein-écran. Explication : une application lancée en fenêtrée, sans bordure, sans fenêtre et avec une résolution d'écran correspondant à la taille de la fenêtre, ça revient finalement à un plein écran sans capture des périphériques d'entrée.
Le XBindKeys ne fonctionne que si le programme n'applique pas un "grab" sur les périphériques (i.e les capturer pour lui tout seul). Il faut donc lancer Diablo II en fenêtré tout en restant en plein-écran. Explication : une application lancée en fenêtrée, sans bordure, sans fenêtre et avec une résolution d'écran correspondant à la taille de la fenêtre, ça revient finalement à un plein écran sans capture des périphériques d'entrée.


Nous allons créer un script qui va lancer Diablo II sur la seconde session graphique, en fenêtré, et en 800x600 (de manière à ce que la fenêtre prenne tout l'écran). Pour cela il faut d'abord configurer X pour qu'il travail toujours en 800x600 lorsqu'il est en 16 bits de couleurs. (En supposant ici que vous travaillez habituellement en 24 bits de couleurs. Si vous travaillez en 16 bits, modifiez le 24 bits). Éditez le fichier <code>/etc/X11/XF86Config-4</code> (ou <code>XF86Config</code> selon votre version de X) ; cherchez la section <code>Screen</code> et trouvez ensuite la sous-section <code>Display</code> dont la <code>Depth</code> (profondeur des couleurs) est égale à 16. Modifiez les modes pour n'avoir au maximum qu'une résolution de 800x600. La première étant celle utilisée par défaut.
Nous allons créer un script qui va lancer Diablo II sur la seconde session graphique, en fenêtré, et en 800x600 (de manière à ce que la fenêtre prenne tout l'écran). Pour cela il faut d'abord configurer X pour qu'il travail toujours en 800x600 lorsqu'il est en 16 bits de couleurs. (En supposant ici que vous travaillez habituellement en 24 bits de couleurs. Si vous travaillez en 16 bits, modifiez le 24 bits). Éditez le fichier <b>/etc/X11/XF86Config-4</b> (ou <b>XF86Config</b> selon votre version de X) ; cherchez la section <b>Screen</b> et trouvez ensuite la sous-section <b>Display</b> dont la <b>Depth</b> (profondeur des couleurs) est égale à 16. Modifiez les modes pour n'avoir au maximum qu'une résolution de 800x600. La première étant celle utilisée par défaut.


<div class="code">SubSection "Display"<br />   Depth 16<br />   Modes "800x600" "640x480"<br /> EndSubSection</div>
<div class="code">SubSection "Display"<br />   Depth 16<br />   Modes "800x600" "640x480"<br /> EndSubSection</div>


De cette façon, X activera toujours la 800x600 lorsqu'il sera en 16 bits de couleurs.
De cette façon, X activera toujours la 800x600 lorsqu'il sera en 16 bits de couleurs.
Ligne 340 : Ligne 340 :
Nous allons maintenant faire le petit script qui lancera Diablo II sur une nouvelle session.
Nous allons maintenant faire le petit script qui lancera Diablo II sur une nouvelle session.


<div class="code"><nowiki>#!/bin/bash</nowiki><br /><br /> mv $HOME/.xinitrc $HOME/.xinitrc-diablo2-old<br /><br /> echo "xsetroot -solid black -cursor_name left_ptr<br /> #xset m 50/10 6 # accélération souris xset m <accel> <seuil><br /> numlockx on # vérouillage pavé num<br /> setxkbmap -layout us<br /> cd /usr/local/games/Diablo\ II<br /> xbindkeys -f $HOME/.diablo2/xbindkeys.config -X :1<br /> wine Game.exe -- $@ "> /tmp/diablo2.logs<br /> killall -9 xbindkeys wine wineserver" > $HOME/.xinitrc<br /><br /> xinit -- :1 -depth 16<br /><br /> rm -f $HOME/.xinitrc<br /> mv $HOME/.xinitrc-diablo2-old $HOME/.xinitrc</div><div class="note"><code>setxkbmap -layout us</code> nous sert à faire passer le clavier en QWERTY original. Ce n'est pas indispensable mais préférable pour Diablo II qui ne comprend absolument rien aux touches numériques situées au dessus de la zone des lettres.</div><div class="aparte">Dans ce script, le NumLock est activé par numlockx : vérifiez que vous l'avez installé !</div>
<div class="code"><nowiki>#!/bin/bash</nowiki><br /><br /> mv $HOME/.xinitrc $HOME/.xinitrc-diablo2-old<br /><br /> echo "xsetroot -solid black -cursor_name left_ptr<br /> #xset m 50/10 6 # accélération souris xset m <accel> <seuil><br /> numlockx on # vérouillage pavé num<br /> setxkbmap -layout us<br /> cd /usr/local/games/Diablo\ II<br /> xbindkeys -f $HOME/.diablo2/xbindkeys.config -X :1<br /> wine Game.exe -- $@ "> /tmp/diablo2.logs<br /> killall -9 xbindkeys wine wineserver" > $HOME/.xinitrc<br /><br /> xinit -- :1 -depth 16<br /><br /> rm -f $HOME/.xinitrc<br /> mv $HOME/.xinitrc-diablo2-old $HOME/.xinitrc</div><div class="note"><b>setxkbmap -layout us</b> nous sert à faire passer le clavier en QWERTY original. Ce n'est pas indispensable mais préférable pour Diablo II qui ne comprend absolument rien aux touches numériques situées au dessus de la zone des lettres.</div><div class="aparte">Dans ce script, le NumLock est activé par numlockx : vérifiez que vous l'avez installé !</div>


Comme vous voyez, la commande de XBindKeys est déjà insérée, les explications arrivent...
Comme vous voyez, la commande de XBindKeys est déjà insérée, les explications arrivent...
Ligne 348 : Ligne 348 :
Nous allons aborder ici l'utilisation de XBindKeys dans Diablo II. Comme vous le savez déjà, la roulette de la souris dans Diablo II sert à faire défiler les aptitudes. On va améliorer ça : la roulette vers le haut enclenchera une aptitude et remetra directement celle par défaut, celle du bas une autre aptitude et le clic au milieu encore une autre. Très pratique ;)
Nous allons aborder ici l'utilisation de XBindKeys dans Diablo II. Comme vous le savez déjà, la roulette de la souris dans Diablo II sert à faire défiler les aptitudes. On va améliorer ça : la roulette vers le haut enclenchera une aptitude et remetra directement celle par défaut, celle du bas une autre aptitude et le clic au milieu encore une autre. Très pratique ;)


On va tout d'abord positionner tous les fichiers nécessaires à notre opération dans un dossier <code>.diablo2</code> dans le répertoire home. Créez donc le dossier <code>$HOME/.diablo2</code> et mettez-y ce fichier de configuration XBindKeys :
On va tout d'abord positionner tous les fichiers nécessaires à notre opération dans un dossier <b>.diablo2</b> dans le répertoire home. Créez donc le dossier <b>$HOME/.diablo2</b> et mettez-y ce fichier de configuration XBindKeys :


<div class="code"><nowiki># Aptitude 1</nowiki><br /> "~/.diablo2/aptitude.sh 6"<br />  b:4<br /><br /> # Aptitude 1-Copy<br /> "~/.diablo2/aptitude.sh 6"<br />  control + b:4<br /><br /> # Aptitude 2<br /> "~/.diablo2/aptitude.sh 7"<br />  b:5<br /><br /> # Aptitude 2-Copy<br /> "~/.diablo2/aptitude.sh 7"<br />  control + b:5<br /><br /> # Aptitude 3<br /> "~/.diablo2/aptitude.sh 8 0,09"<br />  b:2<br /><br /> # Aptitude 3-Copy<br /> "~/.diablo2/aptitude.sh 8 0,09"<br />  control + b:2<br /><br /> # Extended keyboard<br /> "~/.diablo2/message.sh '***à bout de souffle*** on pourrait pas... faire un petit saut... en ville ? :) Je vous paye le TP :D'"<br />  XF86HomePage<br /><br /> "aumix -v+10"<br />  XF86AudioRaiseVolume<br /><br /> "aumix -v-10"<br />  XF86AudioLowerVolume<br /><br /> "mute"<br />  XF86AudioMute</div><div class="warning">Faites attention au deuxième argument donné à aptitude.sh, ce sont des nombres décimaux et le séparateur est une virgule. Ça ne fonctionnera pas si vous mettez un point ! (dû à la commande sleep)</div><div class="aparte">Comme vous le voyez, j'ai remis les mêmes associations deux fois. Une fois avec le '''[<tt>Ctrl</tt>]''' enfoncé, et une fois sans. Étant donné qu'il faut appuyer sur la touche '''[<tt>Ctrl</tt>]''' pour courir.</div>
<div class="code"><nowiki># Aptitude 1</nowiki><br /> "~/.diablo2/aptitude.sh 6"<br /> b:4<br /><br /> # Aptitude 1-Copy<br /> "~/.diablo2/aptitude.sh 6"<br /> control + b:4<br /><br /> # Aptitude 2<br /> "~/.diablo2/aptitude.sh 7"<br /> b:5<br /><br /> # Aptitude 2-Copy<br /> "~/.diablo2/aptitude.sh 7"<br /> control + b:5<br /><br /> # Aptitude 3<br /> "~/.diablo2/aptitude.sh 8 0,09"<br /> b:2<br /><br /> # Aptitude 3-Copy<br /> "~/.diablo2/aptitude.sh 8 0,09"<br /> control + b:2<br /><br /> # Extended keyboard<br /> "~/.diablo2/message.sh '***à bout de souffle*** on pourrait pas... faire un petit saut... en ville ? :) Je vous paye le TP :D'"<br /> XF86HomePage<br /><br /> "aumix -v+10"<br /> XF86AudioRaiseVolume<br /><br /> "aumix -v-10"<br /> XF86AudioLowerVolume<br /><br /> "mute"<br /> XF86AudioMute</div><div class="warning">Faites attention au deuxième argument donné à aptitude.sh, ce sont des nombres décimaux et le séparateur est une virgule. Ça ne fonctionnera pas si vous mettez un point ! (dû à la commande sleep)</div><div class="aparte">Comme vous le voyez, j'ai remis les mêmes associations deux fois. Une fois avec le '''[<tt>Ctrl</tt>]''' enfoncé, et une fois sans. Étant donné qu'il faut appuyer sur la touche '''[<tt>Ctrl</tt>]''' pour courir.</div>


Mais quel est cet étrange script aptitude.sh ? Et message.sh ? La suite, par ici...
Mais quel est cet étrange script aptitude.sh ? Et message.sh ? La suite, par ici...
Ligne 364 : Ligne 364 :
Maintenant voyons voir l'autre script :
Maintenant voyons voir l'autre script :


<div class="code"><nowiki>#!/bin/bash</nowiki><br /> echo "KeyStr $1" > /tmp/macrokeys<br /> xmacroplay :1 < /tmp/macrokeys<br /> test -z "$2" || sleep $2<br /> echo "ButtonPress 3<br /> ButtonRelease 3<br /> KeyStr 5" > /tmp/macrokeys<br /> xmacroplay :1 < /tmp/macrokeys</div><div class="note">Changez le <code>ButtonPress 3</code> et <code>ButtonRelease 3</code> en <code>ButtonPress 1</code> et <code>ButtonRelease 1</code> si vous désirez que le script fasse un clic gauche au lieu d'un clic droite.</div>
<div class="code"><nowiki>#!/bin/bash</nowiki><br /> echo "KeyStr $1" > /tmp/macrokeys<br /> xmacroplay :1 < /tmp/macrokeys<br /> test -z "$2" || sleep $2<br /> echo "ButtonPress 3<br /> ButtonRelease 3<br /> KeyStr 5" > /tmp/macrokeys<br /> xmacroplay :1 < /tmp/macrokeys</div><div class="note">Changez le <b>ButtonPress 3</b> et <b>ButtonRelease 3</b> en <b>ButtonPress 1</b> et <b>ButtonRelease 1</b> si vous désirez que le script fasse un clic gauche au lieu d'un clic droite.</div>


5... 6... Vous comprenez maintenant pourquoi c'est plus difficile en clavier français ou belge.
5... 6... Vous comprenez maintenant pourquoi c'est plus difficile en clavier français ou belge.
Ligne 378 : Ligne 378 :
Bon amusement ;)
Bon amusement ;)


<div class="note">Si vous avez bien tout suivi : quand vous ferez défiler la roulette vers le haut, votre aptitude en '''[<tt>5</tt>]''' va commuter vers la '''[<tt>7</tt>]''' et l'actionner, et reviendra immédiatement après en '''[<tt>5</tt>]'''. <br /> Appuyez sur la touche '''[<tt>MyHome</tt>]''' pour avoir un message "rapide" qui n'a de rapide que le nom...</div><div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Thomas MUYL --maston28 le 19/02/2004.</div>
<div class="note">Si vous avez bien tout suivi : quand vous ferez défiler la roulette vers le haut, votre aptitude en '''[<tt>5</tt>]''' va commuter vers la '''[<tt>7</tt>]''' et l'actionner, et reviendra immédiatement après en '''[<tt>5</tt>]'''. <br /> Appuyez sur la touche '''[<tt>MyHome</tt>]''' pour avoir un message "rapide" qui n'a de rapide que le nom...</div>
 
 
<br/>
<br/>
'''<b>[[Hardware-index|@ Retour à la rubrique Matériel]]</b>'''
<br/>
 
 
 
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Thomas MUYL --maston28 le 19/02/2004.</div>


= Copyright =
= Copyright =
Copyright &copy; 19/02/2004, Jean-Thomas MUYL --maston28
Copyright &copy; 19/02/2004, Jean-Thomas MUYL --maston28
{{CC-BY-NC-SA}}
{{CC-BY-NC-SA}}
{{Matériel}}

Dernière version du 29 décembre 2023 à 10:16

Configurer les touches de son clavier multimédia

Configurer les touches de son clavier multimédia

Comme moi, vous vous êtes peut-être acheté un clavier confortable, plus adapté aux longues heures de coding ou d'irc que votre vieux tromblon 105 touches que vous avez eu avec votre premier 386. Et, oh comble du luxe, il y a sur ce clavier plein de petits boutons rigolos pour contrôler le volume, changer de chanson, mettre la machine en veille ainsi que plein d'autres choses du genre, parfaitement inutiles donc totalement indispensables...

Les drivers pour votre manchot favori ne vous seront sans-doute pas fournis avec la bête, nous allons donc voir ensemble comment associer à chacune de ces touches l'exécution d'une commande.

Préliminaires

Espionnage des touches incriminées

Tout d'abord, il va nous falloir espionner le clavier pour savoir ce qu'il renvoie quand vous appuyez sur les touches bonus.

Pour cela, il faut utiliser le programme xev, qui se trouvait sur d'anciennes versions de Mandriva dans le paquet X11R6-contrib et s'installe maintenant à partir d'un paquetage spécifique xev. Dans la 2007, si vous avez correctement configuré les sources urpmi, il vous suffit de taper ceci en tant que root :

urpmi xev

Lorsque tout est installé, lancez le programme xev. En appuyant sur les touches, vous devriez obtenir quelque chose ressemblant à ceci :

[root@mastonsbox maston28]# xev
KeyRelease event, serial 27, synthetic NO, window 0x3400001,
root 0x48, subw 0x0, time 7029077, (249,-81), root:(252,517),
state 0x0, keycode 233 (keysym 0x1008ff27, XF86Forward), same_screen YES,
XLookupString gives 0 bytes: ""

Le champ qui nous intéresse ici est le champ keycode. Par exemple, la touche que j'ai ici espionnée renvoie la valeur keycode 233.

Répétez cette opération pour chacune des touches spéciales, et notez quelque part la valeur de chacune de ces touches.

Si certaines touches ne semblent rien renvoyer, vérifiez dans le fichier /usr/X11R6/lib/X11/xkb/keycodes/xfree86 (ou /usr/share/X11/xkb/keycodes/xfree86) que vous avez ceci :
xkb_keycodes "basic" {

minimum= 8;
maximum= 255;

En effet, il arrive parfois que les valeurs soient plus petites, et donc que le programme ne scanne pas sur toute la plage possible.

xev ne réagit pas à vos touches

Il arrive fréquemment que xev ne réagisse pas à l'appuie sur certaines touches des claviers multimédia. C'est, la plupart du temps, du au fait que le kernel n'a pas connaissance de ces touches. Mais il existe une solution !

vérifier que le kernel est capable de gérer une touche

Dans un terminal (attention, il faut utiliser un vrai terminal, pas un terminal dans X), tapez : tail -f /var/log/messages Puis appuyez sur la touche qu'xev ne reconnaît pas, vous devriez voir apparaître quelque chose du genre : Feb 7 16:13:08 localhost atkbd.c: Use 'setkeycodes e012 <keyb>' to make it known. Ce qui nous intéresse, c'est la valeur annoncée : e012. C'est le scancode de la touche en question. Tant que vous y êtes appuyez sur la plupart de touches de votre clavier pour voir s'il n'y a pas d'autre touche inconnue du noyau. Vérifiez aussi les touches après le verrouillage de la touche <key>Verr. F</key> (enfin c'est son nom sur mon clavier) : elle donne accès à une douzaines de touches parallèlement aux touches de fonction.

Il faut maintenant affecter un keycode à ce scancode. C'est ce que dit le message d'erreur renvoyé par le noyau.

vérifier les keycodes disponibles

Un outil liste les keycodes utilisés : getkeycodes. Il renvoie une table qui liste les touches par scancode affiche leur keycodes associé.

Pour afficher uniquement les keycodes libres, on peut utiliser la commande : root@localhost # IFS=$'\n ' ; for i in $(getkeycodes | grep "[0-9]:" | cut -d ":" -f 2) ; do echo $i ; done | sort | uniq > list.codes root@localhost # for ((i=80;i<=255;i++)) ; do if grep -E "^$i\$" list.codes > /dev/null ; then true ; else echo "$i" ; fi ; done > free.codes root@localhost # cat free.codes

Note : il semblerait que les versions récentes de setkeycodes ou du kernel ne permettent plus d'attribuer les keycodes supérieurs à 127, ce qui est plus que pénible.

affectation d'un keycode par scancode

Pour chaque scancode trouvé aux étapes précédantes, vous devez affecter un keycode libre (trouvé à l'étape précédante).

Par exemple, pour affecter le keycode : 200 à la touche dont le scancode est e012, il suffit de taper : setkeycodes e012 200 On peut affecter plusieurs touches en même temps, par exemple : setkeycodes e012 200 e013 201 e017 215 Un fois ceci fait, vous pourrez espionner vos touches avec xev comme préconisé ci-dessus.

PS: Pensez à ajouter à l'un de vos scripts de démarrage l'affectation des keycodes Sur ma gentoo, j'ai créé le script /etc/init.d/keycodes : #!/sbin/runscript

  1. Distributed under the terms of the GNU General Public License v2 (and no other version)
  2. NB: Config is in /etc/conf.d/keycodes

depend() {

       need localmount

}

checkconfig() {

       if [ -z "$KEYCODES" ] ; then
               eerror "You need to setup KEYCODES in /etc/conf.d/keycodes first"
               return 1
       fi

}

start() {

       checkconfig || return 1
       ebegin "Setting specific keycodes"
               setkeycodes $KEYCODES
       eend ${?}

}

stop() {

       ewarn "nothing to stop"

} Je n'ai pas oublié de rendre ce script exécutable : root@localhost # chmod +x /etc/init.d/keycodes Et j'ai créé le fichier de configuration /etc/conf.d/keycodes : KEYCODES="e011 227 e012 228 e013 229 e014 230 e03b 190 e03c 191 e03d 192 e03e 193 e03f 194 e040 195 e041 196 e042 197 e043 198 e044 199 e057 201 e058 202" Ensuite j'ai demandé à ma gentoo de démarrer automatiquement ce fichier : root@localhost # rc-update add keycodes default

Nommer les touches

Pour que les touches soient reconnues, il faut associer leur keycode avec un nom de touche g énérique connu par Xfree. Ces noms de touches sont listés dans le fichier /usr/X11R6/lib/X11/XKeysymDB (ou /usr/share/X11/XKeysymDB pour Debian) et commencent par XF86. Il faut ensuite créer le fichier ~/.xmodmaprc dans lequel on va définir ces fameuses correspondances...Comme un exemple vaut mieux qu'un long discours, voici le contenu de mon ~/.xmodmaprc :

keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode 232 = XF86Stop
keycode 231 = XF86Refresh
keycode 229 = XF86Search
keycode 230 = XF86Favorites
keycode 178 = XF86VendorHome
keycode 236 = XF86Mail
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 237 = XF86Video
keycode 235 = XF86OfficeHome
keycode 161 = XF86Calculator
keycode 222 = XF86PowerOff
keycode 223 = XF86Sleep
keycode 227 = XF86WakeUp

En fonction des keycode que vous avez trouvé et des noms que vous souhaitez donner à vos touches, remplissez ce fichier avec cette syntaxe très simple.

L'attribution de ces noms est totalement arbitraire du moment qu'ils sont dans le fichier /usr/X11R6/lib/X11/XKeysymDB (ou /usr/share/X11/XKeysymDB pour Debian). Le choix de ces noms n'influera en rien sur les actions associées aux touches dans le futur. Une bonne chose est de choisir les noms qui se rapprochent le plus du dessin associé à la touche sur le clavier pour s'y retrouver...

Une fois cela fait, il faut taper la commande xmodmap ~/.xmodmaprc pour activer le nouveau mapping.

Charger les attributions automatiquement sous KDE

Pour que cela prenne effet à chaque démarrage de KDE, placez le fichier suivant dans le répertoire ~/.kde/Autostart/.

#!/bin/sh
xmodmap ~/.xmodmaprc

Rendez ensuite ce script exécutable : chmod +x ~/.kde/Autostart/clavier (si vous avez appelé le fichier clavier bien entendu...)

KDE est installé sur ma machine

Attribuer des commandes aux touches

Une méthode simple pour attribuer des touches à des commandes est de créer un menu caché.

Pour cela, lancez kmenuedit ou menudrake (sous Mandriva 2006 ou 2007), ou encore sous Mandriva 10.1 Kcontrol->Système->Touches spéciales du clavier. Créez un menu caché en mettant un point au début du nom de menu, par exemple : .clavier sera un menu caché.

Vous pouvez maintenant créer des entrées de menu avec un nom et une commande associée, chacune de ces commandes pourra ensuite être attribuée à une touche ou à une combinaison de touches.

Vous trouverez à la fin de cet article quelques commandes utiles de gestion de son par exemple, ou de certains logiciels.

Maintenant que vous avez créé les entrées, allez voir : "Centre de controle kde -> Régionalisation & accessibilité -> Raccourcis claviers -> raccourcis de commandes". Tout dépend de votre version de KDE, mais cela n'a pas beaucoup changé, vous devriez trouver cela en quelques secondes à peine. Vous avez maintenant tous vos menus, y compris votre menu caché. Pour chacune de entrées de menu, vous pouvez créer un raccourci personnalisé, et utiliser vos touches fraichement nommées ! Ça marche ! Qui a dit que les claviers multimédias ne sont pas compatibles avec Linux ?

Une autre méthode utilisant KDE pour lancer une commande avec un raccourci clavier consiste à utiliser la fonction d'"Actions d'entrées" disponible sous le versions les plus récentes de KDE. Pour ce faire allez dans : Centre de configuration de KDE (kcontrol) > Régionalisation & accessibilité > Actions d'entrées.

Ensuite, cliquez sur le bouton "Nouveau groupe" et nommez-le "Clavier", par exemple.

Cliquez sur le nom du goupe dans la liste de droite puis cliquez sur "Nouvelle action". Nommez-la comme vous le désirez et choisissez "Raccourci clavier -> Commande / URL (simple)" dans la liste déroulante "Type d'action : ". Vous pouvez dès à présent paramétrer le raccourci que vous voulez utliser et la commande à lancer dans les onglets "Raccourci clavier" et "Paramètres de la commande / URL". Il convient de répéter cette dernière procédure pour chaque commande à lancer.

Liste de commandes utilisables

Action Commande
Lecture-pause xmms --play-pause
STOP xmms --stop
Chanson précédente xmms --rew
Chanson suivante xmms --fwd
Baisser le son aumix -v-15 ici de 15%.
Monter le son aumix -v+15 ici de 15%.
Couper le son aumix -vn
Lancer kmail kmail
Relever les mails dans kMail dcop kmail KMailIface checkMail
Verrouiller l'écran dcop kdesktop KScreensaverIface lock
Ejecter cdrom eject /dev/cdrom
Avaler cdrom eject -t /dev/cdrom
Calculatrice kcalc
Chercher un fichier kfind
Konqueror comme gestionnaire de fichiers kfmclient openProfile filemanagement
Konqueror comme navigateur kfmclient openProfile webbrowsing
Exécuter une commande dcop kdesktop KDesktopIface popupExecuteCommand

KDE n'est pas installé sur ma machine

Configurer son clavier sous X

Nous allons commencer par configurer notre clavier sous X : c'est-à-dire que nous allons faire en sorte que X sache quel modèle de clavier nous possédons. Pour cela, nous avons besoin de deux informations :

  • Quel clavier nous possédons
  • A quel modèle X associe t-il notre clavier

Pour la première, retournez votre clavier et lisez l'étiquette ;)
Pour la deuxième, éditez le fichier /usr/X11R6/lib/X11/xkb/rules/xfree86.lst. S'il ne se trouve pas là, faites locate *xkb*/xfree86.lst dans un shell).

Au dos de mon clavier il est écrit : Logitech Internet Naviguator Keyboard. Le modèle de X est donc logiink.

Maintenant on va insérer tous ces paramètres dans le fichier de configuration de X, pour ce faire : éditez en root le fichier /etc/X11/XF86Config-4 (ou XF86Config selon votre version de X). Cherchez la section du clavier : Driver "keyboard" et insérez les paramètres :

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "logiink"
Option "XkbLayout" "be"
EndSection

Enregistrez, relancez vos sessions si vous voulez que les changements soit appliqués immédiatement. La configuration de X est terminée.

Récupérer les KeyCodes de toutes les touches

Les KeyCodes sont les numéros des touches qui définissent les touches de votre clavier, parfois c'est sous forme de chaîne de caractères comme ici. C'est très utile parce que grâce à ça on ne doit pas deviner à quel numéro est associée telle touche. Éditez le fichier /etc/X11/xkb/symbols/inet (si le fichier ne se trouve pas là, essayez locate *xkb*/inet), et recherchez le modèle de votre clavier. Vous trouverez ainsi tous les KeyCodes des touches supplémentaires de votre clavier étendu.

Vous pouvez utiliser les touches pour des actions sous KDE, GNOME, Fluxbox, WindowMaker, etc...

Association des touches supplémentaires à une commande

Installation de KeyLaunch

Associer une touche à une commande est chose facile si l'on utilise Lineak ou KHotKeys, je vous propose ici encore une autre méthode un peu moins évidente mais beaucoup plus légère que les autres. Vous aurez seulement besoin de KeyLaunch (68K). Sur Debian c'est le paquet keylaunch, pour Mandrake et RedHat : je n'ai pas trouvé le paquet (désolé) et pour ceux qui veulent compiler c'est par ici. (11k)

Configurer KeyLaunch

La configuration est très simple et très pratique : tout se fait dans .keylaunchrc que vous devez créer dans votre dossier home. Il y a un exemple du fichier dans /usr/share/doc/keylaunch/examples (si vous avez installé le paquet Debian sinon c'est dans le dossier debian là où vous avez décompressé KeyLaunch).

Voici, en français, comment personnaliser ce fichier :
Une seule association par ligne, chaque association commence par : key= faites suivre ensuite par l'état des modificateurs. Insérez trois points si une simple pression sur la touche vous suffit. key=.... (Le premier point est le modificateur [Shift], activez-le en remplaçant le point par une astérisque (*). Le second point est le modificateur [Ctrl] et enfin le dernier est le modificateur [Alt].) Et terminez enfin la ligne par la commande à exécuter précédée de ':'.

Et comme un bon exemple vaut mieux qu'un long discours :

key=...XF86AudioMedia:xmms
key=.*.XF86AudioMedia:gmplayer

Cet exemple-ci fait en sorte que lorsque vous appuyez sur la touche [Media] du clavier : il ouvre XMMS. Cependant, si vous appuyez simultanément sur [Alt] et [Media], KeyLaunch lancera GMPlayer.

Cette exemple est destiné à un clavier Logitech Internet Navigator, adaptez le fichier à vos besoins grâce à la liste des touches à laquelle j'ai fait référence ci-dessus, dans la section KeyCodes.

Aide pour les commandes

Voici une petite aide pour savoir quels sont les commandes qu'il faut mettre pour réaliser telle ou telle action. Demandez sur le forum si cette aide est insuffisante.

XMMS

Démarrer XMMS xmms
Démarrer la musique xmms --play
Mettre en pause xmms --pause
Basculement lecture/pause xmms --play-pause
Arrêter xmms --stop
Piste suivante xmms --fwd
Piste précédente xmms --rew

Pour le reste, entrez dans une console et tapez xmms --help.

Autre programme

Couper le son mute
Noatun noatun
La calculatride de KDE kcalc
Mozilla mozilla
Mozilla Mail mozilla -mail
KMail kmail --check
Rechercher kfind
Augmenter le volume de 10% aumix -v+10
Diminuer le volume de 10% aumix -v-10

Vous pouvez également créer ce script que vous pouvez associer à la touche [Go], présente sur certains claviers Logitech. Il affiche simplement une boite de dialogue KDE, pour vous permettre d'entrez l'URL que Mozilla doit vous afficher :

#!/bin/bash
# kwebgo
file=$(kdialog --inputbox "Site Web :" "$@")
if [ -n "$file" ]; then
mozilla "$file"
fi

kwebgo http://www.mozdex.com ouvrira la boite de dialogue avec pour valeur par défaut : http://www.mozdex.com.

Changez mozilla "$file" en konqueror "$file", et vous utiliserez ainsi Konqueror au lieu de Mozilla.

Comment associer une touche à une combinaison de touches ?

Voici comment associer un clic ou une pression sur une touche à une combinaison de touches et d'actions à la souris grâce à xbindkeys et xmacroplay.

XBindKeys

XBindKeys est un programme qui permet d'associer une commande à une combinaison de touches ou de clics. Vous devez pour cela installer XBindKeys (xbindkeys sur Debian (152K)).

XMacro

XMacro est un programme capable d'enregistrer vos actions de souris et de clavier, pour ensuite les reproduire. Remarquez que l'on ne fera que produire des actions. Cliquez ici pour le télécharger (paquet xmacro sur Debian (112K)).

L'exemple sur Diablo II

Le mieux c'est de montrer en pratique ce que l'on peut faire avec tout ça avec Diablo II.

Je n'aborderai pas l'émulation ici. Merci de ne pas m'écrire à propos de ce jeu.

Configurer X pour Diablo II

Le XBindKeys ne fonctionne que si le programme n'applique pas un "grab" sur les périphériques (i.e les capturer pour lui tout seul). Il faut donc lancer Diablo II en fenêtré tout en restant en plein-écran. Explication : une application lancée en fenêtrée, sans bordure, sans fenêtre et avec une résolution d'écran correspondant à la taille de la fenêtre, ça revient finalement à un plein écran sans capture des périphériques d'entrée.

Nous allons créer un script qui va lancer Diablo II sur la seconde session graphique, en fenêtré, et en 800x600 (de manière à ce que la fenêtre prenne tout l'écran). Pour cela il faut d'abord configurer X pour qu'il travail toujours en 800x600 lorsqu'il est en 16 bits de couleurs. (En supposant ici que vous travaillez habituellement en 24 bits de couleurs. Si vous travaillez en 16 bits, modifiez le 24 bits). Éditez le fichier /etc/X11/XF86Config-4 (ou XF86Config selon votre version de X) ; cherchez la section Screen et trouvez ensuite la sous-section Display dont la Depth (profondeur des couleurs) est égale à 16. Modifiez les modes pour n'avoir au maximum qu'une résolution de 800x600. La première étant celle utilisée par défaut.

SubSection "Display"
Depth 16
Modes "800x600" "640x480"
EndSubSection

De cette façon, X activera toujours la 800x600 lorsqu'il sera en 16 bits de couleurs.

Configurer une commande Diablo II

Nous allons maintenant faire le petit script qui lancera Diablo II sur une nouvelle session.

#!/bin/bash

mv $HOME/.xinitrc $HOME/.xinitrc-diablo2-old

echo "xsetroot -solid black -cursor_name left_ptr
#xset m 50/10 6 # accélération souris xset m <accel> <seuil>
numlockx on # vérouillage pavé num
setxkbmap -layout us
cd /usr/local/games/Diablo\ II
xbindkeys -f $HOME/.diablo2/xbindkeys.config -X :1
wine Game.exe -- $@ "> /tmp/diablo2.logs
killall -9 xbindkeys wine wineserver" > $HOME/.xinitrc

xinit -- :1 -depth 16

rm -f $HOME/.xinitrc
mv $HOME/.xinitrc-diablo2-old $HOME/.xinitrc
setxkbmap -layout us nous sert à faire passer le clavier en QWERTY original. Ce n'est pas indispensable mais préférable pour Diablo II qui ne comprend absolument rien aux touches numériques situées au dessus de la zone des lettres.
Dans ce script, le NumLock est activé par numlockx : vérifiez que vous l'avez installé !

Comme vous voyez, la commande de XBindKeys est déjà insérée, les explications arrivent...

XBindKeys et Diablo II

Nous allons aborder ici l'utilisation de XBindKeys dans Diablo II. Comme vous le savez déjà, la roulette de la souris dans Diablo II sert à faire défiler les aptitudes. On va améliorer ça : la roulette vers le haut enclenchera une aptitude et remetra directement celle par défaut, celle du bas une autre aptitude et le clic au milieu encore une autre. Très pratique ;)

On va tout d'abord positionner tous les fichiers nécessaires à notre opération dans un dossier .diablo2 dans le répertoire home. Créez donc le dossier $HOME/.diablo2 et mettez-y ce fichier de configuration XBindKeys :

# Aptitude 1
"~/.diablo2/aptitude.sh 6"
b:4

# Aptitude 1-Copy
"~/.diablo2/aptitude.sh 6"
control + b:4

# Aptitude 2
"~/.diablo2/aptitude.sh 7"
b:5

# Aptitude 2-Copy
"~/.diablo2/aptitude.sh 7"
control + b:5

# Aptitude 3
"~/.diablo2/aptitude.sh 8 0,09"
b:2

# Aptitude 3-Copy
"~/.diablo2/aptitude.sh 8 0,09"
control + b:2

# Extended keyboard
"~/.diablo2/message.sh '***à bout de souffle*** on pourrait pas... faire un petit saut... en ville ? :) Je vous paye le TP :D'"
XF86HomePage

"aumix -v+10"
XF86AudioRaiseVolume

"aumix -v-10"
XF86AudioLowerVolume

"mute"
XF86AudioMute
Faites attention au deuxième argument donné à aptitude.sh, ce sont des nombres décimaux et le séparateur est une virgule. Ça ne fonctionnera pas si vous mettez un point ! (dû à la commande sleep)
Comme vous le voyez, j'ai remis les mêmes associations deux fois. Une fois avec le [Ctrl] enfoncé, et une fois sans. Étant donné qu'il faut appuyer sur la touche [Ctrl] pour courir.

Mais quel est cet étrange script aptitude.sh ? Et message.sh ? La suite, par ici...

XMacroPlay et Diablo II

On va maintenant faire deux petits scripts, l'un permet d'envoyer des messages rapidement l'autre permet d'appuyer sur une touche, faire un clic droit, temporiser et appuyer sur une autre touche du clavier.

#!/bin/bash
echo "KeyStr Return
string $@
KeyStr Return" > /tmp/message.$USER
xmacroplay :1 < /tmp/message.$USER

Ce script va donc appuyer sur [Enter], taper tout le message contenu en paramètres et réappuyer sur [Enter].

Maintenant voyons voir l'autre script :

#!/bin/bash
echo "KeyStr $1" > /tmp/macrokeys
xmacroplay :1 < /tmp/macrokeys
test -z "$2" || sleep $2
echo "ButtonPress 3
ButtonRelease 3
KeyStr 5" > /tmp/macrokeys
xmacroplay :1 < /tmp/macrokeys
Changez le ButtonPress 3 et ButtonRelease 3 en ButtonPress 1 et ButtonRelease 1 si vous désirez que le script fasse un clic gauche au lieu d'un clic droite.

5... 6... Vous comprenez maintenant pourquoi c'est plus difficile en clavier français ou belge.

Ce script-ci va donc appuyer sur la touche du premier paramètre, appuyer sur le bouton du milieu de la souris, attendre la durée précisée au deuxième paramètre et, finalement, va appuyer immédiatement sur la touche 5.

Non ça ne marche pas encore, mais il ne reste qu'à configurer le jeu... ;)

Configuration de Diablo II

Entrez dans le jeu, appuyez sur [Esc], rendez-vous ensuite dans le menu de configuration des touches. Associez les touches [5], [6], [7] et [8] à des aptitudes différentes. Sortez des menus et mettez votre aptitude principale en [5], et des aptitudes utilisées moins fréquemment en [6], [7] et [8]. Tout ça à une même main (coté gauche ou droit des aptitudes).

Bon amusement ;)

Si vous avez bien tout suivi : quand vous ferez défiler la roulette vers le haut, votre aptitude en [5] va commuter vers la [7] et l'actionner, et reviendra immédiatement après en [5].
Appuyez sur la touche [MyHome] pour avoir un message "rapide" qui n'a de rapide que le nom...




@ Retour à la rubrique Matériel


Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Thomas MUYL --maston28 le 19/02/2004.

Copyright

Copyright © 19/02/2004, Jean-Thomas MUYL --maston28

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/



@ Retour à la rubrique Matériel