Pilote Windows
Cette page fourni des pilotes fr-dvorak-bépo pour windows basé sur des touches virtuelles azerty français pour les raccourcis avec clavier bépoCtrl (sauf sous Word ou Outlook…). Plus d’info sur la page de discussion.
klc est l’extension d’un fichier texte utilisé par le logiciel Keyboard Layout Creator de Microsoft (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.
Le fichier windows/fr-dvorak-bepo.klc
disponible sur le dépôt subversion du projet est généré automatiquement avec le programme 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 7zip windows/fr-dvorak-bepo-1.1rc2.exe
(infos) : c’est le pilote fourni aux utilisateurs sur la page d’installation Windows. La dll est copié dans le répertoire %windir%/system32/bepo0651.dll
.
Limites de MSKLC version 1.4.6000.2
MSKLC utilise .NET 2.0.
- Les touches mortes ne s'enchainent pas et donc les caractères avec diacritiques multiples ne fonctionnent qu'avec des diacritiques combinants.
- Absence de touche morte de type « compose ».
Alternative au programme MSKLC
Compiler les pilotes en batch
L'installation de MSKLC contient un fichier \bin\i386\kbdutool.exe
– KbdTool v3.40 - convert keyboard text file to C file or a keyboard layout DLL – ainsi que 5 exe qui devraient permettre de compiler en C. Il y a également 38 fichiers sources en C dans le répertoire \inc\…
dont kdb.h
.
Compiler avec les sources des pilotes
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 system32
.
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).
Autohotkey
Un script akh de AutoHotKey (site officiel) peut être utilisé pour obtenir la disposition sous windows en contournant le probème de privilèges[1].
- Pour compiler encore mieux : Compile_AHK II
- Base de données de scripts .akh pouvant servir d'exemple (annonce)
- Liste de scripts akh de la section amélioration de clavier
Modification de la base de registre
- Registry remapping
- KeyTweak – Modification des touches dans la base de registre (gratuit).
Fichier klc actuel commenté
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 le bépo au login 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 bépotouche) ne sont pas utilisés par le pilote.
1 = majuscule ╔════╗ ║1 7║ 7 = altgr+maj / ctrl+alt+maj ║0 6║ 6 = altgr / ctrl+alt ╚════╝ 0 = touche de base
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
VK_
sont les touches virtuels basées actuellement sur celles de l'azerty (autre liste de codes vk_)
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗ │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_║ |║ ║ CAPS ║ │ │ │ │ │ │ │ │ │ │3 |5 ║ <-'║ ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╩═════════╣ ║ ^ ║OEM_│ W │ X │ C │ V │ B │ N │OEM_│OEM_|OEM_│OEM_║ ^ ║ ║ | ║102 | │ │ │ │ │ COMMA|PERIOD|2 │8 ║ | ║ ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧══╦═╧════╧╦═══╧══╦═╩════╦══════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╔═══╗ ║ Ctrl ║ WinG ║ Alt ║ SPACE ║ AltGR ║ WinD ║ WinM ║ Ctrl ║ DECIMAL ╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝ ╚═══╝
- La touche
VK_DECIMAL
/sc53 est la touche clavier bépo. du pavé numérique.
- VK_SPACE et VK_DECIMAL doivent être défini 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.
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 touches mortes ont un « @ » en fin de définition et ne peuvent être nulle (les caractères combinants non plus).
- Les emplacements non définis sont à -1.
- Les ligatures ne doivent pas contenir plus de quatre points de code UTF-16.
- Les noms complets des caractères peuvent être en commentaires sont obtennus en sauvegardant le .klc avec MSKLC. Ils ne sont générés par configGenerator.
Définition des touches mortes
DEADKEY 00b4 0041 00c1 // A -> Á 0102 1eae // Ă -> Ắ 00c2 1ea4 // Â -> Ấ 00c5 01fa // Å -> Ǻ …
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.
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 "U+0030 U+0032 U+0064 U+0064" 0060 "GRAVE ACCENT" 005e "CIRCUMFLEX ACCENT" 02c7 "CARON (Mandarin Chinese third tone)" 002f "SOLIDUS" 02d8 "BREVE" 00a8 "DIAERESIS" 02d9 "DOT ABOVE (Mandarin Chinese light tone)" 00a4 "CURRENCY SIGN" 00af "MACRON" 00b8 "CEDILLA" 007e "TILDE" 02da "RING ABOVE" 02db "OGONEK"
MSKLC ne trouve pas le nom du double accent aigu 02dd. configGenerator le nomme "DOUBLE ACUTE ACCENT".
Pied de page
DESCRIPTIONS 0409 Français (fr-dvorak-bépo v0.6.5.1)
Description du clavier utilisée dans la barre des langues = première ligne du klc.
LANGUAGENAMES 0409 French (France)
French=Français=Nom de la langue utilisée dans locale. On peut avoir également :
- French (Belgique)
- French (Canada)
- French (Suisse)
ENDKBD
Fichier d'erreur généré par 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 : windows/fr-dvorak-bepo-windows-1.1rc2.log
- Une bonne partie des combinaisons obtenus avec les touches mortes est inutile et pourrait être supprimé du pilote.
- Il signale le choix du comportement de la touche caps pour les chiffres.
Les klc de configGenerator
- bépo azerty :
windows/klc/layout-1.1rc2-vkAzerty.klc
- bépo :
windows/klc/layout-1.1rc2-vkBepo.klc
- bépo azerty :
windows/klc/layout-1.1rc2-vkQwertz.klc
VK_ bépo pur
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗ │OEM_│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │OEM_│OEM_║ ║ │3 │ │ │ │ │ │ │ │ │ │ │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_║ |║ ║ CAPS ║ │ │ │ │COMMA │ │ │ │ │ │5 ║ <-'║ ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣ ║ ^ ║OEM_│OEM_│ Y │ H │OEM_│ K │OEM_│ Q │ G │ X │ F ║ ^ ║ ║ | ║102 |6 │ │ │PERIOD │7 │ │ │ │ ║ | ║ ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧══╦═╧════╧╦═══╧══╦═╩════╦══════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╔═══╗ ║ Ctrl ║ WinG ║ Alt ║ SPACE ║ AltGR ║ WinD ║ WinM ║ Ctrl ║ DECIMAL ╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝ ╚═══╝
Le pilote de Masaru n'a pas la même configuration.
Pourquoi choisit-on OEM_PLUS sur clavier bépo% et OEM_MINUS sur clavier bépo= ?
VK_ bépo-wertz
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗ │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_║ |║ ║ CAPS ║ │ │ │ │ │ │ │ │ │7 │5 │8 ║ <-'║ ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣ ║ ^ ║OEM_│ Y │ X │ C │ V │ B │ N │ M │OEM_│OEM_│OEM_║ ^ ║ ║ | ║102 | │ │ │ │ │ │ COMMA│PERIOD MINUS | ║ ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧══╦═╧════╧╦═══╧══╦═╩════╦══════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╔═══╗ ║ Ctrl ║ WinG ║ Alt ║ SPACE ║ AltGR ║ WinD ║ WinM ║ Ctrl ║ DECIMAL ╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝ ╚═══╝
Liens externes
- KBE Edit permet de charger des klc et de compiler une dll.
- http://keyboards.jargon-file.org/ Des klc d'autres langues que le français.