fr revision 1.1.1.20 1 default partial alphanumeric_keys
2 xkb_symbols "basic" {
3
4 include "latin"
5
6 name[Group1]="French";
7
8 key <TLDE> { [twosuperior, asciitilde, notsign, notsign ] };
9 key <AE01> { [ ampersand, 1, onesuperior, exclamdown ] };
10 key <AE02> { [ eacute, 2, asciitilde, oneeighth ] };
11 key <AE03> { [ quotedbl, 3, numbersign, sterling ] };
12 key <AE04> { [apostrophe, 4, braceleft, dollar ] };
13 key <AE05> { [ parenleft, 5, bracketleft, threeeighths ] };
14 key <AE06> { [ minus, 6, bar, fiveeighths ] };
15 key <AE07> { [ egrave, 7, grave, seveneighths ] };
16 key <AE08> { [underscore, 8, backslash, trademark ] };
17 key <AE09> { [ ccedilla, 9, asciicircum, plusminus ] };
18 key <AE10> { [ agrave, 0, at, degree ] };
19 key <AE11> { [parenright, degree, bracketright, questiondown ] };
20 key <AE12> { [ equal, plus, braceright, dead_ogonek ] };
21
22 key <AD01> { [ a, A, ae, AE ] };
23 key <AD02> { [ z, Z, guillemotleft, less ] };
24 key <AD03> { [ e, E, EuroSign, cent ] };
25 key <AD11> { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };
26 key <AD12> { [ dollar, sterling, currency, dead_macron ] };
27
28 key <AC01> { [ q, Q, at, Greek_OMEGA ] };
29 key <AC10> { [ m, M, mu, masculine ] };
30 key <AC11> { [ ugrave, percent, dead_circumflex, dead_caron] };
31 key <BKSL> { [ asterisk, mu, dead_grave, dead_breve ] };
32
33 key <AB01> { [ w, W, lstroke, Lstroke ] };
34 key <AB07> { [ comma, question, dead_acute, dead_doubleacute ] };
35 key <AB08> { [ semicolon, period, U2022, multiply ] }; // bullet
36 key <AB09> { [ colon, slash, periodcentered, division ] };
37 key <AB10> { [ exclam, section, dead_belowdot, dead_abovedot ] };
38
39 include "level3(ralt_switch)"
40 };
41
42 partial alphanumeric_keys
43 xkb_symbols "olpc" {
44
45 // #HW-SPECIFIC
46
47 // Contact: Sayamindu Dasgupta <sayamindu (a] laptop.org>
48 include "fr(basic)"
49
50 name[Group1]="French";
51
52 key <I219> { [ less, greater ] };
53 key <AD11> { [ dead_circumflex, dead_diaeresis, notsign, dead_abovering ] };
54 key <AB08> { [ semicolon, period, underscore, multiply ] };
55 key <TLDE> { [ twosuperior, asciitilde, VoidSymbol, VoidSymbol ] };
56
57 // Some keys only have the Shift+AltGr character printed on them (alongside
58 // the unmodified one). Make such keys shift-invariant so that the printed
59 // value is achieved by pressing AltGr or Shift+AltGr.
60 key <AB02> { [ x, X, guillemotright, guillemotright ] };
61 key <AC02> { [ s, S, ssharp, U1E9E ] };
62 key <AD02> { [ z, Z, guillemotleft, guillemotleft ] };
63 };
64
65 partial alphanumeric_keys
66 xkb_symbols "nodeadkeys" {
67
68 // Modifies the basic French layout to eliminate all dead keys
69
70 include "fr(basic)"
71
72 name[Group1]="French (no dead keys)";
73
74 key <AE12> { [ equal, plus, braceright, ogonek ] };
75 key <AD11> { [asciicircum, diaeresis ] };
76 key <AD12> { [ dollar, sterling, currency, macron ] };
77 key <AC11> { [ ugrave, percent, asciicircum, caron ] };
78 key <BKSL> { [ asterisk, mu, grave, breve ] };
79 key <AB07> { [ comma, question, acute, doubleacute ] };
80 key <AB10> { [ exclam, section, dead_belowdot, abovedot ] };
81 };
82
83
84 // Unicode French derivative
85 // Loose refactoring of the historic Linux French keyboard layout
86 //
87 // Copyright 2006-2008 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
88 //
89 // Credits (fr-latin1, fr-latin0, fr-latin9)
90 // 199x-1996 Ren Cougnenc
91 // 1997-2002 Guylhem Aznar <clavier @ externe.net>
92 // 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
93 //
94 //
95 // 1 2 3 4 5 6 7 8 9 0 + Retour
96 // & ~ " # ' { ( [ - | ` _ \ ^ @ ) ] = } arrire
97 //
98 // A Z E R T Y U I O P Entre
99 // Tab a z e r t y u i o p ^ ~ $
100 //
101 // Q S D F G H J K L M %
102 // Maj q s d f g h j k l m ' * `
103 //
104 // > W X C V B N ? . . /
105 // Shift < w x c v b n , ; : ! Shift
106 //
107 // Espace fine inscable
108 // Ctrl Meta Alt Espace Espace inscable AltGr Menu Ctrl
109 //
110 partial alphanumeric_keys
111 xkb_symbols "oss" {
112
113 include "latin"
114 include "level3(ralt_switch)"
115 include "nbsp(level4n)"
116 include "keypad(oss)"
117
118 name[Group1]="French (alt.)";
119
120 // First row
121 key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; //
122 key <AE01> { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1
123 key <AE02> { [ eacute, 2, asciitilde, Eacute ] }; // 2 ~
124 key <AE03> { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 #
125 key <AE04> { [ apostrophe, 4, braceleft, 0x1002014 ] }; // ' 4 { (tiret cadratin)
126 key <AE05> { [ parenleft, 5, bracketleft, 0x1002013 ] }; // ( 5 [ (tiret demi-cadratin)
127 key <AE06> { [ minus, 6, bar, 0x1002011 ] }; // - 6 | (tiret inscable)
128 key <AE07> { [ egrave, 7, grave, Egrave ] }; // 7 `
129 key <AE08> { [ underscore, 8, backslash, trademark ] }; // _ 8 \
130 key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] }; // 9 ^
131 key <AE10> { [ agrave, 0, at, Agrave ] }; // 0 @
132 key <AE11> { [ parenright, degree, bracketright, notequal ] }; // ) ]
133 key <AE12> { [ equal, plus, braceright, plusminus ] }; // = + }
134
135 // Second row
136 key <AD01> { [ a, A, ae, AE ] }; // a A
137 key <AD02> { [ z, Z, acircumflex, Acircumflex ] }; // z Z
138 key <AD03> { [ e, E, EuroSign, cent ] }; // e E
139 key <AD04> { [ r, R, ecircumflex, Ecircumflex ] }; // r R
140 key <AD05> { [ t, T, thorn, THORN ] }; // t T
141 key <AD06> { [ y, Y, ydiaeresis, Ydiaeresis ] }; // y Y
142 key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; // u U
143 key <AD08> { [ i, I, icircumflex, Icircumflex ] }; // i I
144 key <AD09> { [ o, O, oe, OE ] }; // o O
145 key <AD10> { [ p, P, ocircumflex, Ocircumflex ] }; // p P
146 key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^
147 key <AD12> { [ dollar, sterling, oslash, Oslash ] }; // $
148
149 // Third row
150 key <AC01> { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q
151 key <AC02> { [ s, S, ssharp, doublelowquotemark ] }; // s S
152 key <AC03> { [ d, D, ediaeresis, Ediaeresis ] }; // d D
153 key <AC04> { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F
154 key <AC05> { [ g, G, rightsinglequotemark, yen ] }; // g G
155 key <AC06> { [ h, H, eth, ETH ] }; // h H
156 key <AC07> { [ j, J, udiaeresis, Udiaeresis ] }; // j J
157 key <AC08> { [ k, K, idiaeresis, Idiaeresis ] }; // k K
158 key <AC09> { [ l, L, 0x1000140, 0x100013F ] }; // l L
159 key <AC10> { [ m, M, odiaeresis, Odiaeresis ] }; // m M
160 key <AC11> { [ ugrave, percent, dead_acute, Ugrave ] }; // % '
161 key <BKSL> { [ asterisk, mu, dead_grave, dead_macron ] }; // * `
162
163 // Fourth row
164 key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; // < >
165 key <AB01> { [ w, W, guillemotleft, leftdoublequotemark ] }; // w W
166 key <AB02> { [ x, X, guillemotright, rightdoublequotemark ] }; // x X
167 key <AB03> { [ c, C, copyright, registered ] }; // c C
168 key <AB04> { [ v, V, 0x100202F, leftarrow ] }; // v V (espace fine inscable)
169 key <AB05> { [ b, B, downarrow, uparrow ] }; // b B
170 key <AB06> { [ n, N, notsign, rightarrow ] }; // n N
171 key <AB07> { [ comma, question, questiondown, 0x1002026 ] }; // , ?
172 key <AB08> { [ semicolon, period, multiply, 0x10022C5 ] }; // ; .
173 key <AB09> { [ colon, slash, division, 0x1002215 ] }; // : /
174 key <AB10> { [ exclam, section, exclamdown, 0x1002212 ] }; // !
175 };
176
177 partial alphanumeric_keys
178 xkb_symbols "oss_latin9" {
179
180 // Restricts the fr(oss) layout to latin9 symbols
181
182 include "fr(oss)"
183 include "keypad(oss_latin9)"
184
185 name[Group1]="French (alt., Latin-9 only)";
186
187 // First row
188 key <AE01> { [ ampersand, 1, dead_caron, dead_cedilla ] }; // & 1
189 key <AE03> { [ quotedbl, 3, numbersign, dead_tilde ] }; // " 3 # ~
190 key <AE04> { [ apostrophe, 4, braceleft, underscore ] }; // ' 4 { _
191 key <AE05> { [ parenleft, 5, bracketleft, minus ] }; // ( 5 [ -
192 key <AE06> { [ minus, 6, bar, minus ] }; // - 6 | -
193 key <AE08> { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \
194 key <AE11> { [ parenright, degree, bracketright, equal ] }; // ) ] =
195
196 // Third row
197 key <AC02> { [ s, S, ssharp, guillemotleft ] }; // s S
198 key <AC04> { [ f, F, apostrophe, apostrophe ] }; // f F ' '
199 key <AC05> { [ g, G, apostrophe, yen ] }; // g G '
200 key <AC09> { [ l, L, periodcentered, periodcentered ] }; // l L
201 key <BKSL> { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * ` ^
202
203 // Fourth row
204 key <LSGT> { [ less, greater, less, greater ] }; // < > < >
205 key <AB01> { [ w, W, guillemotleft, guillemotleft ] }; // w W
206 key <AB02> { [ x, X, guillemotright, guillemotright ] }; // x X
207 key <AB04> { [ v, V, nobreakspace, less ] }; // v V < (espace inscable)
208 key <AB05> { [ b, B, minus, asciicircum ] }; // b B - ^
209 key <AB06> { [ n, N, notsign, greater ] }; // n N >
210 key <AB07> { [ comma, question, questiondown, period ] }; // , ? .
211 key <AB08> { [ semicolon, period, multiply, periodcentered ] }; // ; .
212 key <AB09> { [ colon, slash, division, slash ] }; // : / /
213 key <AB10> { [ exclam, section, exclamdown, minus ] }; // ! -
214 };
215
216 partial alphanumeric_keys
217 xkb_symbols "oss_nodeadkeys" {
218
219 // Modifies the basic fr(oss) layout to eliminate all dead keys
220
221 include "fr(oss)"
222
223 name[Group1]="French (alt., no dead keys)";
224
225 key <TLDE> { [ twosuperior, threesuperior, onesuperior, cedilla ] }; //
226 key <AE01> { [ ampersand, 1, caron, ogonek ] }; // & 1
227 key <AE03> { [ quotedbl, 3, numbersign, breve ] }; // " 3 #
228
229 key <AD11> { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^
230 key <AC11> { [ ugrave, percent, acute, Ugrave ] }; // % '
231 key <BKSL> { [ asterisk, mu, grave, macron ] }; // * `
232 };
233
234
235 // Historic Linux French keyboard layout (fr-latin9)
236 // Copyright (c) 199x, 2002 Rene Cougnenc (original work)
237 // Guylhem Aznar <clavier @ externe.net> (maintainer)
238 // Nicolas Mailhot <Nicolas.Mailhot @ laposte.net>
239 // (XFree86 submission)
240 //
241 // This layout has long been distributed and refined outside official channels.
242 // To this day it remains more feature-rich and popular than the 'fr' layout.
243 //
244 // This layout is derived from an original version by Guylhem Aznar.
245 // The original version is always available from:
246 // http://en.tldp.org/HOWTO/Francophones-HOWTO.html
247 // and is distributed under a GPL license.
248 //
249 // The author has given permission for this derived version to be distributed
250 // under the standard XFree86 license. He would like all changes to this
251 // version to be sent to him at <clavier @ externe.net>, so he can sync
252 // the identically named linux console map (kbd, linux-console) and his
253 // out-of-tree GPL version.
254 //
255 // Now follows the keyboard design description in French.
256 // (If you can't read it you probably have no business changing this file anyway:)
257 //
258 // Les accents circonflexes des principales voyelles sont obtenus avec
259 // la touche Alt_Gr, les trmas sont obtenus par Alt_Gr + Shift.
260 //
261 // ____ _________ _____________ _______
262 // | S A| S = Shift, A = AltGr + Shift | Imprime | Arrt dfil | Pause |
263 // | s a| s = normal, a = AltGr | Exec | | Halte |
264 //
265 // ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
266 // | "| 1 | 2 | 3 ,| 4 '| 5 "| 6 || 7 | 8 | 9 | 0 | | + | <-- |
267 // | "| & '| ~| " #| ' {| ( [| - || `| _ \| ^| @| ) ]| = }| |
268 // ========================================================================
269 // | |<- | A | Z | E | R | T | Y | U | I | O | P '| " `| $ | , |
270 // | ->| | a | z | e | r | t | y | u | i | o | p | ^ ~| | <-' |
271 // =================================================================== |
272 // | | Q | S | D | F | G | H | J | K | L | M | % | | |
273 // | MAJ | q | s | d | f | g | h | j | k | l | m | | * | |
274 // ========================================================================
275 // | ^ | > | W | X | C | V | B | N | ? | . | / | | ^ |
276 // | | | < || w | x | c | v | b | n | , | ; | : | ! | | |
277 // ========================================================================
278 // | | | | | | | | |
279 // | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl |
280 //
281 //
282 //
283 // Si les touches mortes fonctionnent, utiliser les accents dits
284 // morts , i.e. fonctionnant comme l'accent circonflexe & le
285 // trma des machines crire ; sont disponibles :
286 //
287 // (^) : accent circonflexe,
288 // Shift+(^) : trma,
289 // Shift+AltGr+(^) : tilde,
290 // AltGr+(1) : accent aigu,
291 // AltGr+(7) : accent grave
292 //
293 // Pour s'en servir, procder comme avec l'accent circonflexe & le trma
294 // sur les vielles machines crire :
295 //
296 // AltGr+(1) puis e :
297 // AltGr+(1) puis E :
298 //
299 partial alphanumeric_keys
300
301 xkb_symbols "latin9" {
302
303 include "latin"
304 include "nbsp(level3)"
305
306 name[Group1]="French (legacy, alt.)";
307
308 key <TLDE> { [ oe, OE, leftdoublequotemark, rightdoublequotemark ] };
309 key <AE01> { [ ampersand, 1, dead_acute, periodcentered ] };
310 key <AE02> { [ eacute, 2, asciitilde, Eacute ] };
311 key <AE03> { [ quotedbl, 3, numbersign, cedilla ] };
312 key <AE04> { [ apostrophe, 4, braceleft, acute ] };
313 key <AE05> { [ parenleft, 5, bracketleft, diaeresis ] };
314 key <AE06> { [ minus, 6, bar, brokenbar ] };
315 key <AE07> { [ egrave, 7, dead_grave, Egrave ] };
316 key <AE08> { [ underscore, 8, backslash, macron ] };
317 key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] };
318 key <AE10> { [ agrave, 0, at, Agrave ] };
319 key <AE11> { [ parenright, degree, bracketright, ydiaeresis ] };
320 key <AE12> { [ equal, plus, braceright, dead_abovering ] };
321
322 key <AD01> { [ a, A, acircumflex, adiaeresis ] };
323 key <AD02> { [ z, Z, aring, Aring ] };
324 key <AD03> { [ e, E, EuroSign, cent ] };
325 key <AD04> { [ r, R, ccedilla, Ccedilla ] };
326 key <AD05> { [ t, T, thorn, THORN ] };
327 key <AD06> { [ y, Y, yacute, Yacute ] };
328 key <AD07> { [ u, U, ucircumflex, udiaeresis ] };
329 key <AD08> { [ i, I, icircumflex, idiaeresis ] };
330 key <AD09> { [ o, O, ocircumflex, odiaeresis ] };
331 key <AD10> { [ p, P, paragraph, grave ] };
332 key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, apostrophe ] };
333 key <AD12> { [ dollar, sterling, ecircumflex, ediaeresis ] };
334
335 key <AC01> { [ q, Q, Acircumflex, Adiaeresis ] };
336 key <AC02> { [ s, S, oslash, Oslash ] };
337 key <AC03> { [ d, D, Ecircumflex, Ediaeresis ] };
338 key <AC04> { [ f, F, plusminus, ordfeminine ] };
339 key <AC05> { [ g, G, ae, AE ] };
340 key <AC06> { [ h, H, eth, ETH ] };
341 key <AC07> { [ j, J, Ucircumflex, Udiaeresis ] };
342 key <AC08> { [ k, K, Icircumflex, Idiaeresis ] };
343 key <AC09> { [ l, L, Ocircumflex, Odiaeresis ] };
344 key <AC10> { [ m, M, onesuperior, masculine ] };
345 key <AC11> { [ ugrave, percent, twosuperior, Ugrave ] };
346 key <BKSL> { [ asterisk, mu, threesuperior, yen ] };
347
348 key <LSGT> { [ less, greater, bar ] };
349 key <AB01> { [ w, W, guillemotleft ] };
350 key <AB02> { [ x, X, guillemotright ] };
351 key <AB03> { [ c, C, copyright ] };
352 key <AB04> { [ v, V, registered ] };
353 key <AB05> { [ b, B, ssharp, U1E9E ] };
354 key <AB06> { [ n, N, notsign ] };
355 key <AB07> { [ comma, question, questiondown ] };
356 key <AB08> { [ semicolon, period, multiply ] };
357 key <AB09> { [ colon, slash, division ] };
358 key <AB10> { [ exclam, section, exclamdown ] };
359
360 // French uses a comma as decimal separator, but keyboards are labeled with a period
361 // Will take effect when KP_Decimal is mapped to the locale decimal separator
362 key <KPDL> { [ KP_Delete, KP_Decimal, KP_Delete, KP_Decimal ] };
363
364 include "level3(ralt_switch)"
365 };
366
367 partial alphanumeric_keys
368 xkb_symbols "latin9_nodeadkeys" {
369
370 // Modifies the basic fr-latin9 layout to eliminate all dead keys
371
372 include "fr(latin9)"
373
374 name[Group1]="French (legacy, alt., no dead keys)";
375
376 key <AE01> { [ ampersand, 1, apostrophe, periodcentered ] };
377 key <AE07> { [ egrave, 7, grave, Egrave ] };
378 key <AE12> { [ equal, plus, braceright ] };
379 key <AD11> { [ asciicircum, diaeresis, asciitilde, apostrophe ] };
380 };
381
382 // Bpo:Improved ergonomic french keymap using Dvorak method.
383 // Built by community on 'Dvorak Fr / Bpo':
384 // see http://www.clavier-dvorak.org/wiki/ to join and help.
385 // XOrg integration (1.0rc2 version) in 2008
386 // by Frdric Boiteux <fboiteux at free dot fr>
387 //
388 // Bpo layout (1.0rc2 version) for a pc105 keyboard (french):
389 //
390 // S A S = Shift, A = AltGr + Shift
391 // s a s = normal, a = AltGr
392 //
393 //
394 //
395 // # 1 2 3 4 5 6 7 8 9 0 ` Retour
396 // $ " < > ( [ ) ] @ ^ + - / * = % arrire
397 //
398 // B P O ` ! V D L J Z W Entre
399 // Tab b | p & o ` v d l / j z w
400 //
401 // A U I E ; C T S R N M ,
402 // Maj a u i e , c t s r n m
403 //
404 // Y X : K ? Q G H F
405 // Shift / \ y { x } . k ~ ' q g h f Shift
406 //
407 // Espace insc. Espace insc. fin
408 // Ctrl Meta Alt (Espace) _ AltGr Menu Ctrl
409 //
410 partial alphanumeric_keys
411 xkb_symbols "bepo" {
412
413 include "level3(ralt_switch)"
414 include "keypad(oss)"
415
416 name[Group1]= "French (BEPO)";
417
418 // First row
419 key <TLDE> { [ dollar, numbersign, endash, paragraph ] }; // $ #
420 key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1
421 key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // 2 <
422 key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // 3 >
423 key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, lessthanequal ] }; // ( 4 [
424 key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, greaterthanequal ] }; // ) 5 ]
425 key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum ] }; // @ 6 ^
426 key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7
427 key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8
428 key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9
429 key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0
430 key <AE11> { [ equal, degree, notequal, minutes ] }; // =
431 key <AE12> { [ percent, grave, permille, seconds ] }; // % `
432
433 // Second row
434 key <AD01> { [ b, B, bar, brokenbar ] }; // b B |
435 key <AD02> { [ eacute, Eacute, dead_acute, dead_doubleacute ] }; //
436 key <AD03> { [ p, P, ampersand, section ] }; // p P &
437 key <AD04> { [ o, O, oe, OE ] }; // o O
438 key <AD05> { [ egrave, Egrave, dead_grave, grave ] }; // ` `
439 key <AD06> { [ dead_circumflex, exclam, exclamdown ] }; // ^ !
440 key <AD07> { [ v, V, dead_caron ] }; // v V
441 key <AD08> { [ d, D, eth, ETH ] }; // d D
442 key <AD09> { [ l, L, dead_stroke ] }; // l L /
443 key <AD10> { [ j, J, U0133, U0132 ] }; // j J
444 key <AD11> { [ z, Z, schwa, SCHWA ] }; // z Z
445 key <AD12> { [ w, W, dead_breve ] }; // w W
446
447 // Third row
448 key <AC01> { [ a, A, ae, AE ] }; // a A
449 key <AC02> { [ u, U, ugrave, Ugrave ] }; // u U
450 key <AC03> { [ i, I, dead_diaeresis, dead_abovedot ] }; // i I
451 key <AC04> { [ e, E, EuroSign, dead_currency ] }; // e E
452 key <AC05> { [ comma, semicolon, rightsinglequotemark, dead_horn ] }; // , ;
453 key <AC06> { [ c, C, copyright, U017F ] }; // c C
454 key <AC07> { [ t, T, thorn, THORN ] }; // t T
455 key <AC08> { [ s, S, ssharp, U1E9E ] }; // s S
456 key <AC09> { [ r, R, registered, trademark ] }; // r R
457 key <AC10> { [ n, N, dead_tilde ] }; // n N ~
458 key <AC11> { [ m, M, dead_macron, masculine ] }; // m M
459 key <BKSL> { [ ccedilla, Ccedilla, dead_cedilla, dead_belowcomma ] }; // ,
460
461 // Fourth row
462 key <LSGT> { [ ecircumflex, Ecircumflex, slash ] }; // /
463 key <AB01> { [ agrave, Agrave, backslash ] }; // \
464 key <AB02> { [ y, Y, braceleft, leftsinglequotemark ] }; // y Y {
465 key <AB03> { [ x, X, braceright, rightsinglequotemark ] }; // x X }
466 key <AB04> { [ period, colon, ellipsis, periodcentered ] }; // . :
467 key <AB05> { [ k, K, asciitilde ] }; // k K ~
468 key <AB06> { [ apostrophe, question, questiondown, dead_hook ] }; // ' ?
469 key <AB07> { [ q, Q, dead_abovering, dead_belowdot ] }; // q Q
470 key <AB08> { [ g, G, dead_greek ] }; // g G
471 key <AB09> { [ h, H, dagger, doubledagger ] }; // h H
472 key <AB10> { [ f, F, dead_ogonek, ordfeminine ] }; // f F
473
474 key <SPCE> { [ space, nobreakspace, underscore, U202F ] }; // (espace inscable) _ (espace inscable fin)
475 };
476
477 partial alphanumeric_keys
478 xkb_symbols "bepo_latin9" {
479
480 // Restricts the fr(bepo) layout to latin9 symbols
481
482 include "fr(bepo)"
483 include "keypad(oss_latin9)"
484
485 name[Group1]="French (BEPO, Latin-9 only)";
486
487 key <TLDE> { [ dollar, numbersign, dollar, paragraph ] }; // $ # $
488
489 key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1 ] }; // " 1
490 key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less ] }; // 2 <
491 key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater ] }; // 3 >
492 key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft ] }; // ( 4 [
493 key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright ] }; // ) 5 ]
494 key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, minus, onequarter ] }; // - 8 -
495 key <AE11> { [ equal, degree ] }; // =
496 key <AE12> { [ percent, grave ] }; // % `
497
498 key <AD01> { [ b, B, bar ] }; // b B |
499 key <AD02> { [ eacute, Eacute, dead_acute ] }; //
500 key <AD10> { [ j, J ] }; // j J
501 key <AD11> { [ z, Z ] }; // z Z
502 key <AD12> { [ w, W ] }; // w W
503
504 key <AC03> { [ i, I, dead_diaeresis ] }; // i I
505 key <AC05> { [ comma, semicolon, comma, dead_horn ] }; // , ; ,
506 key <AC06> { [ c, C, copyright ] }; // c C
507 key <AC08> { [ s, S, ssharp, U1E9E ] }; // s S
508 key <AC09> { [ r, R, registered ] }; // r R
509 key <AC11> { [ m, M, macron, masculine ] }; // m M
510
511 key <AB02> { [ y, Y, braceleft ] }; // y Y {
512 key <AB03> { [ x, X, braceright ] }; // x X }
513 key <AB04> { [ period, colon ] }; // . :
514 key <AB09> { [ h, H ] }; // h H
515 key <AB10> { [ f, F, f, ordfeminine ] }; // f F
516
517 // Note: on a besoin de redfinir les niveaux 3 et 4,
518 // donc nbsp(level2) ne suffit pas!
519 key <SPCE> { [ space, nobreakspace, underscore, nobreakspace ] }; // (espace inscable) _ (espace inscable)
520 };
521
522 // Version 1.1rc2 of the Bpo keyboard layout,
523 // normalized by the AFNOR NF Z71300 norm.
524 //
525 // Layout: https://bepo.fr/wiki/Version_1.1rc2
526 // Normalization: https://normalisation.afnor.org/actualites/faq-clavier-francais/
527 //
528 //
529 // # 1 2 3 4 5 6 7 8 9 0 `
530 // $ " < > ( [ ) ] @ ^ + - / * = % <--
531 //
532 // |<- B _ P O ` ! V D L J Z W |
533 // ->| b | p & o ` v d l / j z w <-'
534 //
535 // A U I E ; , C T S R N M
536 // CAPS a u i e , ' c t s r n ~ m
537 //
538 // ^ ^ Y X : K ? Q G H F ^
539 // | / \ y { x } . k ~ q g h f |
540 //
541 // Fine inscable Inscable
542 // Ctrl WinG Alt Espace _ AltGr WinD WinM Ctrl
543 //
544 partial alphanumeric_keys
545 xkb_symbols "bepo_afnor" {
546
547 name[Group1]= "French (BEPO, AFNOR)";
548
549 include "pc(pc105)"
550
551 key <TLDE> { type[group1] = "FOUR_LEVEL", [ dollar, numbersign, endash, paragraph ] }; // $ #
552 key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1
553 key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // 2 <
554 key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // 3 >
555 key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, U2A7D ] }; // ( 4 [
556 key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, U2A7E ] }; // ) 5 ]
557 key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum, U262D ] }; // @ 6 ^
558 key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7
559 key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8
560 key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9
561 key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0
562 key <AE11> { type[group1] = "FOUR_LEVEL", [ equal, degree, notequal, minutes ] }; // =
563 key <AE12> { type[group1] = "FOUR_LEVEL", [ percent, grave, U2030, seconds ] }; // % `
564
565 key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, underscore ] }; // b B | _
566 key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, heart ] }; //
567 key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, ampersand, section ] }; // p P &
568 key <AD04> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O
569 key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, grave ] }; // ` `
570 key <AD06> { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, exclamdown, U2620 ] }; // ^ !
571 key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, U2622 ] }; // v V
572 key <AD08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, UFDD7, U2623 ] }; // d D
573 key <AD09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, dead_stroke, sterling ] }; // l L /
574 key <AD10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, U262E, U262F ] }; // j J
575 key <AD11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, UFDD8, U2619 ] }; // z Z
576 key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U269C, U267F ] }; // w W
577
578 key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A
579 key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U
580 key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, dead_diaeresis, dead_abovedot ] }; // i I
581 key <AC04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, EuroSign, dead_currency ] }; // e E
582 key <AC05> { type[group1] = "FOUR_LEVEL", [ comma, semicolon, apostrophe, dead_belowcomma ] }; // , ; ' ,
583 key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, copyright ] }; // c C
584 key <AC07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, UFDD5, trademark ] }; // t T
585 key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, UFDD4, U017F ] }; // s S
586 key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, dead_breve, registered ] }; // r R
587 key <AC10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U2693 ] }; // n N ~
588 key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, U26FD ] }; // m M
589 key <BKSL> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, U2708, U1F12F ] }; //
590
591 key <LSGT> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex, Ecircumflex, slash, asciicircum ] }; // / ^
592 key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, backslash, singlelowquotemark ] }; // \
593 key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, braceleft, leftsinglequotemark ] }; // y Y {
594 key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, braceright, rightsinglequotemark ] }; // x X }
595 key <AB04> { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . :
596 key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, asciitilde, U2011 ] }; // k K ~
597 key <AB06> { type[group1] = "FOUR_LEVEL", [ rightsinglequotemark, question, questiondown, dead_hook ] }; // ?
598 key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, dead_horn ] }; // q Q
599 key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, dead_greek, dagger ] }; // g G
600 key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_belowdot, doubledagger ] }; // h H
601 key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, dead_ogonek, U26C4 ] }; // f F
602 key <SPCE> { type[group1] = "FOUR_LEVEL", [ space, U202F, underscore, nobreakspace ] }; // _
603
604
605 include "level3(ralt_switch)"
606 };
607
608 // Author : Francis Leboutte, http://www.algo.be/ergo/dvorak-fr.html
609 // thanks to Fabien Cazenave for his help
610 // Licence : X11
611 // Version : 0.3
612
613 // Base layer + dead AltGr key (`):
614 //
615 // * 1 2 3 4 5 6 7 8 9 0 + %
616 // _ = / - \ ^ ( ` ` ) " [ ]
617 //
618 // ? < > G ! H V C M K Z &
619 // : ' $ g . h v c m k z
620 //
621 // O A U E B F S T N D W #
622 // o a u e b f s t n d w ~
623 //
624 // | Q @ I Y X R L P J
625 // ; q { , } i y x r l p j
626 //
627 //
628 // ctrl super alt Espace Espace inscable alt super menu ctrl
629 //
630
631 // Notice the specific Caps_Lock layer:
632 //
633 // * 1 2 3 4 5 6 7 8 9 0 + %
634 //
635 //
636 // < >
637 //
638 //
639 //
640 //
641 //
642 // / -
643 //
644 //
645 //
646 // ctrl super alt Espace Espace inscable alt super menu ctrl
647 //
648
649 partial alphanumeric_keys modifier_keys
650 xkb_symbols "dvorak" {
651 name[Group1]="French (Dvorak)";
652
653 // First row
654 key <TLDE> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ underscore, asterisk ] };
655 key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 1 ] };
656 key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 2, plusminus ] };
657 key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 3, onequarter ] };
658 key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, 4, onehalf ] };
659 key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ backslash, 5, threequarters ] };
660 key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ dead_circumflex, 6 ] };
661 key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 7 ] };
662 key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch, 8, grave ] };
663 key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 9 ] };
664 key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 0 ] };
665 key <AE11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketleft, plus ] };
666 key <AE12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketright, percent ] };
667
668 // Second row
669 key <AD01> { [ colon, question, ae, AE ] };
670 key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ apostrophe, less, dollar ] };
671 key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, greater, Eacute ] };
672 key <AD04> { [ g, G, EuroSign ] };
673 key <AD05> { [ period, exclam, degree ] };
674 key <AD06> { [ h, H ] };
675 key <AD07> { [ v, V ] };
676 key <AD08> { [ c, C, ccedilla, Ccedilla ] };
677 key <AD09> { [ m, M, mu ] };
678 key <AD10> { [ k, K ] };
679 key <AD11> { [ z, Z ] };
680 key <AD12> { [ dead_diaeresis, ampersand ] };
681
682 // Third row
683 key <AC01> { [ o, O, ograve, Ograve ] };
684 key <AC02> { [ a, A, agrave, Agrave ] };
685 key <AC03> { [ u, U, ugrave, Ugrave ] };
686 key <AC04> { [ e, E, egrave, Egrave ] };
687 key <AC05> { [ b, B ] };
688 key <AC06> { [ f, F ] };
689 key <AC07> { [ s, S, guillemotleft ] };
690 key <AC08> { [ t, T ] };
691 key <AC09> { [ n, N, guillemotright ] };
692 key <AC10> { [ d, D ] };
693 key <AC11> { [ w, W ] };
694 key <BKSL> { [ asciitilde, numbersign ] };
695
696 // Fourth row
697 key <LSGT> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ agrave, ccedilla, Agrave, Ccedilla, slash ] };
698 key <AB01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ semicolon, bar, oe, OE, minus ] };
699 key <AB02> { [ q, Q, braceleft ] };
700 key <AB03> { [ comma, at, braceright ] };
701 key <AB04> { [ i, I, igrave, Igrave ] };
702 key <AB05> { [ y, Y, sterling ] };
703 key <AB06> { [ x, X ] };
704 key <AB07> { [ r, R, masculine ] };
705 key <AB08> { [ l, L ] };
706 key <AB09> { [ p, P, section ] };
707 key <AB10> { [ j, J ] };
708
709 key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
710 };
711
712 // C'WHERTY:Breton keyboard. Ar c'hlavier brezhoneg.
713 // Copyright 2009 Dominique Pell <dominique.pelle (a] gmail.com>
714 // Version: 0.1
715 //
716 //
717 // S A S = Reol = Shift, A = ArErl + Pennlizherenn = AltGr + Shift
718 // s a s = normal, a = ArErl = AltGr
719 //
720 //
721 //
722 // $ 1 2 3 4 5 6 7 8 9 0 + Souza
723 // & " # ' { ( [ - | ` - \ @ ) ] = }
724 //
725 // Toalenn C'h W E R T Y U I O OE P * Enanka
726 // c'h w e r t y u i o oe p ^ /
727 //
728 // Prenn A S D F G H J K L M !
729 // Pennli a s d $ f g h j k l m ?
730 //
731 // Q Z X C V B N CH : ;
732 // Shift q < z > x c v b n ch . , Shift
733 //
734 // Espace inscable
735 // Reol Meta Erl Espace ArErl Menu Reol
736 //
737 partial alphanumeric_keys
738 xkb_symbols "bre" {
739
740 include "keypad(oss)"
741
742 name[Group1]= "Breton (France)";
743
744 // First row
745 key <TLDE> { [ twosuperior, dead_tilde, dead_abovedot, Greek_GAMMA ] };
746 key <AE01> { [ ampersand, 1, dead_macron, Greek_DELTA ] };
747 key <AE02> { [ eacute, 2, dead_acute, Greek_THETA ] };
748 key <AE03> { [ quotedbl, 3, numbersign, Greek_LAMDA ] };
749 key <AE04> { [ apostrophe, 4, braceleft, Greek_XI ] };
750 key <AE05> { [ parenleft, 5, bracketleft, Greek_PI ] };
751 key <AE06> { [ minus, 6, bar, Greek_SIGMA ] };
752 key <AE07> { [ egrave, 7, dead_grave, Greek_PHI ] };
753 key <AE08> { [ underscore, 8, backslash, Greek_PSI ] };
754 key <AE09> { [ ccedilla, 9, plusminus, Ccedilla ] };
755 key <AE10> { [ agrave, 0, at, Greek_OMEGA ] };
756 key <AE11> { [ parenright, dead_abovering, bracketright, ssharp ] };
757 key <AE12> { [ equal, plus, braceright, notsign ] };
758
759 // Second row
760 // Handling the C'H key correctly requires an inputmethod (XIM)
761 // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
762 // key <AD01> { [ trigraph_c_h, trigraph_C_h, trigraph_C_H, Greek_alpha ] };
763 key <AD01> { [ UF8FD, UF8FE, UF8FF, Greek_alpha ] };
764 key <AD02> { [ w, W, Greek_omega, Greek_omega ] };
765 key <AD03> { [ e, E, EuroSign, Greek_epsilon ] };
766 key <AD04> { [ r, R, Greek_rho, Greek_rho ] };
767 key <AD05> { [ t, T, Greek_tau, Greek_tau ] };
768 key <AD06> { [ y, Y, Greek_psi, Greek_psi ] };
769 key <AD07> { [ u, U, Greek_upsilon, Greek_upsilon ] };
770 key <AD08> { [ i, I, idotless, Greek_iota ] };
771 key <AD09> { [ o, O, oe, OE ] };
772 key <AD10> { [ p, P, Greek_pi, Greek_pi ] };
773 key <AD11> { [ dead_circumflex, dead_diaeresis, guillemotleft, yen ] };
774 key <AD12> { [ slash, asterisk, guillemotright, sterling ] };
775
776 // Third row
777 key <AC01> { [ a, A, ae, AE ] };
778 key <AC02> { [ s, S, Greek_sigma, Greek_sigma ] };
779 key <AC03> { [ d, D, dollar, Greek_delta ] };
780 key <AC04> { [ f, F, Greek_phi, Greek_phi ] };
781 key <AC05> { [ g, G, Greek_gamma, Greek_gamma ] };
782 key <AC06> { [ h, H, Greek_eta, Greek_eta ] };
783 key <AC07> { [ j, J, Greek_finalsmallsigma, Greek_finalsmallsigma ] };
784 key <AC08> { [ k, K, Greek_kappa, Greek_kappa ] };
785 key <AC09> { [ l, L, Greek_lamda, Greek_lambda ] };
786 key <AC10> { [ m, M, Greek_mu, Greek_mu ] };
787 key <AC11> { [ ugrave, Ugrave, ubreve, registered ] };
788 key <BKSL> { [ question, exclam, questiondown, exclamdown ] };
789
790 // Fourth row
791 key <LSGT> { [ q, Q, less, Greek_theta ] };
792 key <AB01> { [ z, Z, greater, Greek_zeta ] };
793 key <AB02> { [ x, X, Greek_xi, Greek_xi ] };
794 key <AB03> { [ c, C, cent, Greek_chi ] };
795 key <AB04> { [ v, V ] };
796 key <AB05> { [ b, B, Greek_beta, Greek_beta ] };
797 key <AB06> { [ n, N, Greek_nu, Greek_nu ] };
798 // Handling the CH key correctly requires an inputmethod (XIM)
799 // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
800 // key <AB07> { [ digraph_ch, digraph_Ch, digraph_CH, Greek_omicron ] };
801 key <AB07> { [ UF8FA, UF8FB, UF8FC, Greek_omicron ] };
802 key <AB08> { [ ntilde, Ntilde ] };
803 key <AB09> { [ period, colon, section, copyright ] };
804 key <AB10> { [ comma, semicolon, percent ] };
805
806 key <SPCE> { [ space, nobreakspace, space, nobreakspace ] };
807
808 include "level3(ralt_switch)"
809 };
810
811 // Occitan layout
812 // Author : 2009 Thomas Metz <tmetz @ free.fr>
813 // Derived from the layout defined at http://www.panoccitan.org
814 // Version: 0.1
815 // Differences from OSS French keyboard :
816 // - add , , , et , , , , , , ,
817 // - change position of , , , , , , , , ,
818 //
819 //
820 // 1 2 3 4 5 6 7 8 9 0 + Retour
821 // & ~ " # ' { ( [ - | ` _ \ ^ @ ) ] = } arrire
822 //
823 // A Z E R T Y U I O P Entre
824 // Tab a z e r t y u i o p ^ $
825 //
826 // Q S D F G H J K L M %
827 // Maj q s d f g h j k l m ' * `
828 //
829 // > W X C V B N ? . . /
830 // Shift < w x c v b n , ; : ! Shift
831 //
832 // Espace fine inscable
833 // Ctrl Meta Alt Espace Espace inscable AltGr Menu Ctrl
834 //
835 partial alphanumeric_keys
836 xkb_symbols "oci" {
837
838 include "fr(oss)"
839
840 name[Group1]= "Occitan";
841
842 key <AD01> { [ a, A, aacute, Aacute ] }; // a A
843 key <AD02> { [ z, Z, ae, AE ] }; // z Z
844 key <AD05> { [ t, T, ediaeresis, Ediaeresis ] }; // t T
845 key <AD06> { [ y, Y, ucircumflex, Ucircumflex ] }; // y Y
846 key <AD07> { [ u, U, uacute, Uacute ] }; // u U
847 key <AD08> { [ i, I, iacute, Iacute ] }; // i I
848 key <AD09> { [ o, O, oacute, Oacute ] }; // o O
849 key <AD10> { [ p, P, ograve, Ograve ] }; // p P
850 key <AD11> { [ dead_circumflex, dead_diaeresis, oe, OE ] }; // ^
851
852 key <AC03> { [ d, D, acircumflex, Acircumflex ] }; // d D
853 key <AC06> { [ h, H, udiaeresis, Udiaeresis ] }; // h H
854 key <AC07> { [ j, J, icircumflex, Icircumflex ] }; // j J
855 key <AC08> { [ k, K, idiaeresis, Idiaeresis ] }; // k K
856 key <AC09> { [ l, L, ocircumflex, Ocircumflex ] }; // l L
857
858 key <AB04> { [ v, V, rightarrow, leftarrow ] }; // v V
859 key <AB06> { [ n, N, ntilde, Ntilde ] }; // n N
860 };
861
862 // Marc.Shapiro (a] inria.fr 19-sep-1998
863 // modifications : Etienne Herlent <eherlent (a] linux-france.org> june 2000
864 // adapted to the new input layer :
865 // Martin Costabel <costabel (a] wanadoo.fr> 3-jan-2001
866 // adapted for Latin9 alphabet (ISO-8859-15):
867 // Etienne Herlent <eherlent (a] linux-france.org> march 2005
868
869 // This map is an almost-complete mapping of the standard French
870 // MacIntosh keyboard under Xwindows. I tried to remain as faithful
871 // as possible to the Mac meaning of each key. I did this entirely by
872 // hand and by intuition, relying on the Clavier (Keyboard?) Desktop
873 // Accessory for the Mac meaning of keys, and on reading keysymdef.h
874 // to intuit the corresponding X names. Lacking proper documentation,
875 // I may have made some mistakes.
876
877 // Entries marked CHECK are particularly uncertain
878
879 // Entries marked MISSING mark Mac characters for which I was unable
880 // to find a corresponding keysym. (Some for sure don't: e.g. the
881 // Apple mark and the oe/OE character; others I may have simply not
882 // found.)
883
884 // Copied from macintosh_vndr/fr
885 partial alphanumeric_keys
886 xkb_symbols "mac" {
887
888 name[Group1]= "French (Macintosh)";
889
890 key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
891 key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
892 key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
893 key <AE03> { [ quotedbl, 3, VoidSymbol, VoidSymbol ] }; // CHECK all quotemarks
894 key <AE04> { [ apostrophe, 4, VoidSymbol, VoidSymbol ] };
895 key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
896 // CHECK section
897 key <AE06> { [ section, 6, paragraph, aring ] };
898 key <AE07> { [ egrave, 7, guillemotleft, guillemotright ] };
899 key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
900 key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
901 key <AE10> { [ agrave, 0, oslash, VoidSymbol ] }; // MISSING: Oslash
902 key <AE11> { [ parenright, degree, braceright, bracketright ] };
903 key <AE12> { [ minus, underscore, emdash, endash ] }; // CHECK dashes
904
905 key <AD01> { [ a, A, ae, AE ] };
906 key <AD02> { [ z, Z, Acircumflex, Aring ] };
907 key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
908 key <AD04> { [ r, R, registered, currency ] };
909 key <AD05> { [ t, T, VoidSymbol, VoidSymbol ] };
910 key <AD06> { [ y, Y, Uacute, Ydiaeresis ] }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
911 key <AD07> { [ u, U, VoidSymbol, ordfeminine ] }; // MISSING: ordmasculine?
912 key <AD08> { [ i, I, icircumflex, idiaeresis ] };
913 key <AD09> { [ o, O, oe, OE ] }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9
914 key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
915 key <AD11> { [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex ] };
916 key <AD12> { [ dollar, asterisk, EuroSign, yen ] }; // eherlent : EuroSign in Latin9
917
918 key <AC01> { [ q, Q, acircumflex, Agrave ] };
919 key <AC02> { [ s, S, Ograve, VoidSymbol ] };
920 key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
921 key <AC04> { [ f, F, VoidSymbol, periodcentered ] }; // MISSING: oblong script f??
922 key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; // MISSING: kerned fi, fl
923 key <AC06> { [ h, H, Igrave, Icircumflex ] };
924 key <AC07> { [ j, J, Idiaeresis, Iacute ] };
925 key <AC08> { [ k, K, Egrave, Ediaeresis ] };
926 key <AC09> { [ l, L, notsign, bar ] };
927 key <AC10> { [ m, M, mu, Oacute ] };
928 key <AC11> { [ ugrave,percent, Ugrave, ucircumflex ] }; // MISSING: per-mille
929 key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
930
931 key <LSGT> { [ less, greater, VoidSymbol, VoidSymbol ] };
932 key <AB01> { [ w, W, VoidSymbol, VoidSymbol ] }; // MISSING: half-guillemot (single angle bracket)
933 key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK similarequal; MISSING: extra-slanted slash
934 key <AB03> { [ c, C, copyright, cent ] };
935 key <AB04> { [ v, V, diamond, leftradical ] }; // CHECK diamond, leftradical
936 key <AB05> { [ b, B, ssharp, U1E9E ] }; // CHECK: Greek_beta or ssharp?; MISSING: oblong script s
937 key <AB06> { [ n, N, dead_tilde, asciitilde ] };
938 key <AB07> { [ comma, question, VoidSymbol, questiondown ] };
939 key <AB08> { [ semicolon, period, VoidSymbol, periodcentered ] };
940 key <AB09> { [ colon, slash, division, backslash ] };
941 key <AB10> { [ equal, plus, VoidSymbol, plusminus ] };
942
943 key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
944
945 key <KPDL> { [ comma,KP_Decimal ] };
946
947 include "level3(ralt_switch)"
948 };
949
950 partial alphanumeric_keys
951 xkb_symbols "geo" {
952 include "ge(basic)"
953
954 name[Group1]= "Georgian (France, AZERTY Tskapo)";
955
956 key <TLDE> { [ exclam, noSymbol ] };
957 key <AE01> { [ 0x0100201e, 1 ] };
958 key <AE02> { [ 0x01002116, 2 ] };
959 key <AE03> { [ percent, 3 ] };
960 key <AE04> { [ parenleft, 4 ] };
961 key <AE05> { [ colon, 5 ] };
962 key <AE06> { [ semicolon, 6 ] };
963 key <AE07> { [ question, 7 ] };
964 key <AE08> { [ 0x01002116, 8 ] };
965 key <AE09> { [ degree, 9 ] };
966 key <AE10> { [ parenright, 0 ] };
967 key <AE11> { [ minus, underscore, 0x01002014 ] };
968 key <AE12> { [ less, greater ] };
969
970 key <AD01> { [ Georgian_an, 0x010010fa ] };
971 key <AD02> { [ Georgian_zen, Z ] };
972 key <AD03> { [ Georgian_en, E, Georgian_he ] };
973 key <AD04> { [ Georgian_rae, 0x010000ae ] };
974 key <AD05> { [ Georgian_tar, T ] };
975 key <AD06> { [ Georgian_qar, 0x010010f8 ] };
976 key <AD07> { [ Georgian_un, U ] };
977 key <AD08> { [ Georgian_in, Georgian_hie ] };
978 key <AD09> { [ Georgian_on, O ] };
979 key <AD10> { [ Georgian_par, P ] };
980 key <AD11> { [ Georgian_tan, T ] };
981 key <AD12> { [ Georgian_jil, Z ] };
982
983 key <AC01> { [ Georgian_khar, Q ] };
984 key <AC02> { [ Georgian_san, S ] };
985 key <AC03> { [ Georgian_don, D ] };
986 key <AC04> { [ Georgian_phar, Georgian_fi ] };
987 key <AC05> { [ Georgian_gan, 0x010010f9 ] };
988 key <AC06> { [ Georgian_hae, Georgian_hoe ] };
989 key <AC07> { [ Georgian_jhan, 0x010010f7 ] };
990 key <AC08> { [ Georgian_kan, K ] };
991 key <AC09> { [ Georgian_las, L ] };
992 key <AC10> { [ Georgian_man, M ] };
993 key <AC11> { [ Georgian_zhar, J ] };
994 key <BKSL> { [ Georgian_chin, 0x010000a9 ] };
995
996 key <LSGT> { [ guillemotleft, guillemotright ] };
997 key <AB01> { [ Georgian_cil, W ] };
998 key <AB02> { [ Georgian_xan, Georgian_har ] };
999 key <AB03> { [ Georgian_can, 0x010000a9 ] };
1000 key <AB04> { [ Georgian_vin, Georgian_we ] };
1001 key <AB05> { [ Georgian_ban, B ] };
1002 key <AB06> { [ Georgian_nar, 0x010010fc ] };
1003 key <AB07> { [ comma, 0x01002014 ] };
1004 key <AB08> { [ Georgian_shin, S ] };
1005 key <AB09> { [ Georgian_ghan, noSymbol ] };
1006 key <AB10> { [ Georgian_char, noSymbol ] };
1007 };
1008
1009 // US keyboard made French
1010 //
1011 // Copyright (C) 2018, Florent Gallaire <f (a] gallai.re>
1012 partial alphanumeric_keys
1013 xkb_symbols "us" {
1014
1015 include "us(basic)"
1016 name[Group1]= "French (US)";
1017
1018
1019 key <TLDE> { [ grave, asciitilde, dead_grave ] };
1020 key <AE04> { [ 4, dollar, EuroSign, currency ] }; //
1021 key <AE06> { [ 6,asciicircum,dead_circumflex ] };
1022
1023 key <AD03> { [ e, E, eacute, Eacute ] }; //
1024 key <AD04> { [ r, R, egrave, Egrave ] }; //
1025 key <AD06> { [ y, Y, ydiaeresis, Ydiaeresis ] }; //
1026 key <AD07> { [ u, U, ugrave, Ugrave ] }; //
1027 key <AD08> { [ i, I, idiaeresis, Idiaeresis ] }; //
1028 key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; //
1029 key <AD10> { [ p, P, oe, OE ] }; //
1030 key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; //
1031 key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; //
1032
1033 key <AC01> { [ a, A, agrave, Agrave ] }; //
1034 key <AC02> { [ s, S, ae, AE ] }; //
1035 key <AC03> { [ d, D, ecircumflex, Ecircumflex ] }; //
1036 key <AC04> { [ f, F, ediaeresis, Ediaeresis ] }; //
1037 key <AC06> { [ h, H, udiaeresis, Udiaeresis ] }; //
1038 key <AC07> { [ j, J, ucircumflex, Ucircumflex ] }; //
1039 key <AC08> { [ k, K, icircumflex, Icircumflex ] }; //
1040 key <AC11> { [apostrophe, quotedbl,dead_diaeresis, degree ] };
1041
1042 key <AB01> { [ z, Z, acircumflex, Acircumflex ] }; //
1043 key <AB03> { [ c, C, ccedilla, Ccedilla ] }; //
1044
1045 include "level3(ralt_switch)"
1046 include "eurosign(5)"
1047 };
1048
1049 // EXTRAS:
1050
1051 partial alphanumeric_keys
1052 xkb_symbols "sun_type6" {
1053 include "sun_vndr/fr(sun_type6)"
1054 };
1055
1056
1057 partial alphanumeric_keys
1058 xkb_symbols "azerty" {
1059 name[Group1]="French (AZERTY)";
1060
1061 include "level3(ralt_switch)"
1062
1063 // French AZERTY-Keyboard layout
1064 // Author : 2015, Mats Blakstad <mats @ globalbility.org>
1065 // Based on the layout at https://en.wikipedia.org/wiki/File:KB_France.svg
1066
1067 // LAYOUT OVERVIEW
1068 // ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
1069 // | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + | <-- |
1070 // | | & | ~| " #| ' {| ( [| - || `| _ \| ^| @| ) ]| = }| |
1071 // ========================================================================
1072 // | |<- | A | Z | E | R | T | Y | U | I | O | P | | $ | , |
1073 // | ->| | a | z | e | r | t | y | u | i | o | p | ^ | | <-' |
1074 // =================================================================== |
1075 // | | Q | S | D | F | G | H | J | K | L | M | % | | |
1076 // | MAJ | q | s | d | f | g | h | j | k | l | m | | * | |
1077 // ========================================================================
1078 // | ^ | > | W | X | C | V | B | N | ? | . | / | | ^ |
1079 // | | | < | w | x | c | v | b | n | , | ; | : | ! | | |
1080 // ========================================================================
1081 // | | | | | | | | |
1082 // | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl |
1083 //
1084
1085 // First row
1086 key <TLDE> { [ twosuperior ] };
1087 key <AE01> { [ ampersand, 1 ] };
1088 key <AE02> { [ eacute, 2, asciitilde ] };
1089 key <AE03> { [ quotedbl, 3, numbersign ] };
1090 key <AE04> { [ apostrophe, 4, braceleft ] };
1091 key <AE05> { [ parenleft, 5, bracketleft ] };
1092 key <AE06> { [ minus, 6, bar ] };
1093 key <AE07> { [ egrave, 7, grave ] };
1094 key <AE08> { [ underscore, 8, backslash ] };
1095 key <AE09> { [ ccedilla, 9, asciicircum ] };
1096 key <AE10> { [ agrave, 0, at ] };
1097 key <AE11> { [ parenright, degree, bracketright ] };
1098 key <AE12> { [ equal, plus, braceright ] };
1099
1100 // Second row
1101 key <AD01> { [ a, A ] };
1102 key <AD02> { [ z, Z ] };
1103 key <AD03> { [ e, E, EuroSign ] };
1104 key <AD04> { [ r, R ] };
1105 key <AD05> { [ t, T ] };
1106 key <AD06> { [ y, Y ] };
1107 key <AD07> { [ u, U ] };
1108 key <AD08> { [ i, I ] };
1109 key <AD09> { [ o, O ] };
1110 key <AD10> { [ p, P ] };
1111 key <AD11> { [ dead_circumflex,dead_diaeresis ] };
1112 key <AD12> { [ dollar, sterling, currency ] };
1113
1114 // Third row
1115 key <AC01> { [ q, Q ] };
1116 key <AC02> { [ s, S ] };
1117 key <AC03> { [ d, D ] };
1118 key <AC04> { [ f, F ] };
1119 key <AC05> { [ g, G ] };
1120 key <AC06> { [ h, H ] };
1121 key <AC07> { [ j, J ] };
1122 key <AC08> { [ k, K ] };
1123 key <AC09> { [ l, L ] };
1124 key <AC10> { [ m, M ] };
1125 key <AC11> { [ ugrave, percent ] };
1126 key <BKSL> { [ asterisk, mu ] };
1127
1128 // Fourth row
1129 key <LSGT> { [ less, greater ] };
1130 key <AB01> { [ w, W ] };
1131 key <AB02> { [ x, X ] };
1132 key <AB03> { [ c, C ] };
1133 key <AB04> { [ v, V ] };
1134 key <AB05> { [ b, B ] };
1135 key <AB06> { [ n, N ] };
1136 key <AB07> { [ comma, question ] };
1137 key <AB08> { [ semicolon, period ] };
1138 key <AB09> { [ colon, slash ] };
1139 key <AB10> { [ exclam, section ] };
1140 };
1141
1142 // US keyboard made French (with dead keys, alternative)
1143 //
1144 // Copyright (C) 2018, Florent Gallaire <f (a] gallai.re>
1145
1146 partial alphanumeric_keys
1147 xkb_symbols "us-alt" {
1148
1149 include "us(basic)"
1150 name[Group1]= "French (US with dead keys, alt.)";
1151
1152 key <TLDE> { [dead_grave, asciitilde, grave ] };
1153 key <AE04> { [ 4, dollar, EuroSign, currency ] }; //
1154 key <AE06> { [dead_circumflex, asciicircum, 6 ] };
1155
1156 key <AD03> { [ e, E, eacute, Eacute ] }; //
1157 key <AD09> { [ o, O, oe, OE ] }; //
1158 key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; //
1159 key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; //
1160
1161 key <AC01> { [ a, A, ae, AE ] }; //
1162 key <AC11> { [dead_diaeresis, quotedbl, apostrophe ] };
1163
1164 key <AB03> { [ c, C, ccedilla, Ccedilla ] }; //
1165
1166 include "level3(ralt_switch)"
1167 include "eurosign(5)"
1168 };
1169
1170 // For physically modified US keyboard (Q <-> A, W <-> Z and ; <-> M)
1171 //
1172 // Copyright (C) 2018, Florent Gallaire <f (a] gallai.re>
1173
1174 partial alphanumeric_keys
1175 xkb_symbols "us-azerty" {
1176
1177 include "us"
1178 name[Group1]= "French (US, AZERTY)";
1179
1180 key <TLDE> { [ grave, asciitilde, dead_grave ] };
1181 key <AE02> { [ 2, at, eacute, Eacute ] }; //
1182 key <AE04> { [ 4, dollar, currency ] }; //
1183 key <AE06> { [ 6,asciicircum,dead_circumflex ] };
1184 key <AE07> { [ 7, ampersand, egrave, Egrave ] }; //
1185 key <AE09> { [ 9, parenleft, ccedilla, Ccedilla ] }; //
1186 key <AE10> { [ 0, parenright, agrave, Agrave ] }; //
1187
1188 key <AD01> { [ a, A, ae, AE ] }; //
1189 key <AD02> { [ z, Z ] };
1190 key <AD09> { [ o, O, oe, OE ] }; //
1191 key <AD11> { [bracketleft, braceleft,dead_circumflex, dead_diaeresis ] };
1192
1193 key <AC01> { [ q, Q ] };
1194 key <AC10> { [ m, M ] };
1195 key <AC11> { [apostrophe, quotedbl, ugrave, Ugrave ] }; //
1196
1197 key <AB01> { [ w, W, guillemotleft, leftdoublequotemark ] }; //
1198 key <AB02> { [ x, X,guillemotright,rightdoublequotemark ] }; //
1199 key <AB07> { [ semicolon, colon ] };
1200
1201 include "eurosign(e)"
1202 include "level3(ralt_switch)"
1203 };
1204
1205 // Unicode French standardized new azerty
1206 // Defined by the French national organization for standardization (AFNOR) in norm NF Z71-300 (http://norme-azerty.fr/)
1207 //
1208 // Credits
1209 // 2019 Cimbali <me @ cimba.li>
1210 //
1211 //
1212 // # 1 2 3 4 5 6 7 8 9 0 " Retour
1213 // @ & ( [ ) ] _ ' arrire
1214 //
1215 // A Z E R T Y U I O P Entre
1216 // Tab a z e r t { y } u i o p % - +
1217 //
1218 // Q S D F G H J K L M \
1219 // Maj q s d $ f g h j k l | m / *
1220 //
1221 // > W X C V B N ? ! =
1222 // Shift < w x c v b n ~ . , : ; Shift
1223 //
1224 // Espace fine inscable
1225 // Ctrl Meta Alt Espace Espace inscable AltGr Menu Ctrl
1226 //
1227 partial alphanumeric_keys
1228 xkb_symbols "afnor" {
1229
1230 include "latin"
1231 include "level3(ralt_switch)"
1232 include "nbsp(level3n)"
1233 include "keypad(oss)"
1234
1235 name[Group1]="French (AZERTY, AFNOR)";
1236
1237 // First row
1238 key <TLDE> { [ at, numbersign, dead_breve, dead_invertedbreve ] }; // @ # //
1239 key <AE01> { [ agrave, 1, section, Agrave ] }; // 1
1240 key <AE02> { [ eacute, 2, dead_acute, Eacute ] }; // 2
1241 key <AE03> { [ egrave, 3, dead_grave, Egrave ] }; // 3
1242 key <AE04> { [ ecircumflex, 4, ampersand, Ecircumflex ] }; // 4 &
1243 key <AE05> { [ parenleft, 5, bracketleft, dead_doubleacute ] }; // ( 5 [
1244 key <AE06> { [ parenright, 6, bracketright, dead_doublegrave ] }; // ) 6 ]
1245 key <AE07> { [ leftsinglequotemark, 7, dead_macron, VoidSymbol ] }; // 7
1246 key <AE08> { [rightsinglequotemark, 8, underscore, emdash ] }; // 8 _
1247 key <AE09> { [ guillemotleft, 9, leftdoublequotemark, U2039 ] }; // 9
1248 key <AE10> { [ guillemotright, 0, rightdoublequotemark, U203A ] }; // 0
1249 key <AE11> { [ apostrophe, quotedbl, degree, dead_abovering ] }; // ' "
1250 key <AE12> { [ dead_circumflex, dead_diaeresis, dead_caron, VoidSymbol ] }; // //
1251
1252 // Second row
1253 key <AD01> { [ a, A, ae, AE ] }; // a A
1254 key <AD02> { [ z, Z, sterling, VoidSymbol ] }; // z Z
1255 key <AD03> { [ e, E, EuroSign, VoidSymbol ] }; // e E
1256 key <AD04> { [ r, R, registered, VoidSymbol ] }; // r R
1257 key <AD05> { [ t, T, braceleft, trademark ] }; // t T {
1258 key <AD06> { [ y, Y, braceright, VoidSymbol ] }; // y Y }
1259 key <AD07> { [ u, U, ugrave, Ugrave ] }; // u U
1260 key <AD08> { [ i, I, dead_abovedot, dead_belowdot ] }; // i I //
1261 key <AD09> { [ o, O, oe, OE ] }; // o O
1262 key <AD10> { [ p, P, percent, permille ] }; // p P %
1263 key <AD11> { [ minus, endash, U2212, U2011 ] }; // - // signe moins (minus sign), trait d'union inscable (non-breaking hyphen)
1264 key <AD12> { [ plus, plusminus, dagger, doubledagger ] }; // +
1265
1266 // Third row
1267 key <AC01> { [ q, Q, Greek_theta, VoidSymbol ] }; // q Q
1268 key <AC02> { [ s, S, ssharp, U1E9E ] }; // s S // lettre majuscule latine S dur (latin capital letter sharp s)
1269 key <AC03> { [ d, D, dollar, VoidSymbol ] }; // d D $
1270 key <AC04> { [ f, F, dead_currency, VoidSymbol ] }; // f F
1271 key <AC05> { [ g, G, dead_greek, VoidSymbol ] }; // g G
1272 key <AC06> { [ h, H, VoidSymbol, dead_belowmacron ] }; // h H // Missing dead key for other european keys ()
1273 key <AC07> { [ j, J, VoidSymbol, VoidSymbol ] }; // j J
1274 key <AC08> { [ k, K, dead_stroke, VoidSymbol ] }; // k K //
1275 key <AC09> { [ l, L, bar, VoidSymbol ] }; // l L |
1276 key <AC10> { [ m, M, infinity, VoidSymbol ] }; // m M
1277 key <AC11> { [ slash, backslash, division, radical ] }; // / \
1278 key <BKSL> { [ asterisk, onehalf, multiply, onequarter ] }; // *
1279
1280 // Fourth row
1281 key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; // < >
1282 key <AB01> { [ w, W, ezh, EZH ] }; // w W
1283 key <AB02> { [ x, X, copyright, VoidSymbol ] }; // x X
1284 key <AB03> { [ c, C, ccedilla, Ccedilla ] }; // c C
1285 key <AB04> { [ v, V, dead_cedilla, dead_ogonek ] }; // v V //
1286 key <AB05> { [ b, B, dead_stroke, VoidSymbol ] }; // b B //
1287 key <AB06> { [ n, N, dead_tilde, VoidSymbol ] }; // n N ~
1288 key <AB07> { [ period, question, questiondown, VoidSymbol ] }; // . ?
1289 key <AB08> { [ comma, exclam, exclamdown, dead_belowcomma ] }; // , ! //
1290 key <AB09> { [ colon, ellipsis, periodcentered, VoidSymbol ] }; // :
1291 key <AB10> { [ semicolon, equal, similarequal, notequal ] }; // ; =
1292 };
1293