Le remapping du clavier avec Windows XP

 

 Sommaire

 

 

 

 

Introduction

Nous avons parfois besoin de modifier le clavier. Telle touche nous paraît mal placée, telle autre demande un appui sur MAJ alors quelle est souvent utilisée, nous appuyons par mégarde en plein jeu sur une touche Windows, quand ce n'est pas sur le bouton de mise en veille. Les utilisateurs de portables sont les plus concernés. Quelques exemples :

 

L'accessibilité

Le réagencement du clavier intéressera sans doute les personnes concernées par des problèmes d'accessibilité. La souplesse d'AutoHotkey permet des adaptations poussées. Avant d'aller plus loin il faut rappeler les possibilités de Windows dans ce domaine. En appuyant cinq fois de suite sur une des touches MAJ vous aurez déjà un aperçu. Voici quelques liens :

 

Mise en garde

Cet article propose des modifications du Registre. Prenez les précautions nécessaires.
Les modifications de Layout peuvent interférer avec les raccourcis-clavier.
Les scripts AutoHotkey pourraient ne pas toujours convenir selon l'environnement ou les jeux utilisés.

 

Les raccourcis de Windows XP

Certains claviers n'ont pas la touche Windows, à gauche, entre les touches Ctrl et Alt. Cette touche "WIN" sert principalement à ouvrir le Menu Démarrer. Elle est encore plus utile utilisée en combinaison avec d'autres touches (Exemples : WIN+D, WIN+R, WIN+E, WIN+F, WIN+F1). On peut contourner l'absence de la touche WIN pour ouvrir le Menu Démarrer avec CTL+Échap. Nous allons voir plus bas s'il y a moyen de modifier une touche peu utilisée ou en double pour lui donner le rôle d'une touche WIN.

