more fr(dvorak*) variants, b.fd.o#8728
[xorg/xkeyboard-config] / symbols / fr
1 // $XKeyboardConfig$
2
3 // based on a keyboard map from an 'xkb/symbols/fr' file
4 //
5 // $XFree86: xc/programs/xkbcomp/symbols/fr,v 1.2 2002/11/22 04:03:28 dawes Exp $
6
7 partial default alphanumeric_keys
8 xkb_symbols "basic" {
9
10     include "latin"
11
12     name[Group1]="France";
13
14     key <AE01>  { [ ampersand,          1,  onesuperior,   exclamdown ] };
15     key <AE02>  { [    eacute,          2,   asciitilde,    oneeighth ] };
16     key <AE03>  { [  quotedbl,          3,   numbersign,     sterling ] };
17     key <AE04>  { [apostrophe,          4,    braceleft,       dollar ] };
18     key <AE05>  { [ parenleft,          5,  bracketleft, threeeighths ] };
19     key <AE06>  { [     minus,          6,          bar,  fiveeighths ] };
20     key <AE07>  { [    egrave,          7,        grave, seveneighths ] };
21     key <AE08>  { [underscore,          8,    backslash,    trademark ] };
22     key <AE09>  { [  ccedilla,          9,  asciicircum,    plusminus ] };
23     key <AE10>  { [    agrave,          0,           at,       degree ] };
24     key <AE11>  { [parenright,     degree, bracketright, questiondown ] };
25     key <AE12>  { [     equal,       plus,   braceright,  dead_ogonek ] };
26
27     key <AD01>  { [         a,          A,           ae,           AE ] };
28     key <AD02>  { [         z,          Z, guillemotleft,        less ] };
29     key <AD03>  { [         e,          E,     EuroSign,         cent ] };
30     key <AD11>  { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };
31     key <AD12>  { [    dollar,   sterling,     currency,  dead_macron ] };
32
33     key <AC01>  { [         q,          Q,           at,  Greek_OMEGA ] };
34     key <AC10>  { [         m,          M,           mu,    masculine ] };
35     key <AC11>  { [    ugrave,    percent, dead_circumflex, dead_caron] };
36     key <TLDE>  { [twosuperior, asciitilde,     notsign,      notsign ] };
37
38     key <BKSL>  { [  asterisk,         mu,   dead_grave,   dead_breve ] };
39     key <AB01>  { [         w,          W,      lstroke,      Lstroke ] };
40     key <AB07>  { [     comma,   question,   dead_acute, dead_doubleacute ] };
41     key <AB08>  { [ semicolon,     period, horizconnector,   multiply ] };
42     key <AB09>  { [     colon,      slash, periodcentered,   division ] };
43     key <AB10>  { [    exclam,    section, dead_belowdot, dead_abovedot ] };
44
45     include "level3(ralt_switch)"
46 };
47
48 partial alphanumeric_keys
49 xkb_symbols "Sundeadkeys" {
50
51     // Modifies the basic French layout to use the Sun dead keys
52
53     include "fr(basic)"
54
55     key <AD11>  { [SunFA_Circum, SunFA_Diaeresis ]      };
56     key <AB07>  { [comma,   question,  SunFA_Acute, dead_doubleacute ]  };
57 };
58
59 partial alphanumeric_keys
60 xkb_symbols "sundeadkeys" {
61     include "fr(Sundeadkeys)"
62
63     name[Group1]="France - Sun dead keys";
64 };
65
66 partial alphanumeric_keys
67 xkb_symbols "nodeadkeys" {
68
69     // Modifies the basic French layout to eliminate all dead keys
70
71     include "fr(basic)"
72
73     name[Group1]="France - Eliminate dead keys";
74
75     key <AE12>  { [     equal,       plus,   braceright,       ogonek ] };
76     key <AD11>  { [asciicircum,  diaeresis ]    };
77     key <AD12>  { [    dollar,   sterling,     currency,       macron ] };
78     key <AC11>  { [    ugrave,    percent,  asciicircum,        caron ] };
79     key <BKSL>  { [  asterisk,         mu,        grave,        breve ] };
80     key <AB07>  { [     comma,   question,        acute,  doubleacute ] };
81     key <AB10>  { [    exclam,    section, dead_belowdot,    abovedot ] };
82 };
83
84
85 // Unicode French derivative
86 // Loose refactoring of the historic Linux French keyboard layout
87 //
88 // Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
89 //
90 // Credits (fr-latin1, fr-latin0, fr-latin9)
91 //   © 199x-1996 René Cougnenc ✝
92 //   © 1997-2002 Guylhem Aznar <clavier @ externe.net> 
93 //   © 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
94 //
95 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
96 // │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃
97 // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃  arrière┃
98 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
99 // ┃       ┃ A Æ │ Z Â │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃
100 // ┃Tab ↹  ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ø ┃   ⏎   ┃
101 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
102 // ┃        ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃      ┃
103 // ┃Maj ⇬   ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃      ┃
104 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
105 // ┃       ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃             ┃
106 // ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧      ┃
107 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
108 // ┃       ┃       ┃       ┃ ␣              Espace insécable ⍽ ┃       ┃       ┃       ┃
109 // ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ Espace                        ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
110 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
111 partial alphanumeric_keys
112 xkb_symbols "oss" {
113
114     include "latin"
115     include "level3(ralt_switch)"
116     include "keypad(oss)"
117
118     name[Group1]="France - Alternative";
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 insécable)
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,              Ooblique ] }; // $ £ ø Ø
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 insécable)
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     // Make nobreakspace harder to hit
177     key <SPCE>  { [            space,            space,                space,          nobreakspace ] }; // ␣ ␣ ␣ ⍽ (espace insécable)
178 };
179
180 partial alphanumeric_keys
181 xkb_symbols "oss_latin9" {
182
183     // Restricts the fr(oss) layout to latin9 symbols
184
185     include "fr(oss)"
186     include "keypad(oss_latin9)"
187
188     name[Group1]="France - Alternative, latin-9 only";
189
190     // First row
191     key <AE01>  { [        ampersand,                1,           dead_caron,          dead_cedilla ] }; // & 1 ˇ ¸
192     key <AE03>  { [         quotedbl,                3,           numbersign,            dead_tilde ] }; // " 3 # ~
193     key <AE04>  { [       apostrophe,                4,            braceleft,            underscore ] }; // ' 4 { _
194     key <AE05>  { [        parenleft,                5,          bracketleft,                 minus ] }; // ( 5 [ -
195     key <AE06>  { [            minus,                6,                  bar,                 minus ] }; // - 6 | -
196     key <AE08>  { [       underscore,                8,            backslash,             backslash ] }; // _ 8 \ \
197     key <AE11>  { [       parenright,           degree,         bracketright,                 equal ] }; // ) ° ] =
198
199     // Third row
200     key <AC02>  { [                s,                S,               ssharp,         guillemotleft ] }; // s S ß « 
201     key <AC04>  { [                f,                F,           apostrophe,            apostrophe ] }; // f F ' '
202     key <AC05>  { [                g,                G,           apostrophe,                   yen ] }; // g G ' ¥
203     key <AC09>  { [                l,                L,       periodcentered,        periodcentered ] }; // l L · ·
204     key <BKSL>  { [         asterisk,               mu,           dead_grave,       dead_circumflex ] }; // * µ ` ^ 
205
206     // Fourth row
207     key <LSGT>  { [             less,          greater,                 less,               greater ] }; // < > < >
208     key <AB01>  { [                w,                W,        guillemotleft,         guillemotleft ] }; // w W « «
209     key <AB02>  { [                x,                X,       guillemotright,        guillemotright ] }; // x X » »
210     key <AB04>  { [                v,                V,         nobreakspace,                  less ] }; // v V ⍽ < (espace insécable)
211     key <AB05>  { [                b,                B,                minus,           asciicircum ] }; // b B - ^
212     key <AB06>  { [                n,                N,              notsign,               greater ] }; // n N ¬ >
213     key <AB07>  { [            comma,         question,         questiondown,                period ] }; // , ? ¿ .
214     key <AB08>  { [        semicolon,           period,             multiply,        periodcentered ] }; // ; . × ·
215     key <AB09>  { [            colon,            slash,             division,                 slash ] }; // : / ÷ /
216     key <AB10>  { [           exclam,          section,           exclamdown,                 minus ] }; // ! § ¡ -
217 };
218
219 partial alphanumeric_keys
220 xkb_symbols "oss_Sundeadkeys" {
221
222     // Modifies the basic fr(oss) layout to use the Sun dead keys
223
224     include "fr(oss)"
225
226     // First row
227     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,         SunFA_Cedilla ] }; // ¹ ² ³ ¸ 
228
229     // Second row
230     key <AD11>  { [     SunFA_Circum,  SunFA_Diaeresis,          SunFA_Tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚
231
232     //Third row
233     key <AC11>  { [           ugrave,          percent,          SunFA_Acute,                Ugrave ] }; // ù % ' Ù
234     key <BKSL>  { [         asterisk,               mu,          SunFA_Grave,           dead_macron ] }; // * µ ` ̄
235 };
236
237 partial alphanumeric_keys
238 xkb_symbols "oss_sundeadkeys" {
239
240     include "fr(oss_Sundeadkeys)"
241
242     name[Group1]="France - Alternative, Sun dead keys";
243 };
244
245 partial alphanumeric_keys
246 xkb_symbols "oss_nodeadkeys" {
247
248     // Modifies the basic fr(oss) layout to eliminate all dead keys
249
250     include "fr(oss)"
251
252     name[Group1]="France - Alternative, eliminate dead keys";
253
254     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,               cedilla ] }; // ² ³ ¹ ¸ 
255     key <AE01>  { [        ampersand,                1,                caron,                ogonek ] }; // & 1 ˇ ̨
256     key <AE03>  { [         quotedbl,                3,           numbersign,                 breve ] }; // " 3 # ˘
257
258     // Second row
259     key <AD11>  { [  dead_circumflex,   dead_diaeresis,           asciitilde,                 Aring ] }; // ^ ̈ ̃ Å
260     key <AC11>  { [           ugrave,          percent,                acute,                Ugrave ] }; // ù % ' Ù
261     key <BKSL>  { [         asterisk,               mu,                grave,                macron ] }; // * µ ` ̄
262 };
263
264
265 // Historic Linux French keyboard layout (fr-latin9)
266 // Copyright (c) 199x, 2002 Rene Cougnenc (original work)
267 //                          Guylhem Aznar <clavier @ externe.net> (maintainer)
268 //                          Nicolas Mailhot <Nicolas.Mailhot @ laposte.net>
269 //                              (XFree86 submission)
270 //
271 //  $XFree86: xc/programs/xkbcomp/symbols/fr-latin9,v 1.1 2002/12/20 02:07:11 dawes Exp $
272 //
273 // This layout has long been distributed and refined outside official channels.
274 // To this day it remains more feature-rich and popular than the 'fr' layout.
275 //
276 // This file is derived from an original version by Guylhem Aznar.  The
277 // original version is always available from:
278 // http://en.tldp.org/HOWTO/Francophones-HOWTO.html
279 // and is distributed under a GPL license.
280 //
281 // The author has given permission for this derived version to be distributed
282 // under the standard XFree86 license. He would like all changes to this
283 // version be send to him at <clavier @ externe.net> so he can sync the
284 // identically named linux console map (kbd, linux-console) and this
285 // fileout-of-tree GPL version.
286 //
287 // Now follows the keyboard design description in French.
288 // (If you can't read it you probably have no business changing this file anyway:)
289 //
290 // Les accents circonflexes des principales voyelles sont obtenus avec
291 // la touche Alt_Gr, les trémas sont obtenus par Alt_Gr + Shift.
292 //
293 //  ____                                     _________ _____________ _______
294 // | S A| S = Shift,  A = AltGr + Shift     | Imprime | Arrêt défil | Pause |
295 // | s a| s = normal, a = AltGr             |  Exec   |             | Halte |
296 //  ¯¯¯¯                                     ¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯
297 //  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
298 // | œ "| 1 ·| 2 É| 3 ,| 4 '| 5 "| 6 || 7 È| 8 ¯| 9 Ç| 0 À| ° ÿ| + °| <--   |
299 // | Œ "| & '| é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }|       |
300 //  ========================================================================
301 // | |<-  | A ä| Z Å| E ¢| R Ç| T Þ| Y Ý| U ü| I ï| O ö| P '| " `| $ ë|   , |
302 // |  ->| | a â| z å| e €| r ç| t þ| y ý| u û| i î| o ô| p ¶| ^ ~| £ ê| <-' |
303 //  ===================================================================¬    |
304 // |       | Q Ä| S Ø| D Ë| F ª| G Æ| H Ð| J Ü| K Ï| L Ö| M º| % Ù| µ ¥|    |
305 // | MAJ   | q Â| s ø| d Ê| f ±| g æ| h ð| j Û| k Î| l Ô| m ¹| ù ²| * ³|    |
306 //  ========================================================================
307 // | ^   | >  | W  | X  | C  | V  | B  | N  | ?  | .  | /  | §  |     ^     |
308 // | |   | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡|     |     |
309 //  ========================================================================
310 // |      |      |      |                       |       |      |     |      |
311 // | Ctrl | Super| Alt  | Space    Nobreakspace | AltGr | Super|Menu | Ctrl |
312 //  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯
313 //
314 //
315 //              Si les touches mortes fonctionnent, utiliser les accents dits
316 //              « morts », i.e. fonctionnant comme l'accent circonflexe & le
317 //              tréma des machines à écrire ; sont disponibles :
318 //
319 // (^) : accent circonflexe,
320 // Shift+(^) : tréma,
321 // Shift+AltGr (^) : tilde,
322 // AltGr (1) : accent aigu,
323 // AltGr (7) : accent grave
324 //
325 // Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma
326 // sur les vielles machines à écrire :
327 //
328 // AltGr (1) puis e : é
329 // Shift+AltGr (1) puis e : É ...
330 partial alphanumeric_keys
331
332 xkb_symbols "latin9" {
333
334     include "latin"
335
336     name[Group1]="France - (Legacy) Alternative";
337
338     key <TLDE>  { [              oe,              OE, leftdoublequotemark, rightdoublequotemark ] };
339     key <AE01>  { [       ampersand,               1,          dead_acute,       periodcentered ] };
340     key <AE02>  { [          eacute,               2,          asciitilde,               Eacute ] };
341     key <AE03>  { [        quotedbl,               3,          numbersign,              cedilla ] };
342     key <AE04>  { [      apostrophe,               4,           braceleft,                acute ] };
343     key <AE05>  { [       parenleft,               5,         bracketleft,            diaeresis ] };
344     key <AE06>  { [           minus,               6,                 bar,            brokenbar ] };
345     key <AE07>  { [          egrave,               7,          dead_grave,               Egrave ] };
346     key <AE08>  { [      underscore,               8,           backslash,               macron ] };
347     key <AE09>  { [        ccedilla,               9,         asciicircum,             Ccedilla ] };
348     key <AE10>  { [          agrave,               0,                  at,               Agrave ] };
349     key <AE11>  { [      parenright,          degree,        bracketright,           ydiaeresis ] };
350     key <AE12>  { [           equal,            plus,          braceright,       dead_abovering ] };
351
352     key <AD01>  { [               a,               A,         acircumflex,           adiaeresis ] };
353     key <AD02>  { [               z,               Z,               aring,                Aring ] };
354     key <AD03>  { [               e,               E,            EuroSign,                 cent ] };
355     key <AD04>  { [               r,               R,            ccedilla,             Ccedilla ] };
356     key <AD05>  { [               t,               T,               thorn,                THORN ] };
357     key <AD06>  { [               y,               Y,              yacute,               Yacute ] };
358     key <AD07>  { [               u,               U,         ucircumflex,           udiaeresis ] };
359     key <AD08>  { [               i,               I,         icircumflex,           idiaeresis ] };
360     key <AD09>  { [               o,               O,         ocircumflex,           odiaeresis ] };
361     key <AD10>  { [               p,               P,           paragraph,            quoteleft ] };
362     key <AD11>  { [ dead_circumflex,  dead_diaeresis,          dead_tilde,           quoteright ] };
363     key <AD12>  { [          dollar,        sterling,         ecircumflex,           ediaeresis ] };
364
365     key <AC01>  { [               q,               Q,         Acircumflex,           Adiaeresis ] };
366     key <AC02>  { [               s,               S,              oslash,             Ooblique ] };
367     key <AC03>  { [               d,               D,         Ecircumflex,           Ediaeresis ] };
368     key <AC04>  { [               f,               F,           plusminus,          ordfeminine ] };
369     key <AC05>  { [               g,               G,                  ae,                   AE ] };
370     key <AC06>  { [               h,               H,                 eth,                  ETH ] };
371     key <AC07>  { [               j,               J,         Ucircumflex,           Udiaeresis ] };
372     key <AC08>  { [               k,               K,         Icircumflex,           Idiaeresis ] };
373     key <AC09>  { [               l,               L,         Ocircumflex,           Odiaeresis ] };
374     key <AC10>  { [               m,               M,         onesuperior,            masculine ] };
375     key <AC11>  { [          ugrave,         percent,         twosuperior,               Ugrave ] };
376     key <BKSL>  { [        asterisk,              mu,       threesuperior,                  yen ] };
377
378     key <LSGT>  { [            less,         greater,                 bar                       ] };
379     key <AB01>  { [               w,               W,       guillemotleft                       ] };
380     key <AB02>  { [               x,               X,      guillemotright                       ] };
381     key <AB03>  { [               c,               C,           copyright                       ] };
382     key <AB04>  { [               v,               V,          registered                       ] };
383     key <AB05>  { [               b,               B,              ssharp                       ] };
384     key <AB06>  { [               n,               N,             notsign                       ] };
385     key <AB07>  { [           comma,        question,        questiondown                       ] };
386     key <AB08>  { [       semicolon,          period,            multiply                       ] };
387     key <AB09>  { [           colon,           slash,            division                       ] };
388     key <AB10>  { [          exclam,         section,          exclamdown                       ] };
389
390     key <SPCE>  { [           space,           space,        nobreakspace                       ] };
391
392     // French uses a comma as decimal separator, but keyboards are labeled with a period
393     // Will take effect when KP_Decimal is mapped to the locale decimal separator
394     key <KPDL>  { [       KP_Delete,          period,           KP_Delete,           KP_Decimal ] };
395
396     include "level3(ralt_switch)"
397 };
398
399 partial alphanumeric_keys
400 xkb_symbols "latin9_Sundeadkeys" {
401
402     // Modifies the basic fr-latin9 layout to use the Sun dead keys
403
404     include "fr(latin9)"
405
406     key <AE01>  { [       ampersand,               1,         SunFA_Acute,       periodcentered ] };
407     key <AE07>  { [          egrave,               7,         SunFA_Grave,               Egrave ] };
408     key <AD11>  { [    SunFA_Circum, SunFA_Diaeresis,         SunFA_Tilde,           quoteright ] };
409
410 };
411
412 partial alphanumeric_keys
413 xkb_symbols "latin9_sundeadkeys" {
414
415     include "fr(latin9_Sundeadkeys)"
416
417     name[Group1]="France - (Legacy) Alternative, Sun dead keys";
418 };
419
420 partial alphanumeric_keys
421 xkb_symbols "latin9_nodeadkeys" {
422
423     // Modifies the basic fr-latin9 layout to eliminate all dead keys
424
425     include "fr(latin9)"
426
427     name[Group1]="France - (Legacy) Alternative, eliminate dead keys";
428
429     key <AE01>  { [       ampersand,               1,          apostrophe,       periodcentered ] };
430     key <AE07>  { [          egrave,               7,               grave,               Egrave ] };
431     key <AE12>  { [           equal,            plus,          braceright                       ] };
432     key <AD11>  { [     asciicircum,       diaeresis,          asciitilde,           quoteright ] };
433 };
434
435 // Bépo : Improved ergonomic french keymap using Dvorak method.
436 // Built by community on 'Dvorak Fr' mailing list :
437 // dvorak-fr@gpl.insa-lyon.fr and on its wiki : http://gpl.insa-lyon.fr/Dvorak-Fr/ .
438 // XOrg integration in 2006 by Frédéric Boiteux <fboiteux @ free.fr>
439 //
440 // Bépo layout (6.2.1.1 version) for a pc105 keyboard (french) :
441 // ┌────┐
442 // │ S A│   S = Shift,  A = AltGr + Shift
443 // │ s a│   s = normal, a = AltGr
444 // └────┘
445 //
446 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
447 // │ $   │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ° │ 5 ˚ │ 6   │ 7   │ 8   │ 9   │ 0   │ ^   │ µ   ┃ ⌫ Retour┃
448 // │ @ # │ _ { │ " } │ « < │ » > │ ( [ │ ) ] │ + ± │ - ¬ │ * × │ / ÷ │ = ¯ │ %   ┃  arrière┃
449 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
450 // ┃       ┃ B   │ É ˊ │ P ¶ │ O Œ │ È ` │ Ç   │ V   │ D Ð │ L   │ F   │ J   │ Z   ┃Entrée ┃
451 // ┃Tab ↹  ┃ b | │ é & │ p § │ o œ │ è ` │ ç   │ v   │ d ð │ l £ │ f ª │ j   │ z   ┃   ⏎   ┃
452 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
453 // ┃        ┃ A Æ │ U Ù │ I ˇ │ E   │ ?   │ C ¢ │ T Þ │ S   │ N   │ R   │ M   │ !   ┃      ┃
454 // ┃Maj ⇬   ┃ a æ │ u ù │ i ̈ │ e € │ , ¿ │ c © │ t þ │ s ß │ n   │ r ® │ m º │ ˆ ¡ ┃      ┃
455 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
456 // ┃       ┃ ù   │ À ˜ │ H   │ Y   │ : · │ K   │ ;   │ Q   │ G   │ X   │ W   ┃             ┃
457 // ┃Shift ⇧┃ ê / │ à ~ │ h ! │ y ¥ │ . \ │ k   │ '   │ q   │ g   │ x   │ w   ┃Shift ⇧      ┃
458 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
459 // ┃       ┃       ┃       ┃ ⍽ Espace insécable              ␣ ┃       ┃       ┃       ┃
460 // ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ Espace                        ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
461 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
462 partial alphanumeric_keys
463 xkb_symbols "bepo" {
464
465     include "keypad(oss)"
466
467     name[Group1]= "France - Bepo, ergonomic, Dvorak way";
468
469     // First row
470     key <TLDE> { [              at,       dollar,     numbersign                 ] }; // @ $ #
471     key <AE01> { [      underscore,            1,      braceleft,    onesuperior ] }; // _ 1 { ¹
472     key <AE02> { [        quotedbl,            2,     braceright,    twosuperior ] }; // " 2 } ²
473     key <AE03> { [   guillemotleft,            3,           less,  threesuperior ] }; // « 3 < ³
474     key <AE04> { [  guillemotright,            4,        greater,         degree ] }; // » 4 > °
475     key <AE05> { [       parenleft,            5,    bracketleft, dead_abovering ] }; // ( 5 [ ˚
476     key <AE06> { [      parenright,            6,   bracketright                 ] }; // ) 6 ]
477     key <AE07> { [            plus,            7,      plusminus                 ] }; // + 7 ±
478     key <AE08> { [           minus,            8,        notsign                 ] }; // - 8 ¬
479     key <AE09> { [        asterisk,            9,       multiply                 ] }; // * 9 ×
480     key <AE10> { [           slash,            0,       division                 ] }; // / 0 ÷
481     key <AE11> { [           equal,  asciicircum,         macron                 ] }; // = ^ ¯
482     key <AE12> { [         percent,           mu                                 ] }; // % µ
483
484     // Second row
485     key <AD01> { [               b,            B,            bar                 ] }; // b B |
486     key <AD02> { [          eacute,       Eacute,      ampersand,     dead_acute ] }; // é É & ˊ
487     key <AD03> { [               p,            P,        section,      paragraph ] }; // p P § ¶
488     key <AD04> { [               o,            O,             oe,             OE ] }; // o O œ Œ
489     key <AD05> { [          egrave,       Egrave,          grave,     dead_grave ] }; // è È ` `
490     key <AD06> { [        ccedilla,     Ccedilla                                 ] }; // ç Ç
491     key <AD07> { [               v,            V                                 ] }; // v V
492     key <AD08> { [               d,            D,            eth,            ETH ] }; // d D ð Ð
493     key <AD09> { [               l,            L,       sterling                 ] }; // l L £
494     key <AD10> { [               f,            F,    ordfeminine                 ] }; // f F ª
495     key <AD11> { [               j,            J                                 ] }; // j J
496     key <AD12> { [               z,            Z                                 ] }; // z Z
497
498     // Third row
499     key <AC01> { [               a,            A,             ae,             AE ] }; // a A æ Æ
500     key <AC02> { [               u,            U,         ugrave,         Ugrave ] }; // u U ù Ù
501     key <AC03> { [               i,            I, dead_diaeresis,     dead_caron ] }; // i I ̈ ˇ
502     key <AC04> { [               e,            E,       EuroSign                 ] }; // e E €
503     key <AC05> { [           comma,     question,   questiondown                 ] }; // , ? ¿
504     key <AC06> { [               c,            C,      copyright,           cent ] }; // c C © ¢
505     key <AC07> { [               t,            T,          thorn,          Thorn ] }; // t T þ Þ
506     key <AC08> { [               s,            S,         ssharp                 ] }; // s S ß
507     key <AC09> { [               n,            N                                 ] }; // n N
508     key <AC10> { [               r,            R,     registered                 ] }; // r R ®
509     key <AC11> { [               m,            M,      masculine                 ] }; // m M º
510     key <BKSL> { [ dead_circumflex,       exclam,     exclamdown                 ] }; // ^ ! ¡
511
512     // Fourth row
513     key <LSGT> { [     ecircumflex,       ugrave,          slash                 ] }; // ê ù /
514     key <AB01> { [          agrave,       Agrave,     asciitilde,     dead_tilde ] }; // à À ~ ~
515     key <AB02> { [               h,            H,         exclam                 ] }; // h H !
516     key <AB03> { [               y,            Y,            yen                 ] }; // y Y ¥
517     key <AB04> { [          period,        colon,      backslash, periodcentered ] }; // . : \ ·
518     key <AB05> { [               k,            K                                 ] }; // k K
519     key <AB06> { [      apostrophe,    semicolon                                 ] }; // ' ;
520     key <AB07> { [               q,            Q,         oslash,       Ooblique ] }; // q Q ø Ø
521     key <AB08> { [               g,            G                                 ] }; // g G
522     key <AB09> { [               x,            X                                 ] }; // x X
523     key <AB10> { [               w,            W                                 ] }; // w W
524
525     key <SPCE> { [           space, nobreakspace,          space,          space ] }; // ␣ ⍽ (espace insécable) ␣ ␣
526
527     include "level3(ralt_switch)"
528 };
529
530 partial alphanumeric_keys
531 xkb_symbols "bepo_latin9" {
532
533     // Restricts the fr(bepo) layout to latin9 symbols
534
535     include "keypad(oss_latin9)"
536     include "fr(bepo)"
537
538     name[Group1]="France - Bepo, ergonomic, Dvorak way, latin-9 only";
539
540     // at now, no difference (oss keypad excepted), but will change !
541 };
542
543
544 // Keymap Dvorak pour le Français
545 // par Josselin Mouette <josselin.mouette@ens-lyon.org>.
546
547 partial alphanumeric_keys
548 xkb_symbols "dvorak" {
549
550     name[Group1]= "France - (Legacy) Dvorak";
551
552     key <TLDE>  { [         oe,       OE,              ae,             AE ] };
553
554     key <AE01>  { [      slash,        1,       ampersand,    onesuperior ] };
555     key <AE02>  { [       plus,        2,      asciitilde,    twosuperior ] };
556     key <AE03>  { [      minus,        3,      numbersign,  threesuperior ] };
557     key <AE04>  { [   asterisk,        4,            less,  guillemotleft ] };
558     key <AE05>  { [      equal,        5,         greater, guillemotright ] };
559     key <AE06>  { [  backslash,        6,              at,        notsign ] };
560     key <AE07>  { [  parenleft,        7, dead_circumflex,       multiply ] };
561     key <AE08>  { [      grave,        8,      dead_grave,       division ] };
562     key <AE09>  { [ parenright,        9,     asciicircum,      plusminus ] };
563     key <AE10>  { [   quotedbl,        0,  dead_diaeresis, dead_diaeresis ] };
564     key <AE11>  { [bracketleft,   braceleft,          bar,         degree ] };
565     key <AE12>  { [bracketright, braceright,      percent,        percent ] };
566
567     key <AD01>  { [      colon, question,        question,   questiondown ] };
568     key <AD02>  { [     agrave,   Agrave,           aring,          Aring ] };
569     key <AD03>  { [     eacute,   Eacute,        EuroSign,           cent ] };
570     key <AD04>  { [          g,        G,          oslash,       Ooblique ] };
571     key <AD05>  { [     period,   exclam,  periodcentered,     exclamdown ] };
572     key <AD06>  { [          h,        H,             eth,            ETH ] };
573     key <AD07>  { [          v,        V              ] };
574     key <AD08>  { [          c,        C,       copyright,     registered ] };
575     key <AD09>  { [          m,        M,              mu,             mu ] };
576     key <AD10>  { [          k,        K,          dollar,         dollar ] };
577     key <AD11>  { [     egrave,   Egrave,        sterling,       sterling ] };
578     key <AD12>  { [          z,        Z,             yen,            yen ] };
579
580     key <AC01>  { [          o,        O,     ocircumflex,    Ocircumflex ] };
581     key <AC02>  { [          a,        A,     acircumflex,    Acircumflex ] };
582     key <AC03>  { [          u,        U,     ucircumflex,    Ucircumflex ] };
583     key <AC04>  { [          e,        E,     ecircumflex,    Ecircumflex ] };
584     key <AC05>  { [          b,        B,          ssharp,         ssharp ] };
585     key <AC06>  { [          f,        F      ] };
586     key <AC07>  { [          s,        S      ] };
587     key <AC08>  { [          t,        T,           thorn,          THORN ] };
588     key <AC09>  { [          n,        N,          ntilde,         Ntilde ] };
589     key <AC10>  { [          d,        D,         section,        section ] };
590     key <AC11>  { [          w,        W,       paragraph,      paragraph ] };
591     key <BKSL>  { [     ugrave,   Ugrave,       masculine,    ordfeminine ] };
592
593     key <AB01>  { [ apostrophe, underscore,    dead_acute,         macron ] };
594     key <AB02>  { [          q,        Q,   guillemotleft,  guillemotleft ] };
595     key <AB03>  { [     comma, semicolon,  guillemotright, guillemotright ] };
596     key <AB04>  { [          i,        I,     icircumflex,    Icircumflex ] };
597     key <AB05>  { [          y,        Y,      ydiaeresis,     Ydiaeresis ] };
598     key <AB06>  { [          x,        X,      ediaeresis,     Ediaeresis ] };
599     key <AB07>  { [          r,        R,      udiaeresis,     Udiaeresis ] };
600     key <AB08>  { [          l,        L,      adiaeresis,     Adiaeresis ] };
601     key <AB09>  { [          p,        P,      odiaeresis,     Odiaeresis ] };
602     key <AB10>  { [          j,        J,      idiaeresis,     Idiaeresis ] };
603
604     key <SPCE>  { [      space,    space,    nobreakspace,   nobreakspace ] };
605     key <LSGT>  { [   ccedilla, Ccedilla      ] };
606
607     include "level3(ralt_switch)"
608 };
609
610 // Marc.Shapiro@inria.fr 19-sep-1998
611 // modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
612 // adapted to the new input layer :
613 //        Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
614 // adapted for Latin9 alphabet (ISO-8859-15): 
615 //        Etienne Herlent <eherlent@linux-france.org> march 2005
616
617 // This map is an almost-complete mapping of the standard French
618 // MacIntosh keyboard under Xwindows.  I tried to remain as faithful
619 // as possible to the Mac meaning of each key.  I did this entirely by
620 // hand and by intuition, relying on the Clavier (Keyboard?) Desktop
621 // Accessory for the Mac meaning of keys, and on reading keysymdef.h
622 // to intuit the corresponding X names.  Lacking proper documentation,
623 // I may have made some mistakes.
624
625 // Entries marked CHECK are particularly uncertain
626
627 // Entries marked MISSING mark Mac characters for which I was unable
628 // to find a corresponding keysym.  (Some for sure don't: e.g. the
629 // Apple mark and the oe/OE character; others I may have simply not
630 // found.)
631
632 // Copied from macintosh_vndr/fr
633 partial alphanumeric_keys
634 xkb_symbols "mac" {
635
636     name[Group1]= "France - Macintosh";
637
638     // Alphanumeric section
639     key <TLDE> {        [          at,     numbersign, periodcentered,  Ydiaeresis      ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
640     key <AE01> {        [   ampersand,    1,   VoidSymbol,    dead_acute        ]       }; // MISSING: Apple
641     key <AE02> {        [      eacute,    2,   ediaeresis,        Eacute        ]       };
642     key <AE03> {        [    quotedbl,    3,   VoidSymbol,    VoidSymbol        ]       }; // CHECK all quotemarks
643     key <AE04> {        [  apostrophe,    4,   VoidSymbol,    VoidSymbol        ]       };
644     key <AE05> {        [   parenleft,    5,    braceleft,   bracketleft        ]       };
645  // CHECK section
646     key <AE06> {        [     section,    6,    paragraph,         aring        ]       };
647     key <AE07> {        [      egrave,    7, guillemotleft, guillemotright      ]       };
648     key <AE08> {        [      exclam,    8,   exclamdown,   Ucircumflex        ]       };
649     key <AE09> {        [    ccedilla,    9,     Ccedilla,        Aacute        ]       };
650     key <AE10> {        [      agrave,    0,       oslash,    VoidSymbol        ]       }; // MISSING: Oslash
651     key <AE11> {        [  parenright, degree, braceright,  bracketright        ]       };
652     key <AE12> {        [       minus, underscore, emdash,        endash        ]       }; // CHECK dashes
653
654     key <AD01> {        [           a,  A,           ae,          AE    ]       };
655     key <AD02> {        [           z,  Z,  Acircumflex,       Aring            ]       };
656     key <AD03> {        [           e,  E,  ecircumflex, Ecircumflex    ]       };
657     key <AD04> {        [           r,  R,   registered,    currency    ]       };
658     key <AD05> {        [           t,  T,   VoidSymbol,  VoidSymbol    ]       };
659     key <AD06> {        [           y,  Y,       Uacute,  Ydiaeresis    ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
660     key <AD07> {        [           u,  U,   VoidSymbol, ordfeminine    ]       }; // MISSING: ordmasculine?
661     key <AD08> {        [           i,  I,  icircumflex,  idiaeresis    ]       };
662     key <AD09> {        [           o,  O,           oe,          OE            ]       }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9
663     key <AD10> {        [           p,  P,   VoidSymbol,  VoidSymbol    ]       };
664     key <AD11> {        [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex       ]       };
665     key <AD12> {        [      dollar, asterisk,   EuroSign, yen                ]       }; // eherlent : EuroSign in Latin9
666
667     key <AC01> {        [         q, Q, acircumflex,         Agrave             ]       };
668     key <AC02> {        [         s, S,      Ograve,     VoidSymbol     ]       };
669     key <AC03> {        [         d, D,  VoidSymbol,     VoidSymbol     ]       };
670     key <AC04> {        [         f, F,  VoidSymbol, periodcentered     ]       }; // MISSING: oblong script f??
671     key <AC05> {        [         g, G,  VoidSymbol,     VoidSymbol     ]       }; // MISSING: kerned fi, fl
672     key <AC06> {        [         h, H,      Igrave,    Icircumflex     ]       };
673     key <AC07> {        [         j, J,  Idiaeresis,         Iacute     ]       };
674     key <AC08> {        [         k, K,      Egrave,     Ediaeresis     ]       };
675     key <AC09> {        [         l, L,     notsign,            bar     ]       };
676     key <AC10> {        [         m, M,          mu,         Oacute     ]       };
677     key <AC11> {        [    ugrave,percent, Ugrave,    ucircumflex     ]       }; // MISSING: per-mille
678     key <BKSL> {        [ dead_grave, sterling,  at,     numbersign     ]       };
679
680     key <LSGT> {        [      less, greater, VoidSymbol, VoidSymbol    ]       };
681     key <AB01> {        [         w, W, VoidSymbol,   VoidSymbol        ]       };      // MISSING: half-guillemot (single angle bracket)
682     key <AB02> {        [         x, X, VoidSymbol,   VoidSymbol        ]       }; // CHECK similarequal; MISSING: extra-slanted slash
683     key <AB03> {        [         c, C,  copyright,         cent        ]       };
684     key <AB04> {        [         v, V,    diamond,  leftradical        ]       }; // CHECK diamond, leftradical
685     key <AB05> {        [         b, B,     ssharp,   VoidSymbol        ]       }; // CHECK: Greek_beta or ssharp?; MISSING: oblong script s
686     key <AB06> {        [         n, N,  dead_tilde,  asciitilde        ]       };
687     key <AB07> {        [     comma,  question, VoidSymbol,  questiondown       ]       };
688     key <AB08> {        [ semicolon,  period, VoidSymbol,  periodcentered       ]       };
689     key <AB09> {        [     colon,  slash,   division,        backslash       ]       };
690     key <AB10> {        [     equal,   plus, VoidSymbol,        plusminus       ]       };
691
692     key <SPCE> {        [     space,  space, nobreakspace,   nobreakspace       ]       };
693     // End alphanumeric section
694
695     key <KPDL> {        [  comma,KP_Decimal     ]       };
696
697     include "level3(ralt_switch)"
698 };
699