Xavier Lamorlette
Voici la disposition des touches que je me suis définie, adaptée à mon travail de programmeur bilingue, et la méthode que j'ai employée pour y arriver.
Sommaire :
Mon activité principale est la programmation. Et lorsque j'écris, c'est aussi bien en anglais qu'en français.
J'utilisais donc un clavier français (azerty
). Mais celui-ci présente des inconvénients :
À
).ï
).œ
et le æ
) sont absentes.{ }
, les crochets [ ]
, le pipe |
, le backslash \
, le quote droit `
, le tilde ~
, le dièse #
) ne sont pas accessibles facilement.§ ¤ £ µ ²
) gaspillent des touches.J'ai donc essayé de remédier à cela en me définissant ma propre disposition de clavier, optimisée pour écrire aussi bien en français qu'en anglais, et permettant également d'accéder facilement aux caractères utilisés en programmation.
Pour définir la disposition des touches, j'ai appliqués les principes suivants (en partie repris sur ceux des dispositions type Dvorak) :
/
et \
, $
et €
).En regardant touche par touche avec quelle facilité elle peut être atteinte, j'ai déduit le schéma suivant d'ordre d'attribution des touches :
Pour obtenir les fréquences d'apparation des lettres en français et en anglais, j'ai tout d'abord cuisiné diverses sources trouvées sur internet.
Puis j'ai collecté, pendant plusieurs mois, des statistiques sur mon utilisation réelle, grâce à un “key logger” (j'ai utilisé KidLogger qui m'a semblé sérieux, et dont le format des fichiers de log leur permet d'être traité facilement).
Voici les chiffres obtenus (les fréquences sont exprimèes en pour mille) :
Français | Anglais | Moyenne normalisée | Utilisation réelle | |
---|---|---|---|---|
a | 77 | 82 | 78 | 77 |
b | 9 | 15 | 12 | 12 |
c | 34 | 29 | 31 | 42 |
d | 40 | 41 | 40 | 40 |
e | 153 | 123 | 136 | 128 |
f | 11 | 22 | 16 | 16 |
g | 11 | 20 | 15 | 16 |
h | 8 | 56 | 32 | 19 |
i | 77 | 72 | 73 | 70 |
j | 4 | 2 | 3 | 6 |
k | 0 | 7 | 3 | 6 |
l | 60 | 41 | 50 | 52 |
m | 30 | 25 | 27 | 27 |
n | 74 | 70 | 71 | 65 |
o | 56 | 76 | 65 | 68 |
p | 30 | 19 | 24 | 30 |
q | 12 | 1 | 6 | 7 |
r | 68 | 61 | 64 | 67 |
s | 85 | 64 | 73 | 73 |
t | 74 | 91 | 81 | 77 |
u | 61 | 28 | 44 | 44 |
v | 15 | 10 | 12 | 17 |
w | 0 | 20 | 10 | 8 |
x | 5 | 2 | 3 | 7 |
y | 3 | 19 | 11 | 9 |
z | 1 | 1 | 1 | 1 |
à | 5 | 0 | 2 | 2 |
ç | 1 | 0 | 0 | 1 |
è | 4 | 0 | 2 | 2 |
é | 23 | 0 | 11 | 10 |
ê | 2 | 0 | 1 | 1 |
ù | 0 | 0 | 0 | 0 |
î | 1 | 0 | 0 | 0 |
â | 0 | 0 | 0 | 0 |
ô | 0 | 0 | 0 | 0 |
û | 0 | 0 | 0 | 0 |
Pour les fréquences d'apparition des bigrammes, j'obtiens les chiffres suivants :
Français | Anglais | Moyenne normalisée | Utilisation réelle | |
---|---|---|---|---|
re | 51 | 40 | 51 | 54 |
es | 72 | 36 | 61 | 54 |
on | 43 | 35 | 44 | 49 |
er | 36 | 53 | 50 | 49 |
le | 55 | 18 | 41 | 46 |
en | 56 | 32 | 50 | 46 |
in | 21 | 57 | 44 | 40 |
te | 35 | 24 | 33 | 39 |
de | 52 | 17 | 39 | 39 |
ou | 33 | 23 | 32 | 38 |
nt | 46 | 33 | 45 | 36 |
ai | 38 | 8 | 26 | 34 |
st | 16 | 34 | 28 | 34 |
ti | 24 | 26 | 28 | 30 |
is | 25 | 26 | 29 | 30 |
an | 33 | 46 | 45 | 30 |
co | 20 | 10 | 17 | 28 |
at | 17 | 31 | 27 | 28 |
ne | 23 | 8 | 17 | 28 |
it | 32 | 26 | 33 | 28 |
se | 30 | 18 | 27 | 27 |
or | 11 | 27 | 21 | 26 |
me | 25 | 10 | 20 | 26 |
ur | 27 | 8 | 20 | 25 |
ar | 17 | 17 | 19 | 24 |
la | 29 | 8 | 21 | 23 |
th | 3 | 85 | 50 | 23 |
to | 7 | 29 | 20 | 22 |
ra | 20 | 11 | 17 | 22 |
he | 7 | 73 | 45 | 22 |
Enfin, avec les caractères de ponctuation, par fréquences décroissantes :
Caractère | Utilisation réelle |
---|---|
e | 118 |
a | 71 |
t | 71 |
s | 67 |
i | 64 |
o | 62 |
r | 62 |
n | 60 |
l | 48 |
u | 40 |
c | 39 |
d | 37 |
p | 28 |
m | 25 |
h | 17 |
v | 16 |
f | 15 |
g | 15 |
b | 15 |
é | 9 |
. | 9 |
y | 8 |
w | 7 |
' | 7 |
- | 7 |
q | 6 |
x | 6 |
, | 6 |
0 | 6 |
j | 6 |
k | 6 |
1 | 5 |
2 | 4 |
: | 3 |
? | 3 |
4 | 3 |
5 | 3 |
/ | 3 |
3 | 2 |
6 | 2 |
) | 2 |
( | 2 |
8 | 2 |
" | 2 |
! | 2 |
à | 2 |
è | 2 |
7 | 2 |
9 | 1 |
; | 1 |
_ | 1 |
z | 1 |
ç | 1 |
ê | 1 |
+ | 1 |
& | 1 |
= | 1 |
@ | 1 |
Pour répartir les touches entre les deux mains, j'ai écrit un programme qui, à partir des données ci-dessus, cherche à maximiser l'équilibre de la répartition entre les deux mains, et les bigrames sur une même main.
Pour une répartition des touches entre les deux mains, je définis un score qui est la somme des deux termes suivants :
J'ai tout d'abord implémenté une algorithme de recherche de proche en proche, mais il convergeait très rapidement vers des optimums locaux.
J'ai donc ensuite programmé une recherche exhaustive. Il y a 300 540 195 distributions possibles. Leur exploration prit 7 minutes sur un cœur cadencé à 2,5 GHz.
Le code est sous GitHub: https://github.com/xlamorlette/optimiseur-clavier.
La meilleure distribution des lettres trouvée est la suivante :
Après quelques arbitrages et optimisations manuels, on obtient la disposition suivante :
Note : j'ai inversé le backspace (suppression arrière) et le capslock (verrouillage majuscule) car le backspace est beaucoup plus utile que le capslock.
On crée le pilote du clavier avec Microsoft Keyboard Layout Creator.
Notes :
.klc
obtenu pour corriger les codes des raccourcis claviers, dans la colonne VK_
, comme expliqué dans cet article.C:\Program Files (x86)\Microsoft Keyboard Layout Creator 1.4\inc\kbd.h
, en inversant BACK
et CAPITAL
dans les lignes de la section #if (KBD_TYPE <= 6)
, ligne 998.Voici le résultat : installateur du clavier codeur bilingue.
Pour désactiver les raccourcis Windows déclenchés par l'utilisation de Alt Gr
(qui est considérée comme un équivalent de Alt
+Ctrl
), il faut :
!^c::
Send {Asc 135}
Return
!^o::
Send {Asc 147}
Return
!^t::
Send {Asc 151}
Return
Win
-R
shell:startup
).La dernière mise à jour de cet article date de décembre 2021.
Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.