Le raccourci le plus connu est sans doute CTL+ALT+Suppr qui ouvre le Gestionnaire des Tâches. Il ne fonctionne pas dans le Clavier Visuel (clavier pour souris que l'on obtient par la commande OSK ou le raccourci WIN+u). C'est contournable avec le raccourci CTL+MAJ+Échap qui double CTL+ALT+Suppr.
CTL+MAJ+Échap est également utile dans les machines virtuelles, car CTL+ALT+Suppr concernera la machine hôte.

Les raccourcis sont listés dans Aide et Support : taper "raccourcis clavier" dans la ligne de recherche.
Ou passer par une commande, dont on pourra faire un raccourci :
Démarrer>Exécuter>HH %windir%\help\keyshort.chm

Une bonne partie de la population sera intéressée par les Raccourcis-claviers pour les gauchers.

Faire attention à certains raccourcis clavier pour l'accessibilité, et surtout au raccourci de changement de clavier, qui surprennent l'utilisateur quand il ne les connait pas. Exemples :

Quelques infos plus techniques sur les raccourcis-clavier dans cet article.

 

Les raccourcis ASCII du clavier numérique

Une façon très connue d'obtenir des caractères spéciaux est d'utiliser le clavier numérique en combinaison avec la touche ALT. Maintenir enfoncée la touche ALT tout en tapant les quatre chiffres du code du caractère voulu. Au relâchement de la touche ALT, le caractère apparaît. Cela ne fonctionne qu'avec les chiffres du clavier numérique. La liste des codes est disponible sur de très nombreux sites, ici et .. Voici les plus utiles :

ALT 0156
ALT 0160
ALT 0169
ALT 0174
ALT 0177
ALT 0192
ALT 0199
ALT 0200
ALT 0201
ALT 0202
ALT 0203
ALT 0217
ALT 0230
œ
espace insécable
©
®
±
À
 Ç
È
É
Ê
Ë
Ù
æ
Certains caractères peuvent être obtenus avec moins de chiffres. Par exemple ALT 169 donne ®. Mais ALT 174 donne le caractère "«". Explications sur ces mystères en cliquant sur ALT+NumPad. On préfèrera se souvenir du codage sur 4 chiffres pour l'ASCII étendu utilisé en Europe occidentale.

Spécial portables :
Les Majuscules accentuées sont obtenues également en tapant l'accent suivi de la lettre Majuscule, ce qui sera plus pratique pour les portables dépourvus de clavier numérique séparé (il est noyé dans le clavier et accessible avec la touche Fn bleue) :
¨ suivi de E donne Ë
^ suivi de E donne Ê
` suivi de E donne È (AltGr+è pour obtenir l'accent grave)
` suivi de U donne Ù
` suivi de A donne À
Il n'y a pas l'accent aigu. Il aurait dû être logiquement à la place de ~ (AltGr+é). Voir ci-dessous.

 

Le cas particulier de l'accent aigu

On vient de voir que la Touche Morte permettant de produire l'accent aigu est absente du clavier azerty. Les claviers des antiques machines à  écrire faisaient l'économie de l'accentuation des majuscules. La norme ASCII a offert 128 codes (numérotés de 0 à 127), auxquels il faut retirer 33 caractères de contrôle. Si on ajoute que le code 127 est utilisé par la touche Suppr, il ne restait donc que 94 codes. L'accent aigu n'a pas été retenu, et c'est le tilde espagnol (~), à la droite du caractère é, qui a été conservé. Si le code de l'accent aigu existe bien (ALT+0180 ==> ´ ), il est impossible de le produire comme le ferait une touche morte, à savoir l'accent suivi de la voyelle à accentuer.  On peut cependant imiter ce comportement par programmation :
L'éditeur de texte Word utilise le raccourci-clavier CTL + apostrophe pour produire l'accent aigu comme le ferait une touche morte, le programme attendant la frappe suivante pour afficher le résultat.

 

 

Charmap.exe : la Table des caractères

On pourra également utiliser la Table des caractères disponibles dans Accessoires>Outils système (Charmap.exe). Cet outil très complet donne en bas à droite le code du caractère voulu. Pour œ ce sera ALT+0156 :

Remarque : On lit en bas à gauche "U+0153 DIGRAMME SOUDÉ MINUSCULE LATIN OE".
Ce 0153 est le rang Unicode du caractère exprimé en hexadécimal et n'a rien à voir avec le 0156 affiché à droite (image).

Après ces rappels, passons au véritable sujet : les méthodes de réagencement du clavier.

 

 

 

Scancode Map

HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout//Scancode Map
La variable Scancode Map permet de remapper (redessiner) le clavier en redirigeant les touches.
L'édition du Registre est possible avec la commande Regedit (Exécuter>regedit).
Toute modification étant enregistrée immédiatement, le Registre est à manipuler avec prudence <== à lire avant
Le principe est de remplacer le code correspondant à une touche par un autre code.
Attention, c'est la touche qui est modifiée, on ne peut pas par cette méthode modifier un seul des caractères d'une touche.
Cela limite l'intérêt de la méthode, qui permettra cependant quelques modifications utiles.
Le contenu de la variable binaire est une série de chiffres hexadécimaux disposés comme expliqué dans cette archive : Scan Code Mapper for Windows.

Comment trouver les codes des touches ?
Cette image, tirée de l'aide de MSKLC, montre le code hexadécimal correspondant à chaque touche, pour deux types de clavier :

En France on utilise le second type. Les touches Windows ne sont pas représentées, et les codes des touches brunes ne sont pas affichés parce que MSKLC ne les traite pas. Plus d'infos : Archive : Key Support for Microsoft Windows Operating Systems and Applications

Le logiciel SharpKeys présenté plus loin permet d'afficher très simplement le code d'une touche appuyée, ainsi que le caractère correspondant (pour les claviers QWERTY). Le caractère affiché sera donc souvent erroné pour nos claviers AZERTY; ce n'est pas grave, c'est le code qui est important. Avec ces dernières aides, nous auront à disposition tous les codes qui manquent sur l'image ci-dessus, même ceux des touches spéciales des claviers récents.

Une fois la variable Scancode Map mise au point, il faut faire prendre en compte la modification de l'agencement du clavier par le système, et pour cela il est nécessaire de redémarrer la session pour que le clavier soit modifié, redémarrer Explorer.exe ne suffit pas. Il suffit de supprimer la variable ou de la renommer pour retrouver le clavier normal après redémarrage de la session.

Noter que ces modifications intéressent tous les utilisateurs et sont actives au moment d'entrer le mot de passe pour ouvrir la session.

Passons à la pratique. On trouve sur la toile des fichiers REG  permettant de modifier facilement la variable Scancode Map en fusionnant le fichier REG au Registre. Pour fusionner un fichier "Inscription dans le Registre" (un fichier avec l'extension reg), il suffit de cliquer dessus. Il est souvent demandé de désactiver la ou les touches WIN et la touche CapsLock (verrouillage des majuscules). Cet article propose des solutions, avec en particulier un fichier reg pour revenir à la normale en enlevant la variable ScanCodemap.

Voici des exemples détaillés pour apprendre à modifier une ou plusieurs touches :

Désactivation des touches WIN
Examinons un tip très répandu consistant à Désactiver les deux touches Windows :
Scancode Map = 00 00 00 00 00 00 00 00 03 00 00 00 00 00 5B E0 00 00 5C E0 00 00 00 00
Les explications qui suivent peuvent paraître compliquées, mais les choses sont bien plus simples qu'il n'y paraît. Il suffit de faire du copier-coller, de fusionner le fichier REG quand celui-ci est proposé au téléchargement (ce n'est pas le cas ici), ou d'utiliser le logiciel SharpKeys présenté plus loin.

Les codes se lisent par mots de la droite vers la gauche : d'abord le mot E0, puis le mot 5B, donc un nombre hexadécimal égal à 0xE05B (Conventions typographiques pour les nombres hexadécimaux). La raison en est que dans le Registre on utilise le format Little Endian, appelé à présent Endianness. On appréciera je pense l'amusant néologisme qu'est Petit-Boutiste.

En jaune : toujours à zéro selon le Scan Code Mapper for Windows.
En vert   : le nombre de données à lire = 0x00000003 (le dernier groupe de chiffres 00 00 00 00 fait partie du décompte, donc 3 données)
En rouge : le code 0xE05B (Touche WIN gauche) est remplacé par 0x0000
En bleu   : le code 0xE05C (Touche WIN droite) est remplacé par 0x0000
Résultat, une fois modifiée la variable avec Regedit ou fusionné le fichier REG, et après redémarrage de la session : les deux touches WIN à présent codées 0000 n'ont plus aucune action.

On pourra faire un fichier texte avec une extension REG ayant ce contenu :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,5b,e0,00,00,5c,e0,
00,00,00,00

Ce fichier pourra être fusionné au Registre en cliquant dessus, ou à l'aide de la commande Regedit.
On obtient un fichier REG également en exportant une clé depuis Regedit (clic droit sur la Clé>Exporter).
Il convient d'éditer ensuite le fichier obtenu pour ne conserver que la partie utile.
Voici le résultat tel qu'il est affiché par Regedit, l'éditeur du Registre :

La Modification dans Regedit n'est pas pratique :

Il vaut mieux travailler avec un fichier REG.
Dans les exemples suivants, il suffira de copier la ligne
"Scancode Map" pour modifier le REG.
Concernant les touches Windows, on peut désirer supprimer les raccourcis WIN+Lettre (dont la très pratique bascule WIN+D). Il ne s'agit alors pas de remapping mais de Stratégies :

XPPRO
Utiliser l'outil d'administration Microsoft Management Console MMC pour éditer les Stratégies de groupe :
Exécuter>gpedit.msc
Dans la Console, aller à :
Stratégie Ordinateur local>Configuration utilisateur>Modèles d'administration>Explorateur Windows :
Activer la restriction "Désactiver les touches de raccourci Windows+X"

XPHOME
Créer la variable NoWinkeys avec Regedit :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Variable DWORD NoWinKeys
NoWinKeys = 1 restriction active
NoWinKeys = 0 restriction inactive

Dans les deux cas il faudra redémarrer la session ou Explorer.exe pour que la restriction soit effective. WIN+u reste utilisable (Clavier visuel/Loupe)

Pour les mordus, voici un exemple d'utilisation de regini du Ressource Kit Tools qui fait la même chose.

Continuons avec d'autres touches pour bien comprendre le mécanisme de Scancode Map :

Désactivation de la touche Entrée du clavier numérique
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,00,00,1C,E0,00,00,00,00
En vert     : le nombre de données à lire = 02
En rouge : le code de la touche 0xE01C (Entrée Numérique) est remplacé par 0x0000
Résultat après redémarrage de la session : la touche Entrée du clavier numérique n'a plus aucune action.

Désactivation des deux touches Entrée
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,1C,E0,00,00,1C,00,00,00,00,00
En vert   : le nombre de données à lire = 03
En rouge : le code de la touche 0xE01C (Entrée du clavier numérique) est remplacé par 0x0000
En bleu   : le code de la touche 0x003A (Entrée du clavier normal) est remplacé par 0x0000
Résultat après redémarrage de la session : les touches Entrée restent sans aucun effet.

Désactivation de la touche CapsLock de verrouillage des Majuscules
Nous sommes nombreux à nous faire piéger par cette touche et à nous retrouver avec un texte tout en majuscules parce que nous ne savons pas taper comme une dactylo et que nous regardons le clavier au lieu de l'écran. Comme il est plus courant de taper en minuscules qu'en majuscules, l'idée de désactiver cette touche est assez répandue.
Voici la ligne de la variable au format export de Regedit, recopiable directement dans le fichier reg :
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,2A,00,3A,00,00,00,00,00
En vert   : le nombre de données à lire = 02
En rouge : le code de la touche 0x003A (CapsLock) est remplacé par le code de la touche 0x002A (MAJ)
Résultat après redémarrage de la session : CapsLock ne se verrouille plus et se comporte comme une touche MAJ.
Le fichier reg correspondant à cette manip est téléchargeable ici.

Remarque : on préfèrera sans doute utiliser une méthode logicielle (voir la section Remapping logiciel) afin de retrouver à volonté le fonctionnement normal de cette touche.

Astuce : la méthode de déverrouillage des majuscules est modifiable, c'est bon à savoir. Si le Bouton "Paramètres de touches" est grisé c'est qu'il n'y a qu'une seule langue. Ajouter temporairement une langue pour effectuer la manip.

Remplacement de la touche Ctrl droite par la touche Windows
Peu utilisée, la touche Ctrl droite peut devenir une touche Windows, utile pour les claviers qui en sont dépourvus, ou sur certains portables.
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5B,E0,1D,E0,00,00,00,00
Le code 0xE01D (Ctrl droit) est remplacé par le code 0xE05B qui est le code de la touche WIN déjà vu plus haut.
Résultat après redémarrage de la session : La touche Ctrl de droite se comporte comme une touche WIN, et les raccourcis WIN+X fonctionnent.

Correction d'une erreur d'ergonomie : la "F-Lock Key" des claviers Microsoft
Lorsque j'ai utilisé un clavier Microsoft Wireless Desktop Elite Keyboard j'ai eu la désagréable surprise de constater que les touches de fonction étaient modifiées. Ceci était dû au choix du constructeur d'activer par défaut les nouveautés. Les fonctions standards F1 à F12 ont été curieusement déplacées, la sérigraphie les fait apparaître sur les faces avant des touches de fonctions. Les fonctions standards sont de ce fait devenues secondaires. Une touche-bascule nommée F-Lock placée loin sur la droite permettait de rétablir le fonctionnement habituel. La touche F2 dont je me sers en permanence pour renomme les fichiers était devenue Annuler. Au bout de quelques jours de désagréments, constatant que rien n'était prévu dans le Pilote pour choisir l'état de cette bascule au démarrage, j'ai cherché une solution et l'ai trouvée chez deux MVP : Kelly Theriot (ligne 129) et Jason Tsang. C'était ma première rencontre avec la variable Scancode Map. Pour corriger le problème, voici la valeur qu'il a fallu lui attribuer :

"Scancode Map"=hex:00,00,00,00,00,00,00,00,19,00,00,00,3b,00,3b,e0,3c,00,08,e0,\
3d,00,07,e0,3e,00,3e,e0,3f,00,3f,e0,40,00,40,e0,41,00,41,e0,42,00,42,e0,43,\
00,43,e0,44,00,23,e0,57,00,57,e0,58,00,58,e0,3b,e0,3b,00,08,e0,3c,00,07,e0,\
3d,00,3e,e0,3e,00,3f,e0,3f,00,40,e0,40,00,41,e0,41,00,42,e0,42,00,43,e0,43,\
00,23,e0,44,00,57,e0,57,00,58,e0,58,00,00,00,00,00

En vert   : le nombre de données à lire = 0x00000019 (hexadécimal) soit 25 en décimal (12 touches doubles, soit 24 modifications, nombre à augmenter de 1 pour la lecture du dernier groupe 00,00,00,00 comme vu au début).
En rouge : le code de la touche 0xE008 (F-Lock Undo) est remplacé par le code 0x003C (Fonction F2). Les autres touches de fonction sont ainsi également modifiées, je ne détaille pas davantage. Comme on le voit, contrairement à ce qu'on aurait pu croire, ce n'est pas la touche F-Lock qu'il fallait modifier pour corriger l'ergonomie, mais toutes les touches dont elle change l'état.

Remarque sur la présentation du contenu de la variable dans le fichier REG
Comme on le constate dans l'exemple, on utilise l'antislash (\) pour passer à la ligne. Le système le fait de lui-même lorsqu'on exporte une clé. Pour améliorer la lisibilité du contenu de la variable Scancode Map il est possible d'utiliser cette technique pour avoir une présentation claire des groupes de chiffres en insérant des commentaires (ex). Voici un autre exemple développé à l'occasion du détournement des touches Power, Sleep, et Wake Up dont sont équipés certains claviers :

Attribution de nouvelles fonctions aux touches Power, Sleep, et Wake Up  
 Scénario : déjà équipé d'un clavier étendu possédant des fonctionnalités Internet vous êtes amenés à utiliser un autre clavier ne disposant pas des touches WWW, Courrier, et Rechercher. Le nouveau clavier possède par contre les trois touches Power, Sleep, et WakeUp permettant de rapidement éteindre, mettre en veille, ou réveiller l'ordinateur. Ces fonctions ne vous semblent pas utiles et vous aimeriez retrouver les fonctions web en les attribuant à ces trois touches. Il vous faut pour commencer désactiver ces fonctions d'alimentation attribuées à ces touches : aller dans les Propriétés d'affichage, Onglet Écran de Veille, Bouton "Gestion de l'alimentation", Onglet Avancé.
Pour les deux items "Lorsque j'appuie sur le bouton", choisir "Ne rien faire".
Remarque : cela concerne également le bouton Arrêt/Démarrage du PC.
La suite consiste à trouver les codes des touches désirées.
On s'aidera de KeyTweak ou du logiciel SharpKeys présenté plus bas.

On pourra alors modifier la valeur ScanCode Map directement ou rédiger le fichier reg suivant :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\

04,00,00,00,\

32,E0,5E,E0,\ ; E05E (Power) devient E032 (Web Home)
6C,E0,5F,E0,\ ; E05F (Sleep) devient E06C (E-Mail)
65,E0,63,E0,\ ; E063 (WakeUp) devient E065 (Web Search)

00,00,00,00

Télécharger et fusionner au Registre ce fichier reg, puis redémarrer Explorer ou la session.
Le pilote du clavier qui avait les touches web étant toujours installé, les touches Power, Sleep, et WakeUp permettent à présent d'utiliser les fonctions Internet. Heureusement il n'est pas nécessaire d'avoir un tel pilote pour utiliser ces touches à d'autres fins; une solution logicielle est présentée vers la fin de la section sur le Remapping logiciel.
Remerciements à Paul Voyer (site).

Comme on vient de le voir, SharpKeys rend très aisée l'édition de la variable Scancode Map, et permet de modifier même les touches spéciales des claviers à fonctions étendues :

 

Remapkey

Je cite ce logiciel du Resource Kit Tools pour mémoire, il n'a pas évolué depuis la version 1.0 et reste limité. Remapkey.exe utilise le même principe que ci-dessus. Il aide à sélectionner les touches à échanger et crée, ou modifie, la variable Scancode Map. Remapkey fait partie du Windows Server 2003 Resource Kit Tools dont le téléchargement est libre (12 Mo !). Une fois l'installation terminée, Remapkey se trouve ici :
C:\Program Files\Windows Resource Kits\Tools\remapkey.exe
Il affiche un plan du clavier, on échange les touches du clavier à la souris. Remapkey ne sait pas inactiver une touche et n'affiche pas les codes des touches. Un redémarrage de la session est demandé après l'écriture de la variable dans le Registre. Il ne traite pas les touches spéciales des claviers récents aux fonctions étendues (web, multimédia). Nous allons voir que SharpKeys apporte beaucoup plus d'informations, et permet facilement de désactiver des touches.

 

SharpKeys

SharpKeys de Randy Rants est un excellent outil pour modifier la variable Scancode Map.
Après installation, l'aide est ici : C:\Program Files\RandyRants.com\SharpKeys\faq.htm
Il affiche les noms et les codes des touches, ce qui permet de reconnaître ensuite ce code dans la variable Scancode Map.

Le bouton Add affiche la liste des touches. Remarquer les codes des touches spéciales (voir F-Lock plus haut) des claviers récents, ainsi que la clé fictive "Turn Key Off" dont le code est 0000. On a vu qu'attribuer le code 0000 à une touche la rendait effectivement inactive :

Le bouton Type Key donne une aide supplémentaire pour identifier une touche.
Ici on a appuyé sur la touche Majuscule gauche :

Type Key permet ainsi de s'adapter facilement au fait que la liste des touches affiche les caractères du clavier QWERTY.
Remarque : SharpKeys affiche (E0_2038) pour la touche AltGr. Mais lorsqu'on accepte cette touche en cliquant sur OK, un message annonce qu'il ne connaît pas cette touche.

"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,00,E0,38,20,00,00,00,00

 

Récupérer la clé de Scancode Map dans un fichier REG

Suite à ces manipulations, la variable Scancode Map obtenue peut être assez longue. Il est intéressant de récupérer le résultat pour le sauvegarder d'une part, et pour pouvoir modifier facilement un autre ordinateur. On crée pour cela un fichier REG d'inscription dans le Registre. Il s'obtient dans Regedit en exportant la clé qui contient la variable :
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout
Il convient de nettoyer le contenu de ce fichier REG en l'éditant avec Bloc-notes afin de ne conserver que la partie utile comme vu avec le premier exercice (Désactivation des touches WIN). Il est possible de rendre plus lisible la présentation du contenu de la variable et d'ajouter des commentaires (Exemple). Ce fichier pourra être fusionné au registre d'une autre machine en cliquant dessus. Pour supprimer toute modification apportées par la variable Scancode Map il suffit de la supprimer. On peut fusionner pour cela un fichier.REG comprenant la commande "Scancode Map"=-
(le signe moins final provoque la suppression de la variable. Plus d'infos sur ces notions en suivant ce lien : Modifications de la base de registres en ligne de commande)

Rappels :

 

Bilan

On retiendra que cette méthode ne permet pas de modifier les caractères, mais seulement les touches. Scancode Map ne peut pas mettre le Point à la place du Point-virgule, ou € à la place de £.
Ceci met fin à ce chapitre sur l'adaptation d'un clavier à l'aide de la variable Scancode Map. Passons à la création d'une nouvelle DLL dans System32 avec la modification d'un Keyboard Layout :
 

 

 

 

Modification du Layout

Layout se traduit par Agencement, mais j'ai préféré conserver le terme anglais, les autres méthodes présentées dans cet article modifiant également l'agencement des touches. On pourrait peut-être parler de "Pilote du clavier", mais on n'agit ici que sur les fichiers kbdxxxxx.dll dont les Propriétés affichent "Keyboard Layout", et non sur kbdclass.sys "Pilote de la classe Clavier".

 

The Microsoft Keyboard Layout Creator

Le Microsoft Keyboard Layout Creator permet de créer un clavier à sa convenance en modifiant précisément chaque touche. Il fourni un fichier d'installation MSI. Le clavier pourra alors être installé et deviendra disponible dans la liste des claviers (Options régionales).

Téléchargements

On peut télécharger MSKLC 1.4 pour Vista, ou MSKLC 1.3 pour les autres Windows. Les deux versions téléchargent un fichier du même nom (ça embrouille) : MSKLC.exe (4.6 Mo pour la MSKLC 1.3 et 10.1 Mo pour la version 1.4).
Utilisées sous XP, je n'ai vu aucune différence entre MSKLC 1.3 et 1.4
Il y en a sans doute sous Vista, je n'ai pas essayé. MSKLC N'a pas fonctionné sous Vista/Windows7 64 bits.

Microsoft .NET Framework

Les deux versions ont besoin de .NET Framework. La Framework 1.1 pour MSKLC 1.3 et Framework 2 ou Framework 3 pour MSKLC 1.4. Les téléchargements sont conséquents :

L'installation de ces bibliothèques sont nécessaires pour exécuter les programmes développés avec les kits de développement .NET Framework. On en est donc à trois versions, complétées de modules d'adaptations linguistiques, et de correctifs. Si le téléchargement et l'installation de ces monstres peut paraître rebutant, il faut savoir qu'ils facilitent la tache des programmeurs. On commence dès lors à voir apparaître des petits bijoux, tels que Paint.NET qui nécessite Framework 2. À la question de savoir s'il est nécessaire de télécharger Framework 2 alors que la version 3 coexiste sur WindowsUpdate, je peux répondre qu'ayant choisi le téléchargement et l'installation de Framework 3, j'ai pu constater après 35 minutes (!) que Framework 2 avait été installé quand même. Le tout augmenté de mises à jour de sécurité et de modules de prise en charge linguistique. Un redémarrage est demandé.

Pour revenir à MSKLC 1.3, il a besoin de Framework 1.1 et je suis donc passé faire mes courses sur WindowsUpdate, rayon mises à jour facultatives :

Le téléchargement et l'installation ont pris un petit quart d'heure. Le redémarrage n'est pas demandé, et MSKLC 1.3 a pu fonctionner. Update s'est manifesté un peu plus tard pour signaler qu'une mise à jour de sécurité pour Framework 1.1 était prête (.NET Framework 1.1 Service Pack 1). C'est reparti pour 10.2 Mo de téléchargement. Au total, Framework 1.1+SP1 nécessite donc de télécharger 34.7 Mo. On peut très bien ne pas passer par Update et télécharger les deux fichiers directement.

 

Tutoriel

La Liste des Articles de http://forum.hardware.fr propose au paragraphe "3.2 Autres Logiciels et Divers" un lien vers ce tuto.

 

Quelle version de MSKLC utiliser sur XP ?

Utiliser MSKLC 1.3
MSKLC 1.4 utilisée sur XP affiche cet avertissement :

Comme je n'ai pas encore essayé avec Vista, je ne sais pas à quoi ressemblent ces "features".

 

Présentation de MSKLC 1.3 et création d'un clavier modifié

Le menu File>Load Existing Keyboard permet de charger un clavier existant qui servira de base de départ. On peut utiliser un clavier déjà modifié pour l'améliorer.

Voici les touches normales du clavier français. Le point du clavier numérique est pris en compte pour éventuellement le remplacer par la virgule. Les touches Windows sont absentes. Les touches en sombre ne seront pas modifiables (Unassignable). La touche de l'accent circonflexe est grise (Dead Key) parce qu'elle doit être suivie de l'appui d'une autre touche. Pour modifier une touche cliquer dessus et entrer le caractère voulu.

Touche MAJ enfoncée (Shift est coché). Le tréma est effectivement une Touche Morte (Dead Key) :

Touche AltGr enfoncée montre deux autres Touches Mortes : le tilde et l'accent grave. Il n'y a pas d'accent aigu :


On remarque avec cette vue toute la place qui est disponible. Il y en a encore plus pour la combinaison MAJ+AltGr que je n'ai pas représentée (cocher Shift et AltGr), il y a un exemple avec ce clavier canadien multilingue adapté (merci Jean-François). Bref les possibilités ne manquent pas. Mais il faudra faire attention à une chose :

Risques d'interférences avec les raccourcis-clavier

Les raccourcis-claviers dans Windows ou dans les programmes utilisent des combinaisons avec CTL, MAJ, ALT (Control ou Ctrl, Majuscule, Alt). C'est visible sur la gauche de l'image ci-dessus, AltGr est équivalent à CTL+ALT. Il y a risque d'interférence avec vos nouveaux caractères, et il est possible qu'en appuyant sur AltGr+touche ou MAJ+AltGr+touche on n'obtienne pas le caractère désiré, tout en déclenchant une action. Il peut arriver que l'action déclenchée ne soit pas détectable par l'utilisateur. Très souvent le responsable est le logiciel qui accompagne la carte graphique, ATI par exemple et son Catalyst Control Center. Explorer les menus de l'icône dans le Systray en faisant un clic droit dessus. Il peut aussi s'agir d'un raccourci créé par l'utilisateur, et oublié dans les tréfonds du Menu Démarrer, le retrouver peut être difficile, voici un exemple vécu.

 

Le Menu View>Options permet de choisir la police et sa taille pour l'affichage des caractères, et de choisir le type du clavier :


Cocher "Remember Settings After Shutdown" pour conserver la configuration.

Une lecture attentive de l'aide sera nécessaire pour faire le tour complet des possibilités. Le menu Project a un item "Test Keyboard Layout" et le menu Help un item "Update Unicode character data" qui télécharge une mise à jour du fichier NamesList.txt. Ce fichier contient la liste des noms attribués aux signes et caractères. Une fois les modifications du clavier effectuées et ses Propriétés renseignées, on peut tester sa validité, puis passer à la création du fichier d'installation du clavier.

 

Propriétés du clavier modifié

Passage obligé, il faut renseigner les Propriétés du nouveau clavier, Menu Project>Properties :

 

Quel nom donner au clavier modifié ?

Remarquer que le nom proposé pour le clavier est Layout01. Cela semble logique, pourtant l'aide de MSKLC dit autrement : Using MSKLC>Creating Keyboard Layouts>Recommendations and Best Practices>
"KBD" Prefix for Keyboard DLLs
.
Il est conseillé de nommer les Layouts en commençant par "kbd" (keyboard). C'est en effet de cette façon que sont nommés les différents claviers dans System32 :


Attention : le nom est limité à huit caractères ASCII. Accents, ç, espaces, sont interdits.

Une fois les Propriétés renseignées, continuer la validation du clavier modifié.
Si des erreurs ou avertissements sont signalés, consulter l'aide :
Validation, Test, and Build>Validation of Keyboards Layouts>Validation Reference

 

Validation du clavier modifié

Le Menu Project>Validate Layout vérifie la validité du clavier.
Si on a oublié de renseigner ses Propriétés, un rappel est fait :

 

Création du fichier d'installation du clavier modifié

Menu Project>Build DLL ans Setup Package
Consulter l'aide pour voir des exemples des messages pouvant apparaître au chapitre Validation, Test, and Build>Buildind Keyboard Layouts

Si des erreurs sont signalées consulter l'aide pour tenter de corriger.
Si le fichier d'installation du clavier modifié ne se crée pas, essayer avec un autre PC puis récupérer le résultat. Celui-ci se présente sous la forme d'un dossier de 40 ko.

 

Le fichier d'installation kbdxxxxx.MSI

Un dossier kbdfr001 est créé dans Mes documents. Il contient les fichiers nécessaires, dont le fichier d'installation kbdfr001.msi :

Le dossier i386 contient le fichier kbdfr001.dll qui sera ajouté dans System32 en exécutant kbdfr001.msi. Noter que le menu contextuel d'un fichier MSI comporte d'autres options que Installer (en gras puisque c'est l'option par défaut qui s'exécute lorsqu'on clique le fichier). Ces deux autres options, très utiles, sont Désinstaller et Réparer.

 

Installation du clavier modifié dans System32

Cliquer sur kbdfr001.msi ... et "Installation Complete" sera affiché une fois l'installation terminée. Le fichier kbdfr001.dll  est ajouté aux autres kbdxxxxx.dll de System32. Il reste à ajouter le clavier modifié dans la liste des claviers de la langue.

 

Ajout du clavier modifié dans les Options régionales

Aller dans le Panneau de Configuration, Options régionales, Onglet Langues, et cliquer le bouton Détails pour accéder à "Services de texte et langues d'entrée".

Cliquer sur le bouton Ajouter pour ajouter la "Configuration clavier" voulue :

Le clavier "Français (point-virgule modifié)" est ajouté à la liste des claviers de la langue "Français (France)". Le choisir comme "Langue d'entrée par défaut" pour qu'il soit actif au démarrage :

Appliquer puis cliquer sur le bouton "Barre de langue". Cocher "Afficher la Barre de langue sur le Bureau". Quitter avec le bouton OK.

La barre de langues devrait apparaître dans la Barre de Tâches. Si ce n'est pas le cas faire un clic droit sur la Barre des Tâches, et sélectionner Barre d'outils, Barre de langue :

Un clic gauche sur le clavier de la Barre de langue présente le choix entre le clavier normal et le clavier modifié. Sélectionner ce dernier :

Le clavier "Français (point-virgule modifié)" a été sélectionné. Il devient le clavier actif, et les modifications apportées sont constatées :

Que j'utilise la touche MAJ ou non, la touche point/point-virgule me fournit toujours un point, c'est ce que voulais.
Le point-virgule reste disponible en effectuant AltGr+point
Ceci à titre de démonstration.

 

Mise à jour d'un clavier modifié

Ce n'est pas prévu, on crée chaque fois une nouvelle version qu'il faut installer. Les claviers modifiés qui ne servent plus devront être désinstallés :

 

Désinstallation du clavier modifié

  1. Changer de clavier pour revenir au clavier normal afin que le clavier modifié ne soit plus en cours d'utilisation
  2. Dans "Services de texte et langues d'entrée" supprimer le clavier modifié
  3. Faire un clic droit sur le fichier d'installation kbdfr001.msi vu dans notre exemple
  4. Le fichier System32\kbdfr001.dll est supprimé automatiquement

Si on ne respecte pas l'ordre ce n'est pas grave mais il faudra redémarrer la session.

 

Bilan

MSKLC apporte une souplesse inégalée dans la modification de l'agencement du clavier en permettant non pas l'échange de touches, mais la modification des caractères eux-mêmes. Il ne permet pas d'agir sur les autres touches telles que CTL, WIN, Entrée. On peut ajouter de nombreux caractères en combinant AltGr et MAJ, mais il faut faire attention aux risques d'interférences avec les raccourcis-clavier existants ou à venir.

Dominique Ottello met à disposition sa propre conception au bas de cette page.
Voici quelques autres exemples de réalisations :

 

 

Les claviers français modifiés

Certains se sont fortement penchés sur le problème, d'où ces réalisations, qu'ils partagent avec nous. Merci à eux.

Le clavier français complété de Michel Cadart

La version 3 est sortie :


L'auteur a prévu l'obtention de l'espace insécable (ALT 0160) avec la combinaison AltGr+Espace. Cela est symbolisé par []. C'est une excellente idée, l'espace insécable est très utile pour éviter les retours à la ligne inadéquats. Par exemple on met toujours un espace insécable devant les deux-points ":" (typographie). L'accent aigu est disponible à la droite de l'accent circonflexe (avec ALtGr). De plus les capitales accentuées sont prévues avec MAJ+AltGr. L'installation est la même que pour les Layouts créés avec MSKLC à partir du fichier téléchargé frcomp12.msi. Il faut donc choisir le clavier "Français complété 1.2" dans "Services de texte et Langues d'entrée" comme vu plus haut. La désinstallation complète se fait via Ajout/Suppression de programmes, ou par un clic droit sur frcomp12.msi.
Il y a une version pour le clavier belge (discussion).

Remarque au sujet du caractère ß : cette lettre issue de l'allemand est un eszett, plus proche du S que du B.
 

Le clavier français enrichi pour Windows de Denis Liégeois


Noter la présence de l'accent aigu (´) avec le chiffre 1, juste à gauche du é de la touche 2. C'est une élégante solution, l'accent aigu étant la seule touche morte qui manquait. Curieusement l'espace insécable [] n'est pas sur la barre espace. L'installation est automatique. Après redémarrage le clavier est opérationnel sans autre intervention, le clavier ayant pour nom "Français (France)". La désinstallation se fait via Ajout/Suppression de programmes. L'image ci-dessus, est celle du site de Denis Liégois. Elle ne montre pas les derniers ajouts signalés à la section "Versions" du site.

 

 

Le clavier français amélioré de PSYDK.ORG


Cette approche est originale. Voir sur le site le sujet du "CapsLock intelligent", et le lisez-moi.html qui accompagne l'installateur/désinstallateur (install-kbdfr-dk-6.0.1.exe).  Autre innovation, des touches du clavier numérique sont également complétées. L'espace insécable est présent sur la touche espace, et l'accent aigu est à droite de l'accent circonflexe. Les chiffres du haut étant devenus moins faciles d'accès, ce Layout ne convient pas à un portable ne comprenant pas de clavier numérique.
Installation et désinstallation étonnamment rapides et simples, à effet immédiat. Le clavier "Français (dk 6.0.1)" prend place proprement comme clavier actif dans la liste. La désinstallation ne passe pas par Ajout/Suppression de programmes, le clavier n'y figure pas. Si on a perdu l'exe d'installation, le télécharger, l'exécuter, et choisir le bouton Désinstaller : on retrouve le clavier précédent. On peut aussi le conserver et changer de clavier via les Options de Langues.

Pas testé : le clavier Kelyos : "clavier avec les majuscules accentuées"

Rappelez-vous les risques d'interférences avec les raccourcis-clavier. Ces idées pourront servir de point de départ à vos créations.

 

 

 

 

Clavier+

Clavier+ n'est pas un Layout modifié, mais un remapping logiciel. Sa souplesse et sa simplicité pourrait le faire préférer aux claviers modifiés, qu'il peut d'ailleurs compléter, raison pour laquelle je le cite ici. Il est abordé au chapitre suivant.

Ceci met fin au chapitre du Layout. Passons à un peu de programmation.

 

 

 

 

Le remapping logiciel

AutoHotkey est un moteur de scripts permettant un contrôle sophistiqué de Windows. Il rend possible la redirection des boutons, touches et caractères du clavier, de la souris, du joystick. L'aide du logiciel est un modèle du genre, quoiqu'en anglais. L'aide sur le web est abondante, en anglais et aussi en français. On trouve de nombreux exemples dont le remapping, et des utilitaires. Un script est transformable en exécutable indépendant, qui peut être utilisé partout. Si on a installé AutoHotkey, les scripts sont exécutables directement. Autohotkey fonctionne également avec Vista et Windows 7 64 bits.

Le principe est donc ici totalement différent de ce qu'on a vu jusqu'à présent où on tentait d'intervenir à la source (registre, pilote). Le procédé nécessite de faire tourner le script en tâche de fond. Un icône dans le Systray permet de l'interrompre facilement et de retrouver le fonctionnement standard du clavier. Le procédé est donc portable à souhait, la modification du clavier est immédiate, aucun redémarrage n'est nécessaire. Ce type de remapping logiciel a été utilisé par Jean-Claude Bellamy pour contourner le problème posé lors de l'utilisation d'un clavier numérique externe sur un portable.

Avant de commencer, on lira ces articles :

Autres liens :
http://www.autohotkey.com
http://www.autohotkey.com/docs/Variables.htm
http://autohotkey.free.fr/docs
http://autohotkey.free.fr/docs/Hotkeys.htm
http://autohotkey.free.fr/docs/Hotstrings.htm 
http://autohotkey.free.fr/docs/KeyList.htm
http://autohotkey.free.fr/docs/misc/Clipboard.htm
http://autohotkey.free.fr/docs/misc/Remap.htm
Liste des commandes
http://www.autohotkey.com/docs/commands.htm
http://autohotkey.free.fr/docs/commands.htm

Lors de l'exécution d'un script, un icone vert est affiché dans la Zone de notification de la barre de Tâches (Systray).
Un clic droit offre plusieurs choix. On peut en particulier suspendre la redirection des touches et des caractères (Suspend Hotkeys).
L'icone qui affiche habituellement un  H  se modifie alors en   :

"Pause Script" ou Exit suspendent ou suppriment le remapping en cours, et on récupère le clavier normal. L'action par Défaut "Open" ouvre une fenêtre montrant le fonctionnement du script, l'état des variables etc ... Compilé en exécutable, le script peut-être exécuté depuis une clef USB sur d'autres ordinateurs. Il est possible de cacher l'icone du Systray, ou de modifier son menu.

 

Exemples de scripts

On ajoute des commandes Return pour organiser le script en sous-programmes si on défini plusieurs hotkeys.
Avec
AHK2EXE il est possible de compiler le script obtenu en un exécutable qui pourra être exécuté ainsi sur plusieurs ordinateurs, depuis une clé USB par exemple. On retrouve ainsi instantanément ses réglages habituels sans rien avoir à modifier sur la machine qu'on emprunte. Un tel exécutable peut être détecté comme un Trojan par un antivirus : c'est une fausse détection causée par la routine d'interception du clavier et les méthodes heuristiques utilisées. Certains Trojans ayant pour mission d'enregistrer toutes les frappes du clavier et de les transmettre sur le web dans l'espoir de récupérer des données sensibles. Vous ne verrez jamais AutoHotkey se connecter au web, en dehors de votre volonté de scripteur. Si vous installez AutoHotkey et que vous utilisez des script AHK non-compilés, vous n'aurez pas d'alerte de détection de Trojan.

Désactivation des deux touches Windows
Très apprécié des joueurs qui n'aiment pas voir apparaître soudain le Bureau au milieu d'une partie acharnée, la désactivation des touches WIN s'obtient très facilement. Deux lignes de 6 caractères suffisent. LWin identifie la touche Windows de gauche, RWin celle de droite. On désigne la redirection avec deux fois deux-points. Comme la redirection est laissée vide, on obtient le comportement voulu :

LWin::
Rwin::

Désactivation des deux touches Entrées
Ce tip déjà vu plus haut avec la méthode Scancode Map a réellement une utilité pour certaines situations où un clavier ne doit servir que pour taper des caractères, la confirmation de l'entrée se faisant à la souris. On diminue ainsi les risques d'entrées accidentelles. Ici aussi le code est extrêmement simple :

Enter::
NumpadEnter::

Désactivation du clavier et de la souris
Après avoir appris à désactiver des touches particulières, nous allons apprendre à désactiver totalement clavier et souris. Cela peut être utile pour pour éviter de perturber certains programmes. Le script fait appel à l'instruction BlockInput. Il ne fonctionne pas avec WIN95/98. Faire CTL+ALT+Suppr pour annuler son action :

#Persistent
WinClose Gestionnaire des tâches de Windows
Blockinput, On
sleep 999
Winwait Gestionnaire des tâches de Windows
{
WinClose Gestionnaire des tâches de Windows
Exitapp
}

Télécharger le script commenté : http://fspsa.free.fr/bloque-clavier-souris.ahk
Télécharger le script compilé     : http://fspsa.free.fr/bloque-clavier-souris.exe
Cette forme compilée est utilisable sans avoir à installer AutoHotkey. Rappel : l'antivirus peut signaler la présence d'un Hook du clavier; c'est normal puisque c'est le cas, mais utilisé ici dans un but avouable, et non pour envoyer ce que nous tapons vers un site web. J'ai publié ce script suite à une question. Son utilité n'est peut-être pas évidente. À part faire des blagues, il servirait à empêcher qu'on interrompe une action en cours tout en permettant de suivre ce qui se passe à l'écran. Il existe un autre usage auquel je n'avais pas pensé, révélé par Squeaky Clean : permettre le nettoyage du clavier et de la souris sans risque d'interférer avec Windows ou un programme. Rappel : si le but est simplement de protéger l'ordinateur pendant son absence il faut simplement utiliser les possibilités de Windows : compte avec mot de passe et économiseur d'écran réclamant le mot de passe pour afficher le Bureau est une technique courante. Moins connu est le fameux raccourci-clavier WIN+L qui affiche tout bonnement l'écran d'accueil, et il faut là aussi entrer le mot de passe pour revenir au Bureau.

Désactivation des touches Insertion et Verrouillage Numérique
Il arrive trop souvent de passer par inadvertance de Mode Insertion en Mode Refrappe (overtype, overwrite ou overstricke mode) en appuyant involontairement sur la touche Inser (Inser Key). Même chose pour la touche Ver num (Num Lock) de Verrouillage du Clavier Numérique.

Ins::
NumLock::

Un script plus élaboré permettra de conserver le rôle de bascule de ces touches, en conjonction avec la touche MAJ ==> numlock-ins.ahk
 

Suppression du verrouillage des majuscules
Comme déjà vu plus haut, on remplace la touche de verrouillage des majuscules (CapsLock) par la touche MAJ gauche (LShift).
Les étourdis évitent ainsi de taper ce genre de chose : L42TAT DE LA R2PUBLIQUE FRAN9AISE.

CapsLock::LShift

Un script a été développé pour faire apparaître un menu et choisir une action liée à la capitalisation quand on appuie sur CapsLock : CAPshift (en anglais, mais devrait être facile à traduire; me demander).

 

Remplacer la touche CTL de gauche par MAJ
Une aimable retraitée se plaignait de souvent activer la sélection en tapant CTL+a alors qu'elle croyait taper MAJ+a, imaginez le résultat. Heureusement il existe CTL+Z pour revenir en arrière. Un contournement a consisté à remplacer cette touche CTL de gauche par la touche Majuscule de gauche, ce dont elle s'est montrée très satisfaite. Cette disposition pourrait être gênante pour son petit-fils, un geek notoire, adepte effréné des raccourcis-clavier utilisant la touche CTL. Aucun problème, sachant qu'avec AutoHotkey deux clics suffisent pour suspendre le détournement de touche. C'est quand même plus souple que les méthodes compliquées qu'on a vu plus haut ! Par ailleurs la touche CTL de droite reste utilisable normalement. Voici le code :

LCtrl::LShift

Insuffisant déclara le gamin, je ne veux pas qu'on me prive de la touche CTL, j'accepte seulement de me priver de CTL+A.
Pas de problème, le script suivant produit un A majuscule lorsque la dame utilise la touche CTL en croyant utiliser la touche MAJ.
La touche CTL reste utilisable pour les autres raccourcis.

^a::
Send A
Return

Modifier la touche CTL de droite en touche Windows (Rappel : CTL gauche+Échap ouvre le Menu Démarrer)
Certains claviers peuvent être démunis de touche Windows, ou n'ont pas de touche Windows droite, ce qui peut gêner certaines personnes.

RControl::RWIN

Remplacement du Point-virgule par le Point et remplacement du ² par le Point-virgule
La première ligne remplace le caractère ² (exposant 2, la touche en haut à gauche) par le point-virgule  ==> ²::;
La seconde ligne remplace la touche 033 par le point. Le point-virgule étant un caractère particulier dans les scripts AutoHotkey, il a été nécessaire de remapper la touche 033 plutôt que le caractère. SC = ScanCode.

²::;
sc033::.

Variante : au lieu d'utiliser le ScanCode 033, on désigne le caractère point-virgule en le faisant précéder d'un accent grave (AltGr+è) qui est le caractère d'échappement dans AutoHotkey. Lire #EscapeChar (and explanation of escape sequences) pour plus d'informations.

`;::.              ;le point-virgule devient le point
²::;               ;la touche ² devient le point-virgule. Si pas satifaisant ==>
#NumpadDot::`;     ;autre solution : WIN+{point du clavier numérique} produira le point-virgule

Remplacement du Point-virgule par le Point et instauration d'un code pour obtenir le Point-virgule
Si on veut conserver le ² et ne pas remplacer sa touche par celle du point-virgule, on peut installer un raccourci pour obtenir celui-ci.
La première ligne remplace la touche 033 par le point comme vu ci-dessus.
La seconde ligne met en place le raccourci suivant : quand on tapera la séquence point d'exclamation, virgule, espace, le point d'exclamation et la virgule se transformeront en point-virgule. Pour obtenir le point-virgule on fera donc : !, et barre d'espace.

sc033::.
::!,::;

Ce dernier principe, qui consiste à obtenir un caractère, ou même une phrase entière, voire tout un texte, en entrant un code, est nommé dans l'aide d'AutoHotkey "Hotstrings and Auto-replace". Ce chapitre a été traduit sur le Net et se nomme Substitutions de chaînes et Remplacement-Auto. On y trouvera les explications quant à l'utilisation de la syntaxe :*?: qui va permettre dans les exemples qui suivent d'obtenir le remplacement du code sans avoir à ajouter un espace et sans en introduire un avec le mot qui précède.

En ce qui concerne le point-virgule j'utilise en pratique Clavier+ en produisant ce caractère avec AltGr+[la touche du point / point-virgule]. Cette solution, que je n'ai hélas pas réussi à reproduire avec AutoHotkey me semble la plus pratique. Clavier+ est présenté plus bas.

Remplacement du point du clavier numérique par une virgule
Le clavier numérique est fort pratique, mais dans nos contrées les habitudes ne sont pas les mêmes que de l'autre côté de la Grande Flaque, et c'est la virgule que nous utilisons pour indiquer les décimales. Certains logiciels spécialisés (tableurs) le permettent. Voici comment faire pour que le point du Pavé Numérique produise une virgule :

NumpadDot::,
 

Obtenir les symboles spéciaux comme dans Word™
Le système de correction automatique de Word™ permet de remplacer automatiquement certaines suites de caractères. Ce principe permet de corriger automatiquement les fautes de frappe courantes, mais aussi d'obtenir des caractères particuliers. Exemples :
(c) ==> ©    (r) ==> ®    (tm) ==> ™
Rien de plus facile pour AutoHotkey qui offrira ainsi ce confort pour tous les autres éditeurs de texte :

:*?:(c)::©
:*?:(r)::®
:*?:(tm)::™

On obtient ainsi ces caractères dans les autres éditeurs de texte exactement comme dans Word. Avec l'exemple ci-dessous, on obtiendra les caractères voulus en faisant !cc !rr !tm, méthode qui parait plus simple que l'utilisation de parenthèses.
!fs suivi d'un espace écrira automatiquement http://fspsa.free.fr

:*?:!c::©
:*?:!r::®
:*?:!tm::™
::!fs::http://fspsa.free.fr

On peut obtenir ainsi des phrases entières avec un code très court entré avec un seul doigt, ce qui est très intéressant pour l'Accessibilité. De même :

:*?:!é::É
:*?:!ç::Ç

Obtenir facilement l'arobase @
C
e caractère est souvent utilisé, et son emplacement est difficile d'accès (AltGr+à). Pourquoi ne pas obtenir @ en tapant deux fois à :

:*?:àà::@

Obtenir la date
Les logiciels ont presque toujours un raccourci pour coller la date. Par exemple avec le Bloc-Notes c'est F5. Mais ce n'est pas toujours prévu, et si ça l'est, ce n'est pas toujours le même raccourci-clavier. Je propose un script pour que CTL+WIN+D mette la date dans le Presse-Papier, puis colle le résultat à l'endroit voulu :

^#D::
clipboard=%A_DD%/%A_MM%/%A_YYYY%
send ^+v

 

Démarrer un programme
Au lieu de remplacer des caractères on peut aussi lancer des programmes. On sort un peu du remapping du clavier, mais on reste dans l'amélioration de l'accessibilité.

Un raccourci pour lancer un programme
Ouvrir le Bloc-Notes (Notepad.exe) avec le raccourci-clavier WIN+N :

#n::run notepad

Démarrer un programme en tapant un code
Utiliser la commande Run pour désigner le programme à exécuter :

:*?:!gb
Run C:\Program Files\GreenBrowser\GreenBrowser.exe
Return

 

Résultat : sur le bureau par exemple on tape en aveugle la séquence de touches !gb et le navigateur internet GreenBrowser s'ouvre ! Attention, il faut savoir que le script envoie des commandes {BackSpace} pour remplacer automatiquement le code tapé comme on l'a vu ci-dessus pour produire des caractères. Si on tape le code depuis une fenêtre Explorer, on aura la surprise de voir l'effet de ces BackSpaces qui ont une signification particulière (la touche BackSpace permet de remonter l'arborescence). Cela est contournable en ajoutant des instructions, mais il faudra prévoir d'autres cas, comme les Aides par exemple qui réagissent encore différemment. J'ai pensé toutefois que cette possibilité intéresserait certains. Si un internaute a développé un script plus sophistiqué permettant d'éviter cet ennui je le ferai savoir. Mais il est déjà bien pratique de simplement cliquer sur le bureau ou sur la Barre des Tâches et de taper par exemple !dev en aveugle pour démarrer devmgmt.msc (au lieu de passer par Exécuter et de taper la commande entière), et tout cela avec un seul doigt (Accessibilité). Ce script permet d'ajouter facilement des codes de touches pour placer facilement du texte ou lancer des actions : AutoClip (en anglais mais devrait être facile à traduire; me demander)

