« Pilote Windows » : différence entre les versions

De Disposition de clavier bépo
(Ajout de la catégorie "Développements")
 
(218 versions intermédiaires par 16 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{navigation|icone=Méthodologie.png|En savoir plus|{{PAGENAME}}}}
{{navigation|icone=Méthodologie.png|En savoir plus}}
{{note|type=attention|1=Cette page fourni des pilotes fr-dvorak-bépo pour windows basé sur des touches virtuelles azerty français pour les raccourcis avec {{touche|ctrl}} (sauf sous Word ou Outlook…). Plus d'info sur la [[#discussion|page de discussion]].}}


'''klc''' est l'extension de fichier d'un fichier texte utilisé par le logiciel ''Keyboard Layout Creator'' de Microsoft ([http://www.microsoft.com/downloads/details.aspx?FamilyID=8be579aa-780d-4253-9e0a-e17e51db2223&displaylang=en ''MSKLC'' version 1.4, 30 janvier 2007]) qui permet de compiler les pilotes d'installation d'une disposition de clavier sur les systèmes d'exploitation Microsoft Windows.
Les '''pilotes de la disposition de clavier bépo sur les systèmes d’exploitation Microsoft Windows''' sont créés par le logiciel ''Keyboard Layout Creator'' de Microsoft ([http://www.microsoft.com/downloads/details.aspx?FamilyID=8be579aa-780d-4253-9e0a-e17e51db2223&displaylang=en ''MSKLC'' version 1.4, 30 janvier 2007], nécessite [[wp:Microsoft .NET|.NET 2.0]]). Ce logiciel permet la modification de la partie alphanumérique du clavier soit cinquante touches avec la barre d’espace et le séparateur décimal. Il comprend un fichier d’aide {{c|msklc.chm}} et la liste des noms unicode 5.0 (mettre à jour avec [http://www.unicode.org/Public/UNIDATA/NamesList.html {{c|nameslist.txt}}] en version 6.0] à la main).


Le fichier [http://svnweb.tuxfamily.org/filedetails.php?repname=dvorak/svn&path=%2Fpilotes%2Ftrunk%2Fwindows%2Ffr-dvorak-bepo.klc&rev=0&sc=0 {{c|windows/fr-dvorak-bepo.klc}}] disponible sur le dépôt [[subversion]] du projet est généré automatiquement avec le programme [[Outils#configGenerator|''configGenerator'']]. MSKLC le transforme en une .dll contenant le pilote de la disposition fr-dvorak-bépo. Il génére aussi une application pour l'installer sur les systèmes d'exploitation Windows. Tous ces fichiers sont disponibles dans l’auto-executable [[wp:7zip|7zip]] {{Dernière version/Windows|{{c|windows/fr-dvorak-bepo-{{numéro de version actuel}}.exe}}}}  : c'est le pilote fourni aux utilisateurs sur la page d'[[installation sur Microsoft Windows|installation Windows]]. La dll est copié dans le répertoire {{c|%windir%/system32/bepo0651.dll}}.
== MSKLC et pilote bépo ==
Les fichiers de configuration de MSKLC, des fichiers textes dont l’extension est « klc », sont obtenus en sauvegardant une disposition de clavier depuis l'interface graphique du logiciel (format UTF16-LE). Les fichiers de type '''bepo.klc''' sont les sources de la disposition bépo disponibles en plusieurs variantes [https://download.tuxfamily.org/dvorak/windows/1.1rc2/ ici] ''(v1.1)'' et [https://download.tuxfamily.org/dvorak/windows/ ici] ''(v1.0)''. Il est possible d’utiliser ''[[configGenerator]]'' pour générer ses propres klc.


==Limites de MSKLC version 1.4.6000.2 ==
MSKLC utilise cette source pour générer une [[wp:Dll#Windows|bibliothèque de liens dynamiques]] {{c|bepo.dll}} contenant le pilote de la disposition bépo ainsi qu’une application pour l’installer. Tous ces fichiers sont disponibles dans l’auto-executable [[wp:7zip|''7zip'']] {{dl|windows/bepo.exe|{{c|bepo.exe}}}} : c’est le pilote fourni aux utilisateurs sur la page d’[[Windows|installation Windows]]. Durant l'installation, la dll est copiée dans le répertoire {{c|%windir%/system32/}} ({{c|%windir%/sysWOW64/}} sur les machines 64 bits).
MSKLC utilise .NET 2.0.


*MSKLC n'accepte pas de mettre le tiret bas « _ » sur {{touche|altgr}} + {{touche|espace|lien=non}}.
Cette méthode simple de génération des pilotes n’est plus possible depuis que le tiret bas a été placé en {{touchesA|AltGr|Espace}} pour la [[version 0.6.6|version 0.6.6]] de la disposition.


*Les [[touches mortes]] ne s'enchainent pas et donc les caractères avec diacritiques multiples ne fonctionnent qu'avec des diacritiques combinants.
Plusieurs remarques ont été faites par le projet à propos des limites de MSKLC (dans sa version 1.4.6000.2) :
* l'interface de MSKLC n’accepte pas de mettre le tiret bas « _ » sur {{tA|AltGr}} + {{tA|espace}}. L’erreur donnée est « ERROR: 'VK_SPACE' in Shift State 'Ctl+Alt' must be made up of white space character(s), but is defined as '_' (U+005f) instead. » ;
* les [[touches mortes]] ne s’enchainent pas et les caractères avec diacritiques multiples ne s’obtiennent qu’avec des diacritiques combinants ;
* absence de touche morte de type « [[compose]] » (''MultiKey'') ;
* déplacement impossible des modificateurs, pour avoir [[AltGr]] symétrique par exemple ou [[Utilisateur:Kaze/CapsLock|modifier capslock]].


*Absence de touche morte de type {{Touche|compose}}.
<!-- TODO
*documenter les formats de fichiers différents pour msklc.exe et kbdutools.exe
*documenter quel .msi fait quoi et que sont les trois <> architectures x64 ? -->


==Autre manière de compiler le klc==
== Générer les pilotes en batch ==
L'installation de MSKLC contient un fichier {{c|\bin\i386\kbdutool.exe}} – Keyboard Generation tool (Unicode) – ainsi que 5 exe qui devraient permettre de compiler le pilote avec un script batch. Il y a également 38 fichiers sources en C dans le répertoire {{c|\inc\}}.
Il est possible de contourner certaines limitations de l'interface graphique de MSKLC (par ex. mettre le tiret bas sur la barre d'espace). Le répertoire d’installation de MSKLC contient notamment l’exécutable {{c|\bin\i386\kbdutool.exe}} qui permet de compiler les pilotes en batch (KbdTool v3.40 - ''convert keyboard text file to C file or a keyboard layout DLL''). L'option ''-u''  génère la bibliothèque {{c|.dll}} du pilote que l’on peut copier dans le répertoire {{c|system32}} ou {{c|wowsys64}}. L’option ''-s'' génère quatre fichiers sources {{c|.H .C .RC .DEF}}, qu'il est également possible d'éditer (les passer en lecture seule pour qu'ils soient compilés à la place du .klc). Les fichiers sources en C sont dans le répertoire {{c|\inc\}} dont {{c|kbd.h}}.


===Création d’un pilote bépo personnalisé===
La méthode utilisée pour générer les pilotes bépo peut servir pour se fabriquer un pilote personnel.
:'''Création des dll :''' avec {{c|kbdutool.exe}}
* Créer votre disposition de clavier en la générant avec [[ConfigGenerator]] ou en éditant un fichier .klc.
* Placer le dans {{c|\msklc\bin\i386\}} et exécuter {{c|kbdutool.exe -u votrefichier.klc}} en ligne de commande, cela compile la disposition/dll pour i386/x86. Le [http://svnweb.tuxfamily.org/dl.php?repname=dvorak%2Fsvn&path=%2Fpilotes%2Ftrunk%2Fwindows%2Fcompil.bat& script utilisé pour bépo] génère les pilotes et sources de deux dispositions pour toutes les architectures possibles (la variable ver indiquant le numéro de version). Attention, le fichier doit être encodé en UTF-16 LE (et non pas BE). Attention également dans le nom de la disposition, les noms trop longs ou avec des caractères spéciaux ont l'air de poser des problèmes.


==Alternative==
:'''Création des programmes d’installation :''' dans l’interface graphique avec une disposition au nom identique
Une alternative pour obtenir un pilote pour Windows est de modifier certains fichiers sources en C disponibles dans le ''Windows Driver Kit'' de Windows Server 2008. La compilation donne la .dll du pilote  que l'on peut copier dans le répertoire {{c|system32}}.  
* Charger la disposition dans MSKLC mais remplacer le caractère « _ » en AltGr+espace par un espace.
Il aurait l'avantage de pouvoir palier aux limites imposées par MSKLC. Il nécessite un installeur pour les systèmes windows (celui-ci pourrait peut-être installer plusieurs dispositions en même temps comme sous Mac).
* Générer les pilotes normalement : un .exe, trois .msi et les .dll.
* Remplacer les dll par celles créées en batch à l’étape précédente.


==Fichier klc actuel commenté==
==== Exemples avec cette méthode ====
* [[Utilisateur:LeBret/Remplacer AltGr par Kana|Remplacer AltGr par Kana]] pour éviter l’amalgame AltGr = Ctrl + Alt
* [[Utilisateur:LeBret/2 Alt et 2 AltGr symétriques sur TypeMatrix en mode 106 touches|Avoir Alt et AltGr symétriques sur un clavier TypeMatrix en mode 106 touches]]
 
===Génerer les dlls avec le WDK===
Les fichiers sources en C sont également disponibles dans le ''[http://www.microsoft.com/en-us/download/details.aspx?id=11800 Windows Driver Kit]''.
 
Le site de l’association MON NOM ACCENTU{{R|É}} propose une [http://mon.nom.accentue.free.fr/Clavier-CreationClavier.htm explication détaillée ainsi qu’un fichier {{c|compile_i386.bat}} pour les compiler sur une machine x86].
 
Le [http://neo-layout.org/ projet de disposition Neo2 pour l’allemand] utilise lui les sources en C pour modifier capslock et ajouter carrément deux nouvelles couches à la disposition ainsi que compose (voir [http://wiki.neo-layout.org/browser/windows/kbdneo2/Quelldateien/ leur dépôt svn]).
 
==Fichier klc commenté de la version 0.6.5.1==
===En-tête===
===En-tête===
  KBD bepo0651 "fr-dvorak-bépo v0.6.5.1"
  KBD bepo0651 "fr-dvorak-bépo v0.6.5.1"
Ligne 31 : Ligne 53 :
  COMPANY "wiki pour la conception d un dvorak francais"
  COMPANY "wiki pour la conception d un dvorak francais"


On définit le nom de la dll en nom dos 8.3 ({{c|bepo0651.dll}}) ainsi que la description que l'on retrouve dans les propiétés de cette dll ainsi que dans les infos du programme dans le panneau de désinstallation.
On définit le nom de la dll (ascii 8.3) ({{c|bepo0651.dll}}) et la description que l'on retrouve dans les propiétés de cette dll ainsi que dans les infos du programme dans le panneau de désinstallation. Ces deux informations doivent être unique sur le système.
Company ne peut pas être laissé vide. Si « copyright » est vide, il indiquera la date de création de la disposition. Ces valeurs ne peuvent commencer par un « " ».


  LOCALENAME "fr-FR"
  LOCALENAME "fr-FR"


Locale langue ? "fr-CH" sur le clavier Qwertz suisse.
Langue (locale) de la disposition de clavier : fr-CH sur le clavier Qwertz suisse, fr-BE sur le clavier Azerty belge, fr-CA sur le clavier qwerty canadien,


  LOCALEID "0000040c"
  LOCALEID "0000040c"


Numéro utilisé dans la base de registre pour référencer la disposition. Il dépend du {{c|LOCALENAME}} précédent (francais 0000040c, suisse 0000100c) et sert par exemple si l'on veut activer le bépo au login de windows.
Numéro utilisé dans la base de registre pour référencer la disposition. Il dépend du {{c|LOCALENAME}} précédent :
*FR (francais) : 0000040c
*CH (suisse) : 0000100c
*BE (belge) : 0000080c
*CA (canada) : 00000c0c
 
Il sert par exemple si l'on veut activer la disposition à l'ouverture de session de windows en modifiant la base de registre.
 
*[http://www.autohotkey.com/docs/misc/Languages.htm ''Language Codes'']
*[http://msdn2.microsoft.com/en-us/library/ms776323 ''Locale identifier'']


  VERSION 1.0
  VERSION 1.0
Ligne 50 : Ligne 82 :
  0 //Column 4
  0 //Column 4
  1 //Column 5 : Shft
  1 //Column 5 : Shft
2 //Column 6 :      Ctrl
  6 //Column 7 :      Ctrl Alt
  6 //Column 7 :      Ctrl Alt
  7 //Column 8 : Shft  Ctrl Alt  
  7 //Column 8 : Shft  Ctrl Alt
Copié du clavier azerty sachant que sous windows {{touches|ctrl|alt}} donne un {{touche|algr}}
 
0 = base, 1 = {{tA|Maj}}, 2 = {{tA|Ctrl}}, 4 = {{tA|Alt}}
 
Les états 2 {{tA|Ctrl}} et 3 {{tA|Maj.}}+{{tA|Ctrl}} (soit les [[Raccourci clavier|raccourcis clavier]] en {{tA|Ctrl}} + {{tA|touche}}) ne sont pas utilisés par le pilote.
 
<code class="souscode">
      ╔═════╗ 
{{tA|Maj.}} ║1  7║ {{tA|AltGr}}+{{tA|Maj.}} (={{tA|Ctrl}}+{{tA|Alt}}+{{tA|Maj.}})
      ║    ║
      ║0  6║ {{tA|AltGr}} (={{tA|Ctrl}}+{{tA|Alt}})
      ╚═════╝
</code>


===Disposition des caractères===
===Disposition des caractères===
LAYOUT ;an extra '@' at the end is a dead key
//SC VK_ Cap 0 1 6 7
29 OEM_7 0 0024 0023 00a7 00b6 // $ # § ¶
02 1 1 0022 1 2014 -1 // " 1 —
03 2 1 00ab 2 003c 2264 // « 2 < ≤
04 3 1 00bb 3 003e 2265 // » 3 > ≥
05 4 1 0028 4 005b 201c // ( 4 [ “
06 5 1 0029 5 005d 201d // ) 5 ] ”
07 6 1 005f 6 -1 -1 // _ 6
08 7 1 002b 7 00b1 00b0 // + 7 ± °
09 8 1 002d 8 2013 2032 // - 8 – ′
0a 9 1 002f 9 00f7 2033 // / 9 ÷ ″
0b 0 1 002a 0 00d7 -1 // * 0 ×
0c OEM_4 0 003d 0040 00ac -1 // = @ ¬
0d OEM_PLUS 0 0025 00b5 2030 -1 // % µ ‰
10 A 1 b B 007c 00a6 // b B | ¦
11 Z 1 00e9 00c9 00b4@ 02dd@ // é É ´ ˝
12 E 1 p P 0026 -1 // p P &
13 R 5 o O 0153 0152 // o O œ Œ
14 T 1 00e8 00c8 0060 0060@ // è È ` `
15 Y 0 005e@ 0021 02c7@ 00a1 // ^ ! ˇ ¡
16 U 1 v V -1 -1 // v V
17 I 5 d D 00f0 00d0 // d D ð Ð
18 O 1 l L fe63@ -1 // l L ﹣
19 P 5 j J 0133 0132 // j J ij IJ
1a OEM_6 5 z Z 0259 018f // z Z ə Ə
1b OEM_1 1 w W 02d8@ -1 // w W ˘
1e Q 5 a A 00e6 00c6 // a A æ Æ
1f S 5 u U 00f9 00d9 // u U ù Ù
20 D 1 i I 00a8@ 02d9@ // i I ¨ ˙
21 F 1 e E 20ac fe67@ // e E € ﹧
22 G 0 002c 003f 2019 00bf // , ? ’ ¿
23 H 1 c C 00a9 -1 // c C ©
24 J 5 t T 00fe 00de // t T þ Þ
25 K 1 s S 00df -1 // s S ß
26 L 1 r R 00ae -1 // r R ®
27 M 5 n N 00f1 00d1 // n N ñ Ñ
28 OEM_3 1 m M 00af@ 00ba // m M ¯ º
2b OEM_5 1 00e7 00c7 00b8@ -1 // ç Ç ¸
56 OEM_102 1 00ea 00ca 002f -1 // ê Ê /
2c W 1 00e0 00c0 007e 007e@ // à À ~ ~
2d X 1 y Y 005c -1 // y Y \
2e C 1 h H 007b -1 // h H {
2f V 0 002e 003a 007d 00b7 // . : } ·
30 B 1 k K 2026 -1 // k K …
31 N 0 0027 003b 2018 -1 // ' ; ‘
32 OEM_COMMA 1 q Q -1 -1 // q Q
33 OEM_PERIOD 1 g G 02da@ -1 // g G ˚
34 OEM_2 1 x X 2020 2021 // x X † ‡
35 OEM_8 1 f F 02db@ 00aa // f F ˛ ª
39 SPACE 0 0020 00a0 0020 202f //
53 DECIMAL 0 002e 002e -1 -1 // . .
====Scan codes====
La colonne {{c|SC}} définit le ''scan code'' des touches. C'est une valeur hardware envoyée par le clavier lorsqu'une touche est pressée :
<pre class="souspre">
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│    │    │    │    │    │    │    │    │    │    │    │    │    ║        ║
│ 29 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │ 08 │ 09 │ 0A │ 0B │ 0C │ 0D ║  0E  ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║      ║    │    │    │    │    │    │    │    │    │    │    │    ║    ║
║  0F  ║ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 1A │ 1B ║  1C ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║    │    │    │    │    │    │    │    │    │    │    │    ║    ║
║  3A    ║ 1E │ 1F │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 2B ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║      ║    │    │    │    │    │    │    │    │    │    │    ║          ║
║  2A  ║ 56 │ 2C │ 2D │ 2E │ 2F │ 30 │ 31 │ 32 │ 33 │ 34 │ 35 ║    36    ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧══╦═╧════╧╦═══╧══╦═╩════╦══════╣
║      ║      ║    ║                      ║      ║      ║      ║      ║  ╔════╗
║  1D  ║ E01F ║ 38  ║          39          ║  E038 ║ E027 ║ E02F ║ E01D ║  ║ 53 ║
╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝  ╚════╝
</pre>
====Virtual key codes====
*La colonne {{c|VK_}} contient les constantes utilisées dans les entêtes des fichiers sources pour représenter des [http://api.farmanager.com/en/winapi/virtualkeycodes.html touches virtuels] (''virtual key''), c'est un code donné par le système utilsateur de windows pour représenter une frappe de touche – par exemple VK_D pour {{t|D}}, VK_1 pour {{t|1}}, etc. ([http://www.kbdedit.com/manual/low_level_vk_list.html autre liste de codes vk_]).
*La touche {{c|VK_DECIMAL}}/sc53 est la touche {{t|.}} du pavé numérique.
*VK_SPACE et VK_DECIMAL doivent être définis dans le klc.


LAYOUT ;an extra '@' at the end is a dead key
*La touche {{c|VK_OEM_102}}/sc56 – {{touche|<nowiki><</nowiki>|clavier=disposition azerty|lien=non}} {{touche|<nowiki>></nowiki>|clavier=disposition azerty|lien=non}} azerty (''lesser greater'', LSGT de [[xkb]]) – {{touche|ê}}, {{touche|Ê}} et {{touche|/}} bépo – n'est pas présente sur certains [[type de clavier|types de claviers]].


Les [[touches mortes]] ont un « @ » en fin de définition.  
Dans [[configGenerator]], ces codes sont configurés dans le fichier ''virtalKeys.conf''.


//SC VK_ Cap 0 1 2 6 7
*{{dl|windows/bepo.klc|{{c|bepo.klc}}}} :


{{c|VK_}} sont les touches virtuels pour le comportement des raccourcis… ?
<pre class="souspre">
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│OEM_│  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │  0 │OEM_│OEM_║        ║
│7  │    │    │    │    │    │    │    │    │    │    MINUS│PLUS║  <--  ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║      ║  B │OEM_│  P │  O │OEM_│OEM_│  V │  D │  L │  J │  Z │  W ║      ║
║  ->| ║    │1  │    │    │2  │4  │    │    │    │    │    │    ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║  A │  U │  I │  E │OEM_│  C │  T │  S │  R │  N │  M │OEM_║  | ║
║        ║    │    │    │    COMMA│    │    │    │    │    │    │5  ║ <-' ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║  ^  ║OEM_│  X │  Y │OEM_│OEM_│  K │OEM_│  Q │  G │  H │  F ║    ^      ║
║  |  ║102 │    │    │6  │PERIOD  │3  │    │    │    │    ║    |      ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║      ║      ║    ║                          ║    ║      ║    ║      ║  ╔═══╗
║      ║      ║    ║          SPACE          ║    ║      ║    ║      ║  DECIMAL
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝
</pre>


La colonne {{c|Cap}} définit le comportement de la touche majuscule.
*{{dl|windows/bepo-azerty.klc|{{c|bepo-azerty.klc}}}} :
<pre class="souspre">
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│OEM_│  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │  0 │OEM_│OEM_║        ║
│7  │    │    │    │    │    │    │    │    │    │    │4  │PLUS║  <--  ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║      ║  A │  Z │  E │  R │  T │  Y │  U │  I │  O │  P │OEM_│OEM_║      ║
║  ->|  ║    │    │    │    │    │    │    │    │    │    │6  │1  ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║  Q │  S │  D │  F │  G │  H │  J │  K │  L │  M │OEM_│OEM_║  | ║
║        ║    │    │    │    │    │    │    │    │    │    │3  │5  ║ <-' ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║  ^  ║OEM_│  W │  X │  C │  V │  B │  N │OEM_│OEM_│OEM_│OEM_║    ^      ║
║  |  ║102 │    │    │    │    │    │    COMMA│PERIOD|2 │8  ║    |      ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║      ║      ║    ║                          ║    ║      ║    ║      ║  ╔═══╗
║      ║      ║    ║          SPACE          ║    ║      ║    ║      ║  DECIMAL
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝
</pre>


02 1 1 0022 1 -1 2014 -1 // QUOTATION MARK, DIGIT ONE, <none>, EM DASH, <none>
*{{dl|windows/bepo-qwertz.klc|{{c|bepo-qwertz.klc}}}} :
  03 2 1 00ab 2 -1 003c 2264 // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK *, DIGIT TWO, <none>, LESS-THAN SIGN, LESS-THAN OR EQUAL TO
<pre class="souspre">
  04 3 1 00bb 3 -1 003e 2265 // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *, DIGIT THREE, <none>, GREATER-THAN SIGN, GREATER-THAN OR EQUAL TO
  ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
  05 4 1 0028 4 -1 005b 201c // LEFT PARENTHESIS, DIGIT FOUR, <none>, LEFT SQUARE BRACKET, LEFT DOUBLE QUOTATION MARK
│OEM_│  1 │  2 3 4 5 6 7 8 9 0 │OEM_│OEM_║        ║
  06 5 1 0029 5 -1 005d 201d // RIGHT PARENTHESIS, DIGIT FIVE, <none>, RIGHT SQUARE BRACKET, RIGHT DOUBLE QUOTATION MARK
  │2  │    │    │    │    │    │    │    │    │    │    │4  │6  ║  <--   ║
  07 6 1 005f 6 -1 -1 -1 // LOW LINE, DIGIT SIX, <none>, <none>, <none>
  ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
  08 7 1 002b 7 -1 00b1 00b0 // PLUS SIGN, DIGIT SEVEN, <none>, PLUS-MINUS SIGN, DEGREE SIGN
  ║      ║  Q │ W │ E R T Z │ U I O P │OEM_│OEM_║      ║
  09 8 1 002d 8 -1 2013 2032 // HYPHEN-MINUS, DIGIT EIGHT, <none>, EN DASH, PRIME
  ║  ->|  ║    │    │    │    │    │    │    │    │    │    │1  │3  ║      ║
  0a 9 1 002f 9 -1 00f7 2033 // SOLIDUS, DIGIT NINE, <none>, DIVISION SIGN, DOUBLE PRIME
  ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
  0b 0 1 002a 0 -1 00d7 -1 // ASTERISK, DIGIT ZERO, <none>, MULTIPLICATION SIGN, <none>
  ║        ║  A S D F G H J K L │OEM_│OEM_│OEM_║  | ║
  0c OEM_4 0 003d 0040 -1 00ac -1 // EQUALS SIGN, COMMERCIAL AT, <none>, NOT SIGN, <none>
  ║        ║    │    │    │    │    │    │    │    │    │7  │5  │8  ║ <-' ║
  0d OEM_PLUS 0 0025 00b5 -1 2030 -1 // PERCENT SIGN, MICRO SIGN, <none>, PER MILLE SIGN, <none>
  ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
  10 A 1 b B -1 007c 00a6 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, VERTICAL LINE, BROKEN BAR
  ║  ^ ║OEM_│ Y │ X C V B N │  M │OEM_│OEM_│OEM_║    ^      ║
  11 Z 1 00e9 00c9 -1 00b4@ 02dd@ // LATIN SMALL LETTER E WITH ACUTE, LATIN CAPITAL LETTER E WITH ACUTE, <none>, ACUTE ACCENT, U+0030 U+0032 U+0064 U+0064
  ║  |  ║102 │    │    │    │    │    │    │    COMMA│PERIOD│MINUS  |      ║
  12 E 1 p P -1 0026 -1 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, AMPERSAND, <none>
  ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
  13 R 5 o O -1 0153 0152 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, LATIN SMALL LIGATURE OE, LATIN CAPITAL LIGATURE OE
  ║      ║      ║    ║                          ║    ║      ║    ║      ║ ╔═══╗
  14 T 1 00e8 00c8 -1 0060 0060@ // LATIN SMALL LETTER E WITH GRAVE, LATIN CAPITAL LETTER E WITH GRAVE, <none>, GRAVE ACCENT, GRAVE ACCENT
  ║      ║      ║    ║          SPACE           ║    ║      ║    ║      ║  DECIMAL
  15 Y 0 005e@ 0021 -1 02c7@ 00a1 // CIRCUMFLEX ACCENT, EXCLAMATION MARK, <none>, CARON (Mandarin Chinese third tone), INVERTED EXCLAMATION MARK
  ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝
  16 U 1 v V -1 -1 -1 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, <none>, <none>
</pre>
  17 I 5 d D -1 00f0 00d0 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, LATIN SMALL LETTER ETH (Icelandic), LATIN CAPITAL LETTER ETH (Icelandic)
  18 O 1 l L -1 002f@ -1 // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, SOLIDUS, <none>
  19 P 5 j J -1 0133 0132 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, LATIN SMALL LIGATURE IJ, LATIN CAPITAL LIGATURE IJ
  1a OEM_6 5 z Z -1 0259 018f // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, LATIN SMALL LETTER SCHWA, LATIN CAPITAL LETTER SCHWA
  1b OEM_1 1 w W -1 02d8@ -1 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, BREVE, <none>
  1e Q 5 a A -1 00e6 00c6 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, LATIN SMALL LETTER AE (ash) *, LATIN CAPITAL LETTER AE (ash) *
  1f S 5 u U -1 00f9 00d9 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, LATIN SMALL LETTER U WITH GRAVE, LATIN CAPITAL LETTER U WITH GRAVE
  20 D 1 i I -1 00a8@ 02d9@ // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, DIAERESIS, DOT ABOVE (Mandarin Chinese light tone)
  21 F 1 e E -1 20ac 00a4@ // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, EURO SIGN, CURRENCY SIGN
  22 G 0 002c 003f -1 2019 00bf // COMMA, QUESTION MARK, <none>, RIGHT SINGLE QUOTATION MARK, INVERTED QUESTION MARK
  23 H 1 c C -1 00a9 -1 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, COPYRIGHT SIGN, <none>
  24 J 5 t T -1 00fe 00de // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, LATIN SMALL LETTER THORN (Icelandic), LATIN CAPITAL LETTER THORN (Icelandic)
  25 K 1 s S -1 00df -1 // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, LATIN SMALL LETTER SHARP S (German), <none>
  26 L 1 r R -1 00ae -1 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, REGISTERED SIGN, <none>
  27 M 5 n N -1 00f1 00d1 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, LATIN SMALL LETTER N WITH TILDE, LATIN CAPITAL LETTER N WITH TILDE
  28 OEM_3 1 m M -1 00af@ 00ba // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, MACRON, MASCULINE ORDINAL INDICATOR
  29 OEM_7 0 0024 0023 -1 00a7 00b6 // DOLLAR SIGN, NUMBER SIGN, <none>, SECTION SIGN, PILCROW SIGN
  2b OEM_5 1 00e7 00c7 -1 00b8@ -1 // LATIN SMALL LETTER C WITH CEDILLA, LATIN CAPITAL LETTER C WITH CEDILLA, <none>, CEDILLA, <none>
  2c W 1 00e0 00c0 -1 007e 007e@ // LATIN SMALL LETTER A WITH GRAVE, LATIN CAPITAL LETTER A WITH GRAVE, <none>, TILDE, TILDE
  2d X 1 y Y -1 005c -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, REVERSE SOLIDUS, <none>
  2e C 1 h H -1 007b -1 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, LEFT CURLY BRACKET, <none>
  2f V 0 002e 003a -1 007d 00b7 // FULL STOP, COLON, <none>, RIGHT CURLY BRACKET, MIDDLE DOT
  30 B 1 k K -1 2026 -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, HORIZONTAL ELLIPSIS, <none>
  31 N 0 0027 003b -1 2018 -1 // APOSTROPHE, SEMICOLON, <none>, LEFT SINGLE QUOTATION MARK, <none>
  32 OEM_COMMA 1 q Q -1 -1 -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, <none>, <none>
  33 OEM_PERIOD 1 g G -1 02da@ -1 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, RING ABOVE, <none>
  34 OEM_2 1 x X -1 2020 2021 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, DAGGER, DOUBLE DAGGER
  35 OEM_8 1 f F -1 02db@ 00aa // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, OGONEK, FEMININE ORDINAL INDICATOR
  39 SPACE 0 0020 00a0 -1 0020 202f // SPACE, NO-BREAK SPACE, <none>, SPACE, NARROW NO-BREAK SPACE
  56 OEM_102 1 00ea 00ca -1 002f -1 // LATIN SMALL LETTER E WITH CIRCUMFLEX, LATIN CAPITAL LETTER E WITH CIRCUMFLEX, <none>, SOLIDUS, <none>
53 DECIMAL 0 002e 002e -1 -1 -1 // FULL STOP, FULL STOP, , ,


La ligne 53 décrit la touche {{c|DECIMAL}} ({{touche|.}} sur le pavé numérique.
====Comportement du capslock====
En commentaires, les noms complets des caractères sont ajoutés par MSKLC et non généré par configGenerator.
*La colonne {{c|Cap}} définit le comportement de la touche majuscule :
** 0 pas de caps=shift,
** 1 caps=shift pour les caractères en [[accès direct]],
** 4 caps=shift pour les caractères en accès [[altgr]].
** 5 = 1 + 4


===Définition des touches mortes===
====Placement des caractères====
*Les colonnes 0, 1, 6 et 7 sont définies par le caractère lui-même pour les lettres de l'alphabat latin et les chiffres et sinon par un numéro unicode. **Les emplacements non définis sont à -1.
*Les noms complets des caractères peuvent être obtenus en commentaires en sauvegardant le .klc avec MSKLC. Ils ne sont pas générés par configGenerator. Par exemple {{c|// f F ˛ ª}} devient {{c|// LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, OGONEK, FEMININE ORDINAL INDICATOR}}. (soit > 3 800 caractères en commentaires, environ 7 ko en volume).


  DEADKEY 00b4     
====Touches mortes====
                   
*Les caractères devant se comporter comme des [[touches mortes]] ont un {{c|@}} en fin de définition. Leur comportement est défini en détail à l'aide de deux colonnes Unicode. La première est le caractère de base, la seconde le caracère résultant de la frappe de la touche morte en plus du caractère de base (où qu'il soit sur la disposition). La liste complète n'est pas détaillée, par exemple la touche morte accent grave 0060@ et la définition de « è », « ì » et « Ǹ » s'écrit :
  0041 00c1 // A -> Á
<pre class="souspre">
  0102 1eae // Ă ->
  //SC VK_ Cap 0 1 6 7
  00c2 1ea4 // Â ->
  14 T 1 00e8 00c8 0060 0060@ // è È ` `
  00c5 01fa // Å -> Ǻ
DEADKEY 0060
  0065 00e8 // e -> è
  0069 00ec // i -> ì
  004e 01f8 // N -> Ǹ
  …
  …
</pre>
====Ligatures====
*Les ligatures notées %% sont définies à part. Elle ne doivent pas contenir plus de quatre [[wp:point de code|points de code]] [[wp:UTF-16|UTF-16]]. Exemple avec {{c|« }} sur {{t|2}}, {{c| »}} sur {{t|3}}, {{c|où}} en {{tA|AltGr}}+{{t|u}} et {{c|Où}} en {{tA|Maj.}}+{{tA|AltGr}}+{{t|u}}. La disposition fr-dvorak-bépo n’utilise pas de ligatures.


Tous les caractères basés sur des touches mortes sont décrits avec deux colonnes Unicode. La première est le caractère de base, la seconde le caracère résultant de la frappe touche morte plus caractère de base où qu'il soit sur la disposition. La liste complète n'est pas détaillée.
<pre class="souspre">
//SC VK_ Cap 0 1 2 6 7
03 2 1 %% 2 -1 003c 2264 // <null>, DIGIT TWO, <none>, LESS-THAN SIGN, LESS-THAN OR EQUAL TO
04 3 1 %% 3 -1 003e 2265 // <null>, DIGIT THREE, <none>, GREATER-THAN SIGN, GREATER-THAN OR EQUAL TO
1f S 1 u U -1 %% %% // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, <null>, <null>
LIGATURE
//VK_ Mod# Char0 Char1 Char2 Char3
2 0 00ab 00a0 // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK * + NO-BREAK SPACE
3 0 00a0 00bb // NO-BREAK SPACE + RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *
S 3 006f 00f9 // LATIN SMALL LETTER O + LATIN SMALL LETTER U WITH GRAVE
S 4 004f 00f9 // LATIN CAPITAL LETTER O + LATIN SMALL LETTER U WITH GRAVE
</pre>


===Définition du nom des touches===
===Définition du nom des touches assignées à chaque scancode===
  KEYNAME
  KEYNAME
   
   
Ligne 212 : Ligne 369 :
  5c "Right Windows"
  5c "Right Windows"
  5d Application
  5d Application
 
===Définition du nom des touches mortes===
===Définition du nom des touches mortes===
  KEYNAME_DEAD
  KEYNAME_DEAD
   
   
  00b4 "ACUTE ACCENT"
  00b4 "ACUTE ACCENT"
  02dd "U+0030 U+0032 U+0064 U+0064"
  02dd "DOUBLE ACUTE ACCENT"
  0060 "GRAVE ACCENT"
  0060 "GRAVE ACCENT"
  005e "CIRCUMFLEX ACCENT"
  005e "CIRCUMFLEX ACCENT"
  02c7 "CARON (Mandarin Chinese third tone)"
  02c7 "CARON"
  002f "SOLIDUS"
002c "COMMA BELOW"
  002f "STROKE"
  02d8 "BREVE"
  02d8 "BREVE"
  00a8 "DIAERESIS"
  00a8 "DIAERESIS"
  02d9 "DOT ABOVE (Mandarin Chinese light tone)"
  02d9 "DOT ABOVE"
  00a4 "CURRENCY SIGN"
  00a4 "CURRENCY"
  00af "MACRON"
  00af "MACRON"
  00b8 "CEDILLA"
  00b8 "CEDILLA"
  007e "TILDE"
  007e "TILDE"
  02da "RING ABOVE"
  02da "RING ABOVE"
00b5 "GREEK"
  02db "OGONEK"
  02db "OGONEK"
 
0309 "HOOK ABOVE"
MSKLC ne trouve pas le nom du double accent aigu 02dd.
031b "HORN"
0323 "DOT BELOW"


===Pied de page===
===Pied de page===
Ligne 238 : Ligne 398 :
  DESCRIPTIONS
  DESCRIPTIONS
   
   
  0409 Français (fr-dvorak-bépo v0.6.5.1)
  0409 French (bépo)
040C Français (bépo)


Description du clavier utilisée dans la barre des langues.
Description du clavier utilisée dans la barre des langues, fonction des codes langue, ici définie pour le français et l’anglais<ref>Michael S. Kaplan, [http://blogs.msdn.com/michkap/archive/2007/08/25/4564548.aspx ''MSKLC keyboard layout names in your own language''], 25 août 2007.</ref>.


  LANGUAGENAMES
  LANGUAGENAMES
   
   
  0409 French (France)
  0409 French (France)
   
  040C Français (France)
Nom de la langue.
 
(optionnel) Nom de la langue utilisée dans locale. On peut avoir également :
*French (Belgique)
*French (Canada)
*French (Suisse)


  ENDKBD
  ENDKBD


==Fichier d'erreur généré par msklc==
==Alternatives au programme MSKLC==
Si quelqu'un est motivé il faudrait lire totalement le log d'erreurs lors de la compilation avec MSKLC suite au passage sur configGenerator : {{dl|windows/fr-dvorak-bepo-windows-{{numéro de version actuel}}.log|{{c|windows/fr-dvorak-bepo-windows-{{numéro de version actuel}}.log}}}}
 
=== KbdEdit ===
 
« Plus intuitif, plus puissant que MSKLC et d’une grande facilité d’utilisation, mais payant, il faut citer [http://www.kbdedit.com/ KbdEdit]. Ce logiciel crée, installe et visionne tous les pilotes. Les pilotes créés par KbdEdit ne sont malheureusement utilisables que pour les possesseurs de cet utilitaire sauf s’ils ont été générés avec la version Premium. »<ref>''Divers claviers pour améliorer le pauvre AZERTY'', http://mon.nom.accentue.free.fr/Claviers.htm (consulté le 29/12/2013)</ref>
 
=== Clavier + ===
[http://utilfr42.free.fr/util/Clavier.php Clavier +] est un outil gratuit en français permettant d’assigner des fonctions à toutes les touches du clavier. Il est disponible en 32 et 64 bits et possède une interface utilisateur accessible.
 
===AutoHotKey===
[[Windows portable|Portable Keyboard Layout]] est un script [http://www.autohotkey.com/ ''AutoHotKey''] pouvant être utilisé pour obtenir la disposition fr-dvorak-bépo sous Windows en contournant le problème des privilèges administrateur<ref>http://colemak.com/AutoHotKey</ref>.
 
Voire la procédure : http://mon.nom.accentue.free.fr/Clavier-PKL.htm
 
Voir aussi :
* http://www.framasoft.net/article3556.html (présentation du logiciel — en français)
* http://autohotkey.free.fr/docs/ (documentation — en français)
* http://ahkscript.org/docs/AutoHotkey.htm (documentation complète en anglais)
* http://www.autohotkey.com (site officiel)
 
===Modification de la base de registre ===
{{note|type=attention|Cette solution modifie la position des touches pour '''toutes''' les dispositions}}
*[http://colemak.com/Registry_remapping Registry remapping'']
*[http://webpages.charter.net/krumsick/ KeyTweak] (miroir : [http://www.softpedia.com/get/System/OS-Enhancements/KeyTweak.shtml softpedia.com]) KeyTweak – Modification des touches dans la base de registre (gratuit).
 
==Notes et références==
<references/>


*Une bonne partie des combinaisons obtenus avec les touches mortes est inutile et pourrait être supprimé du pilote.
==Liens externes==
*Il signale le choix du comportement de la touche caps pour les chiffres.
*[http://www.kbdedit.com/manual/file_import_klc_file.html KbdEdit] permet de charger des klc et de compiler une dll.
*http://keyboards.jargon-file.org/ Des klc d'autres langues que le français.
*http://www.autohotkey.com/wiki/index.php?title=Script_Listing#Keyboard_Enhancements liste de scripts AutoHotKey d’amélioration de clavier
*Igor Levicki, [http://levicki.net/articles/tips/2006/09/29/HOWTO_Build_keyboard_layouts_for_Windows_x64.php ''Comment construire une disposition de clavier pour Windows 64bit''], 29 sept. 2006 (obsolète).
[[Catégorie:Développements]]

Dernière version du 27 mars 2023 à 14:23


Les pilotes de la disposition de clavier bépo sur les systèmes d’exploitation Microsoft Windows sont créés par le logiciel Keyboard Layout Creator de Microsoft (MSKLC version 1.4, 30 janvier 2007, nécessite .NET 2.0). Ce logiciel permet la modification de la partie alphanumérique du clavier soit cinquante touches avec la barre d’espace et le séparateur décimal. Il comprend un fichier d’aide msklc.chm et la liste des noms unicode 5.0 (mettre à jour avec nameslist.txt en version 6.0] à la main).

MSKLC et pilote bépo

Les fichiers de configuration de MSKLC, des fichiers textes dont l’extension est « klc », sont obtenus en sauvegardant une disposition de clavier depuis l'interface graphique du logiciel (format UTF16-LE). Les fichiers de type bepo.klc sont les sources de la disposition bépo disponibles en plusieurs variantes ici (v1.1) et ici (v1.0). Il est possible d’utiliser configGenerator pour générer ses propres klc.

MSKLC utilise cette source pour générer une bibliothèque de liens dynamiques bepo.dll contenant le pilote de la disposition bépo ainsi qu’une application pour l’installer. Tous ces fichiers sont disponibles dans l’auto-executable 7zip bepo.exe : c’est le pilote fourni aux utilisateurs sur la page d’installation Windows. Durant l'installation, la dll est copiée dans le répertoire %windir%/system32/ (%windir%/sysWOW64/ sur les machines 64 bits).

Cette méthode simple de génération des pilotes n’est plus possible depuis que le tiret bas a été placé en clavier azertyAltGr+clavier azertyEspace pour la version 0.6.6 de la disposition.

Plusieurs remarques ont été faites par le projet à propos des limites de MSKLC (dans sa version 1.4.6000.2) :

  • l'interface de MSKLC n’accepte pas de mettre le tiret bas « _ » sur clavier azertyAltGr + clavier azertyEspace. L’erreur donnée est « ERROR: 'VK_SPACE' in Shift State 'Ctl+Alt' must be made up of white space character(s), but is defined as '_' (U+005f) instead. » ;
  • les touches mortes ne s’enchainent pas et les caractères avec diacritiques multiples ne s’obtiennent qu’avec des diacritiques combinants ;
  • absence de touche morte de type « compose » (MultiKey) ;
  • déplacement impossible des modificateurs, pour avoir AltGr symétrique par exemple ou modifier capslock.


Générer les pilotes en batch

Il est possible de contourner certaines limitations de l'interface graphique de MSKLC (par ex. mettre le tiret bas sur la barre d'espace). Le répertoire d’installation de MSKLC contient notamment l’exécutable \bin\i386\kbdutool.exe qui permet de compiler les pilotes en batch (KbdTool v3.40 - convert keyboard text file to C file or a keyboard layout DLL). L'option -u génère la bibliothèque .dll du pilote que l’on peut copier dans le répertoire system32 ou wowsys64. L’option -s génère quatre fichiers sources .H .C .RC .DEF, qu'il est également possible d'éditer (les passer en lecture seule pour qu'ils soient compilés à la place du .klc). Les fichiers sources en C sont dans le répertoire \inc\ dont kbd.h.

Création d’un pilote bépo personnalisé

La méthode utilisée pour générer les pilotes bépo peut servir pour se fabriquer un pilote personnel.

Création des dll : avec kbdutool.exe
  • Créer votre disposition de clavier en la générant avec ConfigGenerator ou en éditant un fichier .klc.
  • Placer le dans \msklc\bin\i386\ et exécuter kbdutool.exe -u votrefichier.klc en ligne de commande, cela compile la disposition/dll pour i386/x86. Le script utilisé pour bépo génère les pilotes et sources de deux dispositions pour toutes les architectures possibles (la variable ver indiquant le numéro de version). Attention, le fichier doit être encodé en UTF-16 LE (et non pas BE). Attention également dans le nom de la disposition, les noms trop longs ou avec des caractères spéciaux ont l'air de poser des problèmes.
Création des programmes d’installation : dans l’interface graphique avec une disposition au nom identique
  • Charger la disposition dans MSKLC mais remplacer le caractère « _ » en AltGr+espace par un espace.
  • Générer les pilotes normalement : un .exe, trois .msi et les .dll.
  • Remplacer les dll par celles créées en batch à l’étape précédente.

Exemples avec cette méthode

Génerer les dlls avec le WDK

Les fichiers sources en C sont également disponibles dans le Windows Driver Kit.

Le site de l’association MON NOM ACCENTUÉ propose une explication détaillée ainsi qu’un fichier compile_i386.bat pour les compiler sur une machine x86.

Le projet de disposition Neo2 pour l’allemand utilise lui les sources en C pour modifier capslock et ajouter carrément deux nouvelles couches à la disposition ainsi que compose (voir leur dépôt svn).

Fichier klc commenté de la version 0.6.5.1

En-tête

KBD	bepo0651	"fr-dvorak-bépo v0.6.5.1"

COPYRIGHT	"Public Domain"

COMPANY	"wiki pour la conception d un dvorak francais"

On définit le nom de la dll (ascii 8.3) (bepo0651.dll) et la description que l'on retrouve dans les propiétés de cette dll ainsi que dans les infos du programme dans le panneau de désinstallation. Ces deux informations doivent être unique sur le système. Company ne peut pas être laissé vide. Si « copyright » est vide, il indiquera la date de création de la disposition. Ces valeurs ne peuvent commencer par un « " ».

LOCALENAME	"fr-FR"

Langue (locale) de la disposition de clavier : fr-CH sur le clavier Qwertz suisse, fr-BE sur le clavier Azerty belge, fr-CA sur le clavier qwerty canadien,

LOCALEID	"0000040c"

Numéro utilisé dans la base de registre pour référencer la disposition. Il dépend du LOCALENAME précédent :

  • FR (francais) : 0000040c
  • CH (suisse) : 0000100c
  • BE (belge) : 0000080c
  • CA (canada) : 00000c0c

Il sert par exemple si l'on veut activer la disposition à l'ouverture de session de windows en modifiant la base de registre.

VERSION	1.0

Quelqu'un sait de quel version il s'agit ?

Définition du comportement des modificateurs

SHIFTSTATE

0	//Column 4
1	//Column 5 : Shft
6	//Column 7 :       Ctrl Alt
7	//Column 8 : Shft  Ctrl Alt

0 = base, 1 = clavier azertyMaj, 2 = clavier azertyCtrl, 4 = clavier azertyAlt

Les états 2 clavier azertyCtrl et 3 clavier azertyMaj+clavier azertyCtrl (soit les raccourcis clavier en clavier azertyCtrl + clavier azertytouche) ne sont pas utilisés par le pilote.

     ╔═════╗  
clavier azertyMaj ║1   7║ clavier azertyAltGr+clavier azertyMaj (=clavier azertyCtrl+clavier azertyAlt+clavier azertyMaj)
     ║     ║
     ║0   6║ clavier azertyAltGr (=clavier azertyCtrl+clavier azertyAlt)
     ╚═════╝ 

Disposition des caractères

LAYOUT		;an extra '@' at the end is a dead key

//SC	VK_		Cap	0	1	6	7

29	OEM_7		0	0024	0023	00a7	00b6	// $ # § ¶
02	1		1	0022	1	2014	-1	// " 1 —
03	2		1	00ab	2	003c	2264	// « 2 < ≤
04	3		1	00bb	3	003e	2265	// » 3 > ≥
05	4		1	0028	4	005b	201c	// ( 4 [ “
06	5		1	0029	5	005d	201d	// ) 5 ] ”
07	6		1	005f	6	-1	-1	// _ 6
08	7		1	002b	7	00b1	00b0	// + 7 ± °
09	8		1	002d	8	2013	2032	// - 8 – ′
0a	9		1	002f	9	00f7	2033	// / 9 ÷ ″
0b	0		1	002a	0	00d7	-1	// * 0 ×
0c	OEM_4		0	003d	0040	00ac	-1	// = @ ¬
0d	OEM_PLUS	0	0025	00b5	2030	-1	// % µ ‰	
										
10	A		1	b	B	007c	00a6	// b B | ¦
11	Z		1	00e9	00c9	00b4@	02dd@	// é É ´ ˝
12	E		1	p	P	0026	-1	// p P &
13	R		5	o	O	0153	0152	// o O œ Œ
14	T		1	00e8	00c8	0060	0060@	// è È ` `
15	Y		0	005e@	0021	02c7@	00a1	// ^ ! ˇ ¡
16	U		1	v	V	-1	-1	// v V
17	I		5	d	D	00f0	00d0	// d D ð Ð
18	O		1	l	L	fe63@	-1	// l L ﹣
19	P		5	j	J	0133	0132	// j J ij IJ
1a	OEM_6		5	z	Z	0259	018f	// z Z ə Ə
1b	OEM_1		1	w	W	02d8@	-1	// w W ˘
					
1e	Q		5	a	A	00e6	00c6	// a A æ Æ
1f	S		5	u	U	00f9	00d9	// u U ù Ù
20	D		1	i	I	00a8@	02d9@	// i I ¨ ˙
21	F		1	e	E	20ac	fe67@	// e E € ﹧
22	G		0	002c	003f	2019	00bf	// , ? ’ ¿
23	H		1	c	C	00a9	-1	// c C ©
24	J		5	t	T	00fe	00de	// t T þ Þ
25	K		1	s	S	00df	-1	// s S ß
26	L		1	r	R	00ae	-1	// r R ®
27	M		5	n	N	00f1	00d1	// n N ñ Ñ
28	OEM_3		1	m	M	00af@	00ba	// m M ¯ º
2b	OEM_5		1	00e7	00c7	00b8@	-1	// ç Ç ¸
									
56	OEM_102		1	00ea	00ca	002f	-1	// ê Ê /
2c	W		1	00e0	00c0	007e	007e@	// à À ~ ~
2d	X		1	y	Y	005c	-1	// y Y \
2e	C		1	h	H	007b	-1	// h H {
2f	V		0	002e	003a	007d	00b7	// . : } ·
30	B		1	k	K	2026	-1	// k K …
31	N		0	0027	003b	2018	-1	// ' ; ‘
32	OEM_COMMA	1	q	Q	-1	-1	// q Q
33	OEM_PERIOD	1	g	G	02da@	-1	// g G ˚	
34	OEM_2		1	x	X	2020	2021	// x X † ‡
35	OEM_8		1	f	F	02db@	00aa	// f F ˛ ª
39	SPACE		0	0020	00a0	0020	202f	//
									
53	DECIMAL		0	002e	002e	-1	-1	// . .

Scan codes

La colonne SC définit le scan code des touches. C'est une valeur hardware envoyée par le clavier lorsqu'une touche est pressée :

 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
 │    │    │    │    │    │    │    │    │    │    │    │    │    ║        ║
 │ 29 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │ 08 │ 09 │ 0A │ 0B │ 0C │ 0D ║   0E   ║
 ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
 ║       ║    │    │    │    │    │    │    │    │    │    │    │    ║     ║
 ║  0F   ║ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 1A │ 1B ║  1C ║
 ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
 ║        ║    │    │    │    │    │    │    │    │    │    │    │    ║    ║
 ║  3A    ║ 1E │ 1F │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 2B ║    ║
 ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
 ║      ║    │    │    │    │    │    │    │    │    │    │    ║           ║
 ║  2A  ║ 56 │ 2C │ 2D │ 2E │ 2F │ 30 │ 31 │ 32 │ 33 │ 34 │ 35 ║     36    ║
 ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧══╦═╧════╧╦═══╧══╦═╩════╦══════╣
 ║       ║      ║     ║                       ║       ║      ║      ║      ║  ╔════╗
 ║  1D   ║ E01F ║ 38  ║          39           ║  E038 ║ E027 ║ E02F ║ E01D ║  ║ 53 ║
 ╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝  ╚════╝

Virtual key codes

  • La colonne VK_ contient les constantes utilisées dans les entêtes des fichiers sources pour représenter des touches virtuels (virtual key), c'est un code donné par le système utilsateur de windows pour représenter une frappe de touche – par exemple VK_D pour clavier bépoD, VK_1 pour clavier bépo1, etc. (autre liste de codes vk_).
  • La touche VK_DECIMAL/sc53 est la touche clavier bépo. du pavé numérique.
  • VK_SPACE et VK_DECIMAL doivent être définis dans le klc.
  • La touche VK_OEM_102/sc56 – clavier disposition azerty< clavier disposition azerty> azerty (lesser greater, LSGT de xkb) – clavier bépoê, clavier bépoÊ et clavier bépo/ bépo – n'est pas présente sur certains types de claviers.

Dans configGenerator, ces codes sont configurés dans le fichier virtalKeys.conf.

 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │OEM_│  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │  0 │OEM_│OEM_║         ║
 │7   │    │    │    │    │    │    │    │    │    │    MINUS│PLUS║   <--   ║
 ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
 ║       ║  B │OEM_│  P │  O │OEM_│OEM_│  V │  D │  L │  J │  Z │  W ║      ║
 ║  ->|  ║    │1   │    │    │2   │4   │    │    │    │    │    │    ║      ║
 ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
 ║        ║  A │  U │  I │  E │OEM_│  C │  T │  S │  R │  N │  M │OEM_║   | ║
 ║        ║    │    │    │    COMMA│    │    │    │    │    │    │5   ║ <-' ║
 ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
 ║   ^  ║OEM_│  X │  Y │OEM_│OEM_│  K │OEM_│  Q │  G │  H │  F ║     ^      ║
 ║   |  ║102 │    │    │6   │PERIOD   │3   │    │    │    │    ║     |      ║
 ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
 ║       ║      ║     ║                           ║     ║      ║     ║      ║  ╔═══╗
 ║       ║      ║     ║           SPACE           ║     ║      ║     ║      ║  DECIMAL
 ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝
 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │OEM_│  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │  0 │OEM_│OEM_║         ║
 │7   │    │    │    │    │    │    │    │    │    │    │4   │PLUS║   <--   ║
 ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
 ║       ║  A │  Z │  E │  R │  T │  Y │  U │  I │  O │  P │OEM_│OEM_║      ║
 ║  ->|  ║    │    │    │    │    │    │    │    │    │    │6   │1   ║      ║
 ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
 ║        ║  Q │  S │  D │  F │  G │  H │  J │  K │  L │  M │OEM_│OEM_║   | ║
 ║        ║    │    │    │    │    │    │    │    │    │    │3   │5   ║ <-' ║
 ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
 ║   ^  ║OEM_│  W │  X │  C │  V │  B │  N │OEM_│OEM_│OEM_│OEM_║     ^      ║
 ║   |  ║102 │    │    │    │    │    │    COMMA│PERIOD|2 │8   ║     |      ║
 ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
 ║       ║      ║     ║                           ║     ║      ║     ║      ║  ╔═══╗
 ║       ║      ║     ║           SPACE           ║     ║      ║     ║      ║  DECIMAL
 ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝
 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │OEM_│  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │  0 │OEM_│OEM_║         ║
 │2   │    │    │    │    │    │    │    │    │    │    │4   │6   ║   <--   ║
 ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
 ║       ║  Q │  W │  E │  R │  T │  Z │  U │  I │  O │  P │OEM_│OEM_║      ║
 ║  ->|  ║    │    │    │    │    │    │    │    │    │    │1   │3   ║      ║
 ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
 ║        ║  A │  S │  D │  F │  G │  H │  J │  K │  L │OEM_│OEM_│OEM_║   | ║
 ║        ║    │    │    │    │    │    │    │    │    │7   │5   │8   ║ <-' ║
 ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
 ║   ^  ║OEM_│  Y │  X │  C │  V │  B │  N │  M │OEM_│OEM_│OEM_║     ^      ║
 ║   |  ║102 │    │    │    │    │    │    │    COMMA│PERIOD│MINUS   |      ║
 ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
 ║       ║      ║     ║                           ║     ║      ║     ║      ║  ╔═══╗
 ║       ║      ║     ║           SPACE           ║     ║      ║     ║      ║  DECIMAL
 ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝  ╚═══╝

Comportement du capslock

  • La colonne Cap définit le comportement de la touche majuscule :
    • 0 pas de caps=shift,
    • 1 caps=shift pour les caractères en accès direct,
    • 4 caps=shift pour les caractères en accès altgr.
    • 5 = 1 + 4

Placement des caractères

  • Les colonnes 0, 1, 6 et 7 sont définies par le caractère lui-même pour les lettres de l'alphabat latin et les chiffres et sinon par un numéro unicode. **Les emplacements non définis sont à -1.
  • Les noms complets des caractères peuvent être obtenus en commentaires en sauvegardant le .klc avec MSKLC. Ils ne sont pas générés par configGenerator. Par exemple // f F ˛ ª devient // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, OGONEK, FEMININE ORDINAL INDICATOR. (soit > 3 800 caractères en commentaires, environ 7 ko en volume).

Touches mortes

  • Les caractères devant se comporter comme des touches mortes ont un @ en fin de définition. Leur comportement est défini en détail à l'aide de deux colonnes Unicode. La première est le caractère de base, la seconde le caracère résultant de la frappe de la touche morte en plus du caractère de base (où qu'il soit sur la disposition). La liste complète n'est pas détaillée, par exemple la touche morte accent grave 0060@ et la définition de « è », « ì » et « Ǹ » s'écrit :
 //SC	VK_		Cap	0	1	6	7
 14	T		1	00e8	00c8	0060	0060@	// è È ` `
 
 DEADKEY	0060
 0065	00e8	// e -> è
 0069	00ec	// i -> ì
 004e	01f8	// N -> Ǹ
 …

Ligatures

  • Les ligatures notées %% sont définies à part. Elle ne doivent pas contenir plus de quatre points de code UTF-16. Exemple avec «  sur clavier bépo2,  » sur clavier bépo3, en clavier azertyAltGr+clavier bépou et en clavier azertyMaj+clavier azertyAltGr+clavier bépou. La disposition fr-dvorak-bépo n’utilise pas de ligatures.
 //SC	VK_		Cap	0	1	2	6	7
 03	2		1	%%	2	-1	003c	2264	// <null>, DIGIT TWO, <none>, LESS-THAN SIGN, LESS-THAN OR EQUAL TO
 04	3		1	%%	3	-1	003e	2265	// <null>, DIGIT THREE, <none>, GREATER-THAN SIGN, GREATER-THAN OR EQUAL TO
 1f	S		1	u	U	-1	%%	%%	// LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, <null>, <null>
 
 LIGATURE
 
 //VK_		Mod#	Char0	Char1	Char2	Char3
 2		0	00ab	00a0		// LEFT-POINTING DOUBLE ANGLE QUOTATION MARK * + NO-BREAK SPACE
 3		0	00a0	00bb		// NO-BREAK SPACE + RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *
 S		3	006f	00f9		// LATIN SMALL LETTER O + LATIN SMALL LETTER U WITH GRAVE
 S		4	004f	00f9		// LATIN CAPITAL LETTER O + LATIN SMALL LETTER U WITH GRAVE

Définition du nom des touches assignées à chaque scancode

KEYNAME

01	Esc
0e	Backspace
0f	Tab
1c	Enter
1d	Ctrl
2a	Shift
36	"Right Shift"
37	"Num *"
38	Alt
39	Space
3a	"Caps Lock"
3b	F1
3c	F2
3d	F3
3e	F4
3f	F5
40	F6
41	F7
42	F8
43	F9
44	F10
45	Pause
46	"Scroll Lock"
47	"Num 7"
48	"Num 8"
49	"Num 9"
4a	"Num -"
4b	"Num 4"
4c	"Num 5"
4d	"Num 6"
4e	"Num +"
4f	"Num 1"
50	"Num 2"
51	"Num 3"
52	"Num 0"
53	"Num Del"
54	"Sys Req"
57	F11
58	F12
7c	F13
7d	F14
7e	F15
7f	F16
80	F17
81	F18
82	F19
83	F20
84	F21
85	F22
86	F23
87	F24

KEYNAME_EXT

1c	"Num Enter"
1d	"Right Ctrl"
35	"Num /"
37	"Prnt Scrn"
38	"Right Alt"
45	"Num Lock"
46	Break
47	Home
48	Up
49	"Page Up"
4b	Left
4d	Right
4f	End
50	Down
51	"Page Down"
52	Insert
53	Delete
54	<00>
56	Help
5b	"Left Windows"
5c	"Right Windows"
5d	Application

Définition du nom des touches mortes

KEYNAME_DEAD

00b4	"ACUTE ACCENT"
02dd	"DOUBLE ACUTE ACCENT"
0060	"GRAVE ACCENT"
005e	"CIRCUMFLEX ACCENT"
02c7	"CARON"
002c	"COMMA BELOW"
002f	"STROKE"
02d8	"BREVE"
00a8	"DIAERESIS"
02d9	"DOT ABOVE"
00a4	"CURRENCY"
00af	"MACRON"
00b8	"CEDILLA"
007e	"TILDE"
02da	"RING ABOVE"
00b5	"GREEK"
02db	"OGONEK"
0309	"HOOK ABOVE"
031b	"HORN"
0323	"DOT BELOW"

Pied de page

DESCRIPTIONS

0409	French (bépo)
040C	Français (bépo)

Description du clavier utilisée dans la barre des langues, fonction des codes langue, ici définie pour le français et l’anglais[1].

LANGUAGENAMES

0409	French (France)
040C	Français (France)

(optionnel) Nom de la langue utilisée dans locale. On peut avoir également :

  • French (Belgique)
  • French (Canada)
  • French (Suisse)
ENDKBD

Alternatives au programme MSKLC

KbdEdit

« Plus intuitif, plus puissant que MSKLC et d’une grande facilité d’utilisation, mais payant, il faut citer KbdEdit. Ce logiciel crée, installe et visionne tous les pilotes. Les pilotes créés par KbdEdit ne sont malheureusement utilisables que pour les possesseurs de cet utilitaire sauf s’ils ont été générés avec la version Premium. »[2]

Clavier +

Clavier + est un outil gratuit en français permettant d’assigner des fonctions à toutes les touches du clavier. Il est disponible en 32 et 64 bits et possède une interface utilisateur accessible.

AutoHotKey

Portable Keyboard Layout est un script AutoHotKey pouvant être utilisé pour obtenir la disposition fr-dvorak-bépo sous Windows en contournant le problème des privilèges administrateur[3].

Voire la procédure : http://mon.nom.accentue.free.fr/Clavier-PKL.htm

Voir aussi :

Modification de la base de registre

Attention

Cette solution modifie la position des touches pour toutes les dispositions

Notes et références

  1. Michael S. Kaplan, MSKLC keyboard layout names in your own language, 25 août 2007.
  2. Divers claviers pour améliorer le pauvre AZERTY, http://mon.nom.accentue.free.fr/Claviers.htm (consulté le 29/12/2013)
  3. http://colemak.com/AutoHotKey

Liens externes