Reconfigurer les touches d'un clavier

Dans cet article de Handigeek nous allons voir comment reconfigurer les touches de son clavier. Le besoin a été exprimé par une jeune fille, Manon, qui utilise un pavé numérique pour travailler plus vite. Malheureusement, ce dernier n'a pas de touche "=" (égal) mais il dispose d'une touche "," (virgule) dont elle n'a pas l'utilité.

Pour Mac OSx il existe un logiciel très puissant KeyRemap4Macbook http://pqrs.org/macosx/keyremap4macbook/ qui propose beaucoup de réarrangements de touches pré-paramétrées, malheureusement il n'est pas possible de programmer facilement ses propres inversions.

Pour vous faire une idée, téléchargez le logiciel et installez-le. Vous le retrouverez dans les "Préférences Systèmes".



Pour ce HandiGeek il est nécessaire d'avoir quelques connaissances en Anglais.


Explications

Pour faire un logiciel, le programmeur rédige des documents textuels souvent appelés "code". Ce code est passé dans une moulinette, le "compilateur" qui le transforme en informations utilisables par le processeur de l'ordinateur et par l'OS (le logiciel gérant l'ordinateur).
Nous allons modifier une petite partie du code de KeyRemap4Macbook et y ajouter les réarrangements qui nous intéressent.


Préparation 

Nous allons avoir besoin d'un éditeur de texte; Smultron http://sourceforge.net/projects/smultron/ en est un excellent.

Il est aussi nécessaire d'installer les outils de développement d'Apple: Xcode

http://developer.apple.com/technologies/tools/xcode.html

Il faut s'enregistrer sur le site Apple pour télécharger le dernier environnement de développement (une connaissance minimum de l'anglais est nécessaire).


Téléchargement du code du logiciel

À l'adresse http://pqrs.org/macosx/keyremap4macbook/source.html le "paquet" KeyRemap4MacBook-6.7.0.zip était la dernière version le 10.06.2010
Il faut décompresser le paquet zip (il suffit de cliquer dessus), ici nous allons le faire dans le dossier "Téléchargements", pour cela il suffit de cliquer sur le fichier téléchargé. On découvre dans la copie d'écran ci-après une partie de son contenu.



Farfouillage et reverse-ingeneering


Le fichier qui définit les réarrangements de touche est: src/files/prefpane/checkbox.xml Ouvrons-le avec Smultron …



On retrouve sous forme de code XML l'ensemble des réarrangements proposés dans le panneau de configuration des préférences système. 


Comme nous désirons intervertir deux touches, nous allons regarder quelle est la syntaxe utilisée dans ce fichier.
Pour l'exemple nous allons prendre "Change Minus to Semicolon" (moins vers point-virgule) qui se trouve aux alentours de la ligne 1596 dans le fichier checkbox.xml 

 <item>    <name>Change Minus Key</name> <list>
<item><name>Change Minus to Semicolon</name>           <sysctl>remap.minus2semicolon</sysctl>
<autogen>--KeyToKey-- KeyCode::MINUS, KeyCode::SEMICOLON</autogen></item>     </list> </item> 


Sur le clavier Suisse-Romand la touche "=" est atteinte en faisant "Shift + 0" en "fouillant" dans checkbox.xml on retrouve que pour faire un "Shift +" on doit utiliser la commande "ModifierFlag::SHIFT_L"

Rédaction du code

En prenant pour exemple ce que nous trouvons dans checkbox.xml, on construit notre propre code:

 <item>   <name>Mes propres changements</name>
<list>     <item>
<name>ToucheATouche (Standard)</name><appendix>, vers = (ToucheATouche)</appendix>      <sysctl>remap.perso_keytokey_standard</sysctl>      <autogen>--KeyToKey-- KeyCode::COMMA, KeyCode::KEY_0, ModifierFlag::SHIFT_L</autogen>     </item>   </list> </item> 


Tout à la fin du fichier checkbox.xml on remarque l'instruction "include" qui permet de charger un fichier externe sans apporter trop de modifications. Nous y ajoutons la ligne suivante après celle de sample.xml et enregistrons checkbox.xml 

<!-- #include "include/perso.xml" -->


 Nous allons donc mettre notre petit morceau de code dans le fichier perso.xml que nous mettrons à coté de sample.xml dans le dossier "include" (files/prefpane/include/sample.xml).


Pour créer perso.xml utilisez le bouton "nouveau" de Smultron et enregistrez-le.


Compilation du code


Depuis le logiciel "Terminal" que vous trouverez dans Applications/Utilitaires déplacez-vous dans le dossier qui contient les fichiers du code source.
Pour cela utilisez la commande "cd" pour changer de dossier (Le dossier Téléchargement s'appelle Downloads") et la commande "ls" pour afficher le contenu d'un dossier.


maintenant nous nous déplaçons dans le dossier kext, pour recompiler le noyau de l'application et nous la rechargeons au moyen des 3 commandes suivantes:

% cd src/core/kext
% make
% make reload

le premier "make" vous affichera beaucoup de ligne et vous indiquera que tout s'est bien passé en finissant par 

** BUILD SUCCEEDED **

Après le "mâle reload" vous allez devoir entrer votre mot de passe administrateur


Nous allons maintenant construire le panneau de préférence et le charger..
il faut se rendre dans le dossier files/prefpane
dans le Terminal encore ouvert:


% cd ../../../
% cd files/prefpane/
% make install



Tout devrait être bon.. il suffit maintenant de fermer le panneau de préférence et de le rouvrir..



Super.. tout marche .. sauf que cela a aussi un effet sur le clavier de l'ordinateur..

Pour éviter cela nous sélectionnons donc l'option "Don't remap the internal keyboard" 


En faire un paquet distribuable

Si vous désirez installer KeyRemap4Macbook sur un autre poste avec vos modifications
depuis le Terminal, dans le dossier KeyRemap4MacBook-6.7.0
tapez: % make
vous obtiendrez KeyRemap4MacBook.pkg que vous pourrez lancer sur d'autres postes.



NOTE IMPORTANTE!! Si vous recherchez l'ensemble des KeyCodes, on les retrouve dans le fichier include.KeyCode.cpp qui se trouve dans le dossier src/core/kext/keycode/output/ on ne le trouve qu'une fois qu'on a lancé une compilation!