Si toutefois on préfère passer par Exécuter (WIN+R ou, avec un seul doigt, WIN,X, puis Entrée), il est possible de coder une touche pour ouvrir Exécuter directement (Run).
Une autre possibilité à ne pas négliger est celle d'afficher dans la Barre des Tâches l'Outil Barre d'Adresse. Comme son nom ne l'indique pas, elle permet également d'exécuter des commandes. Cette Barre d'Adresse a hélas disparu avec le SP3 pour Windows, mais il existe des contournements pour la recréer.

Démarrer un programme en appuyant successivement sur des touches et sans utiliser AutoHotkey
Il existe une méthode très simple pour démarrer des programmes au clavier et d'un seul doigt. Il faut pour cela organiser une liste de raccourcis-icônes et les nommer judicieusement. On peut faire cela dans le Menu Démarrer, mais aussi dans un dossier regroupant ses commandes préférées. Par exemple la séquence pour ouvrir GreenBrowser sera : WIN pour ouvrir Démarrer, et G pour sélectionner GreenBrowser qui se lance s'il n'y a pas d'ambiguïté. Si d'autres raccourcis commencent par la lettre G, appuyer sur G plusieurs fois, puis sur la touche Entrée quand GreenBrowser est sélecté.  Le Menu Démarrer de XP affichant les programmes les plus utilisés (mais pas les fichiers), la manip est en général gagnante sur sa machine habituelle. On pourra bien sûr regrouper ses raccourcis préférés sur une clé USB pour tenter de garder ses habitudes sur un autre PC. Attention au fait que les chemins peuvent être différents ou les fichiers ne pas être sur la machine.

