Pilote Windows

De Disposition de clavier bépo
Attention

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 de fichier 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.

  • MSKLC n'accepte pas de mettre le tiret bas « _ » sur clavier bépoAltGr + clavier bépoEspace.
  • 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 clavier qui n'existe pas sous Windows !Compose.

Autre manière de compiler le klc

L'installation de MSKLC contient un fichier \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 \inc\….


Alternative

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).

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 en nom dos 8.3 (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.

LOCALENAME	"fr-FR"

Locale langue ? "fr-CH" sur le clavier Qwertz suisse.

LOCALEID	"0000040c"

Numéro utilisé dans la base de registre pour référencer la disposition. Il dépend du LOCALENAME précédent (francais 0000040c, suisse 0000100c) et sert par exemple si l'on veut activer le bépo au login de windows.

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
2	//Column 6 :       Ctrl
6	//Column 7 :       Ctrl Alt
7	//Column 8 : Shft  Ctrl Alt

Les raccourcis clavier clavier bépoCtrl + clavier bépotouche ne sont pas utilisé par le pilote.

1 = majuscule
╔════╗
║1  7║ 7 = clavier bépoAltGr+maj ou ctrl+alt+maj
║0  6║ 6 = clavier bépoAltGr ou clavier bépoCtrl+clavier bépoAlt
╚════╝
0 = touche de base

Y'a t'il d'autres états exploitables ? (ctrl + maj sert à changer de disposition sous windows XP.)

Disposition des caractères

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

//SC	VK_		Cap	0	1	2	6	7

02	1		1	0022	1	-1	2014	-1		// QUOTATION MARK, DIGIT ONE, <none>, EM DASH, <none>
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
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
06	5		1	0029	5	-1	005d	201d		// RIGHT PARENTHESIS, DIGIT FIVE, <none>, RIGHT SQUARE BRACKET, RIGHT DOUBLE QUOTATION MARK
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
09	8		1	002d	8	-1	2013	2032		// HYPHEN-MINUS, DIGIT EIGHT, <none>, EN DASH, PRIME
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>
0c	OEM_4		0	003d	0040	-1	00ac	-1		// EQUALS SIGN, COMMERCIAL AT, <none>, NOT SIGN, <none>
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
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
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
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>
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 colonne SC utilise le scancode des touches :

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│    │    │    │    │    │    │    │    │    │    │    │    │    ║        ║
│ 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 ║
╚═══════╩══════╩═════╩═══════════════════════╩═══════╩══════╩══════╩══════╝  ╚════╝
  • VK_ sont les touches virtuels pour le comportement des raccourcis basé actuellement sur azerty :
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│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 de scancode clavier scancode XT53 / VK_DECIMAL est la touche clavier bépo. sur le pavé numérique (KEYNAME "Num del" KEYNAME_EXT DELETE dans la fin du klc).
  • La touche de scancode 56 / VK_OEM_102, lesser greater clavier disposition azerty< clavier disposition azerty> (lsgt de xkb) est la touche qui porte les caractères clavier bépoê, clavier bépoÊ et clavier bépo/. Elle n'est pas présente sur certains types de claviers.
  • 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

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 son numéro unicode. Les touches mortes ont un « @ » en fin de définition, certains emplacement non définis sont à -1.

  • Les noms complets des caractères sont ajoutés en commentaires par MSKLC et non généré 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.

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.

LANGUAGENAMES

0409	French (France)

Nom de la langue.

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