Sélection avec les premières lettres du nom
Ce qui suit fonctionne avec les raccourcis et fichiers se trouvant sur le Bureau, et avec les fichiers dans Explorer. Cela ne fonctionne pas avec les raccourcis du Menu Démarrer. Taper successivement trois caractères sélectionne la première occurrence commençant par ces trois lettres. Il ne faut pas être trop lent, mais c'est jouable avec un doigt, il faut mettre un peu moins de deux secondes. Cela marche aussi avec seulement deux caractères. Cette disposition fait gagner beaucoup de temps. Le fait que ça ne marche plus avec les raccourcis ailleurs que sur le Bureau peut être contourné en utilisant des Batchs ou des scripts AHK ou VBS.

Une bascule pour ouvrir et fermer le tiroir du lecteur de CD
On se propose de créer un unique raccourci-clavier-bascule pour ouvrir, ou fermer s'il était ouvert, le tiroir du lecteur de CD. On suppose ici qu'on a donné la lettre P au lecteur de CD (j'ai un graveur Plextor), adapter le script si ce n'est pas le cas. La première instruction crée le raccourci-clavier WIN+P, qui restera disponible tant que le script tournera en fond de tâche. Ce raccourci ouvrira le tiroir, et le fermera s'il était ouvert, ceci est obtenu avec l'instruction Drive Eject. La sous-instruction Eject est intelligente, quand elle ne peut pas "éjecter", elle fait le contraire, et ferme le tiroir.

#P::
Drive, Eject,P
if A_TimeSinceThisHotkey < 1000  ; Augmenter les millisecondes si nécessaire
Drive, Eject,P, 1
Return

Variante : si on ne précise pas la lettre du lecteur, c'est celui par défaut qui est actionné. S'il y a plusieurs lecteurs, c'est le premier dans l'ordre alphabétique. Si c'est un lecteur virtuel, sa fenêtre s'ouvre/se ferme. Dans l'exemple ci-dessous, le raccourci-clavier utilisé est devenu WIN+C (comme CDROM)

#C::
Drive, Eject
if A_TimeSinceThisHotkey < 1000  ; Augmenter les millisecondes si nécessaire
Drive, Eject,, 1
Return

Nouveau
lecteuro.exe ouvre/ferme le lecteur ayant la "lettre O".
Renommer le programme en lecteurX.exe pour ouvrir le lecteur X. Le raccourci-clavier reste WIN+O.
http://fspsa.free.fr/lecteuro.zip

Modifier facilement le volume ==> ALT+Roulette de souris pour monter ou baisser le volume
Combien de fois on monte le volume pour visionner un film, et on oublie de le baisser pour l'utilisation normale. On peut choisir deux raccourcis-clavier différents pour monter et descendre le volume mais il m'a semblé pratique (très pratique même), et naturel, d'utiliser la roulette de la souris et la touche ALT. On roule vers le haut en appuyant sur ALT, ça monte le volume, on roule vers le bas, le volume baisse. À propos, si vous avez perdu l'icone du volume dans le systray, c'est par ici. Et pour revenir au script dont il était question, voici une proposition :

   ~ALT &   WheelUp::send {Volume_Up}
   ~ALT & WheelDown::send {Volume_Down}

Variante sonorisée :

~ALT & WheelUp::
send {Volume_Up}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

~ALT & WheelDown::
send {Volume_Down}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

Encore mieux : Clic droit + roulette Up/Down

~RButton & WheelUp::
send {Volume_Up}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

~RButton & WheelDown::
send {Volume_Down}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

Encore plus mieux : Clic gauche + roulette pour faire varier le volume, et ALT + roulette pour faire varier le volume rapidement :

!WheelUp::
send {Volume_Up 8}
~LButton & WheelUp::
send {Volume_Up}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

!WheelDown::
send {Volume_Down 8}
~LButton & WheelDown::
send {Volume_Down}
SoundPlay, %A_WinDir%\Media\ding.wav
Return

Script pour trouver les codes des touches
Pour trouver les codes des touches il suffit de faire un script affichant l'historique des touches frappées. Il tient en trois lignes :

#InstallKeybdHook
#Persistent
KeyHistory

Exécuter ce script ouvre une fenêtre. Appuyer sur des touches pour remplir l'historique (il semble ne rien se passer, mais le script enregistre les codes des touches). Cliquer sur la fenêtre pour s'assurer qu'elle est en premier plan, et appuyer sur F5 pour rafraîchir l'affichage. Un historique détaillé des touches utilisées est affiché avec leurs codes.

Un raccourci pour recharger le Script (Aide à la mise au point)
Lorsqu'on modifie le Script qu'on est en train de mettre au point, il faut le relancer pour que les nouvelles instructions soient prises en compte. Il est pratique de créer un raccourci-clavier. On évite ainsi d'utiliser la souris (clic droit sur l'icône AHK du Systray et "Reload This Script". Voici le code pour que CTL+WIN+r relance le Script :

^#r::Reload

Inverser les mouvements de la souris
Il parait que ça peut être utile. En tout cas cette demande m'a rappelé certains tests psychomoteurs auxquels j'ai survécu, tests durant lesquels les commandes de vol s'inversaient aléatoirement. Le projet est donc d'inverser les mouvements du pointeur, afin qu'il se déplace sur la gauche quand on glisse la souris vers la droite...
http://www.autohotkey.com/forum/topic19376.html
ALT+Z pour sortir.

Attribution de nouvelles fonctions aux touches Power, Sleep, et Wake Up    
Nous avons vu vers la fin de la section ScanCode Map comment on pouvait dans certains cas détourner ces touches pour leur donner des fonctions web. Avec AutoHotkey on pourra attribuer d'autres fonctions à ces touches.
Commencer par désactiver les boutons d'alimentation :
 

Ceci désactive également ces fonctions pour le bouton Marche/Arrêt de l'ordinateur.
Pour trouver les codes des touches spéciales, utiliser le script décrit un peu plus haut. Voici le résultat après avoir sollicité les trois touches Power, Sleep, et WakeUp, suivi de F5 pour rafraichir l'affichage :

Voici un exemple de code :

SC15E::
Run http://fspsa.free.fr/clavier.htm#pswu-logiciel
Return

SC03B::
Run %programfiles%\Mozilla Thunderbird\thunderbird.exe
Return

SC163::
Run http://www.google.fr/search?q=%clipboard%
Return

Remarquer que l'appui de la touche Wake Up (163) ouvrira une recherche Google avec le contenu du Presse-Papier grâce à la concaténation de la variable %clipboard%

 

Éviter de déplacer intempestivement des fichiers avec DeskLock
Une plainte très souvent émise concerne les déplacements accidentels de fichiers ou dossiers avec la souris, avec les conséquences qu'on imagine. Pour comprendre la raison du malaise, lire Déplacement et copie de fichiers en utilisant la méthode du glisser-déplacer. On constate que par défaut le glisser d'un objet correspond à son déplacement.

Contournements possibles :

Correction : lorsqu'on s'aperçoit qu'il y a eu un déplacement, on peut, si on a été attentif, retrouver facilement le fichier et le remettre en place. C'est moins évident si on n'a pas vu dans quel dossier il a été lâché. La correction consiste alors à utiliser le raccourci-clavier CTL+Z qui annule la dernière opération effectuée.

La situation est plus ennuyeuse si on n'a pas conscience d'avoir déplacé un fichier ou un dossier. Ne pas croire que cela n'arrive qu'aux personnes atteintes de tremblements ou ne contrôlant pas bien leurs mouvements. En entreprise ces déplacements accidentels peuvent être plutôt gênants. Pour certaines personnes cela va jusqu'à provoquer des pannes.

Remède : les utilisateurs demandent alors en général s'il existe un paramètre à modifier pour obtenir de Windows qu'il affiche systématiquement une demande de confirmation en cas de déplacement. Hélas rien ne semble avoir été prévu. C'est donc encore une fois à AutoHotkey qu'on demandera d'empêcher la saisie d'objets avec le clic gauche. L'utilisateur sera ainsi contraint d'utiliser le glisser avec le clic droit. Cette méthode est préférable que l'affichage d'une demande de confirmation car elle éduque l'utilisateur à cette méthode qu'il continuera ensuite à utiliser naturellement sur tous les PC. Le script s'appelle DeskLock. Son outil ShowClass permet de trouver les classes des fenêtres survolées. On pourra ainsi ajouter d'autres fenêtres que le Bureau. On pense en particulier à l'Explorateur de fichiers, au Menu Démarrer (pour lequel une option est prévue mais qui empêche l'utilisation du clic droit), aux boîtes d'enregistrement de documents, etc. Le script est en anglais, très simple. Me contacter si besoin de traduction, d'adaptation, ou pour simplement partager votre expérience, vos idées. Testé sur XP.

Noter qu'il est possible d'empêcher toutes modifications permanentes d'un PC avec SteadyState, produit Microsoft, gratuit, et très apprécié dans certains cas.

 

 

Bilan

AutoHotkey ouvre de nouvelles voies. Il permet d'adapter un clavier avec un exécutable, depuis une clé USB par exemple. Ses possibilités le rendent très attrayant dans le domaine de l'accessibilité.

 

 
Clavier+

AutoHotkey aura peut-être paru une approche trop compliquée. Heureusement est arrivé Clavier+ de Guillaume Ryder. Il permet d'obtenir les majuscules accentuées avec WIN+minuscule. D'autres combinaisons sont possibles, on peut lancer des logiciels, produire du texte, simuler la souris. Il est facile à utiliser, et en français. Suivre le lien vers le site pour lire la présentation du logiciel, il y a une capture d'écran, une FAQ, une Aide, et des Exemples commentés. L'icône du Systray affiche la liste des raccourcis, laquelle peut être copiée d'un clic. Clavier+ fonctionne aussi sur Vista et Windows7 64 bits. Ces captures résument quelques unes des possibilités :

 

On peut modifier un caractère, et même échanger les caractères d'une même touche. Cette capture montre une interversion entre le point et le point-virgule, ainsi que quelques autres possibilités :

 

Consulter l'Aide pour découvrir comment inclure des scripts, masquer l'icône, lancer plusieurs programmes et leurs envoyer des commandes, modifier le volume du son, simuler les boutons de la souris et la molette,  utiliser Clavier+ en lignes de commandes.
On peut copier Clavier.exe et son fichier de configuration sur un autre PC et l'utiliser sans installation.

 

Bilan

Clavier+ est un excellent compromis. En français et plus simple à appréhender que AutoHotkey, il peut permettre beaucoup de choses grâce à sa possibilité d'exécuter des commandes et d'exploiter les Scripts VBS (exemples).

 

Alors ? Le Remapping logiciel ? ...

Le remapping logiciel apporte beaucoup de souplesse par rapport aux autre méthodes. Il permet de configurer un PC en exécutant simplement un programme sans aucune installation, depuis une clé USB par exemple. Ses possibilités vont beaucoup plus loin que le simple échange de touches ou modifications de caractères. Typiquement il ajoute des raccourcis-clavier logiciels (qui disparaissent avec son utilisation) et leurs attribue les actions que l'on veut. La programmation va de simple à complexe, et il n'est jamais garanti que le fonctionnement sera celui attendu avec certains programmes, les jeux en particuliers, et des tests seront donc nécessaires.

 

 

 

Conclusions

Comparaison des trois méthodes de réagencement du clavier :

 

Scancode Map

Modification du Layout
(MSKLC)

Remapping logiciel

AutoHotkey

Clavier+

Redémarrage de la session Nécessaire Pas nécessaire Pas nécessaire Pas nécessaire
Modification Facile en utilisant SharpKeys Facile Facile Très facile
Activation Redémarrer la session Installer le clavier modifié Immédiate Immédiate
Utilisation sur un autre PC Facile à l'aide d'un fichier REG Installer avec le fichier Layout.MSI Exécuter le script Recopier Clavier.exe
et Clavier.ini
puis exécuter Clavier.exe
Avantages Simple modif du registre
Plus efficace que les autres méthodes,
en particulier pour les jeux
Modification permanente
Portabilité par fusion d'un REG
Modification de caractères,
pas seulement de touches
Plusieurs Layout possibles
Changement de Layout facile
Modification permanente au choix
Portabilité du fichier d'installation
Claviers modifiés téléchargeables
Souplesse
Portable sans installation
Effet immédiat, débrayable.
Programmation complexe possible,
aide de qualité, nombreux exemples
Grandes possibilités dans le
domaine de l'accessibilité
Portable sans installation
Plusieurs configurations possibles
Très simple à utiliser
Possibilités de scripts
Effet immédiat
Débrayable en arrêtant Clavier.exe
Aide et exemples en français
Inconvénients Redémarrage de la session nécessaire
On ne peut qu'échanger des touches
On travaille avec des codes
Les modifs concernent tous les utilisateurs
Différences entre claviers us et fr
Il faut installer le clavier
Il faut supprimer et désinstaller
Il y a des interactions
avec les raccourcis-clavier
Apprentissage nécessaire
Le script doit être
en fonctionnement permanent

Peut être ignoré par
certains programmes,
ou des effets inattendus
peuvent avoir lieu
Moins proche du système
que la méthode Scancode Map
Idem
Miscibilité des méthodes

À suivre

À suivre

Interférences possibles avec Clavier+

Interférences possibles avec AHK
Constaté par ex qu'une touche modifiée
par Clavier+ l'était pour AHK qui n'a
pas produit alors le résultat attendu

         

Pour les petites modifications permanentes et générale à tous les utilisateurs on préfèrera la méthode Scancode Map. Pour des modifications ponctuelles utilisables d'un clic sur d'autres ordinateurs on utilisera des Scripts AutoHotkey stockés sur une clé USB ou Clavier+.exe et son fichier de configuration Clavier.ini. Pour le reste on créera si nécessaire plusieurs claviers avec MSKLC. On pourra passer d'un clavier à l'autre facilement avec la Barre de langue.

 


Je remercie tous ceux qui m'ont aidé. Ce fut toujours avec tact et courtoisie; vous avez apporté vos idées, signalé les liens brisés, j'espère que vous continuerez.

J'ajoute de temps à autres de nouvelles idées, particulièrement dans la partie Remapping Logiciel. Si vous avez modifié votre clavier et que vous pensez que votre idée peut servir à d'autres faites-le savoir. Exemple : vous ouvrez et fermez votre lecteur de CD avec le coude grâce au remapping du Joystick. Vous connaissez des situations où l'inversion des déplacements de la souris est souhaitable... Merci d'avance pour vos suggestions; n'hésitez pas, les idées les plus étranges finissent par servir.

Bons remappings !
Retour au début
Les restes du site
JF 

compteur Free
Créée le 05/04/2007