Remove extant reference to the `symbols/extras' directory
[xorg/xkeyboard-config] / symbols / fr
1 // based on a keyboard map from an 'xkb/symbols/fr' file
2
3 partial default alphanumeric_keys
4 xkb_symbols "basic" {
5
6     include "latin"
7
8     name[Group1]="French";
9
10     key <AE01>  { [ ampersand,          1,  onesuperior,   exclamdown ] };
11     key <AE02>  { [    eacute,          2,   asciitilde,    oneeighth ] };
12     key <AE03>  { [  quotedbl,          3,   numbersign,     sterling ] };
13     key <AE04>  { [apostrophe,          4,    braceleft,       dollar ] };
14     key <AE05>  { [ parenleft,          5,  bracketleft, threeeighths ] };
15     key <AE06>  { [     minus,          6,          bar,  fiveeighths ] };
16     key <AE07>  { [    egrave,          7,        grave, seveneighths ] };
17     key <AE08>  { [underscore,          8,    backslash,    trademark ] };
18     key <AE09>  { [  ccedilla,          9,  asciicircum,    plusminus ] };
19     key <AE10>  { [    agrave,          0,           at,       degree ] };
20     key <AE11>  { [parenright,     degree, bracketright, questiondown ] };
21     key <AE12>  { [     equal,       plus,   braceright,  dead_ogonek ] };
22
23     key <AD01>  { [         a,          A,           ae,           AE ] };
24     key <AD02>  { [         z,          Z, guillemotleft,        less ] };
25     key <AD03>  { [         e,          E,     EuroSign,         cent ] };
26     key <AD11>  { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };
27     key <AD12>  { [    dollar,   sterling,     currency,  dead_macron ] };
28
29     key <AC01>  { [         q,          Q,           at,  Greek_OMEGA ] };
30     key <AC10>  { [         m,          M,           mu,    masculine ] };
31     key <AC11>  { [    ugrave,    percent, dead_circumflex, dead_caron] };
32     key <TLDE>  { [twosuperior, asciitilde,     notsign,      notsign ] };
33
34     key <BKSL>  { [  asterisk,         mu,   dead_grave,   dead_breve ] };
35     key <AB01>  { [         w,          W,      lstroke,      Lstroke ] };
36     key <AB07>  { [     comma,   question,   dead_acute, dead_doubleacute ] };
37     key <AB08>  { [ semicolon,     period, horizconnector,   multiply ] };
38     key <AB09>  { [     colon,      slash, periodcentered,   division ] };
39     key <AB10>  { [    exclam,    section, dead_belowdot, dead_abovedot ] };
40
41     include "level3(ralt_switch)"
42 };
43
44 partial alphanumeric_keys
45 xkb_symbols "olpc" {
46     // Contact: Sayamindu Dasgupta <sayamindu@laptop.org>
47     include "fr(basic)"
48
49     name[Group1]="French";
50
51     key <I219>  { [ less, greater ]     };
52     key <AD11>  { [ dead_circumflex, dead_diaeresis, notsign, dead_abovering ]  };
53     key <AB08>  { [ semicolon, period, underscore, multiply ]   };
54     key <TLDE>  { [ twosuperior, asciitilde, VoidSymbol, VoidSymbol ]   };
55
56     // Some keys only have the Shift+AltGr character printed on them (alongside
57     // the unmodified one). Make such keys shift-invariant so that the printed
58     // value is achieved by pressing AltGr or Shift+AltGr.
59     key <AB02>  { [ x,  X,  guillemotright, guillemotright ]    };
60     key <AC02>  { [ s,  S,  ssharp, ssharp ]    };
61     key <AD02>  { [ z,  Z,  guillemotleft, guillemotleft ]      };
62 };
63
64 partial alphanumeric_keys
65 xkb_symbols "Sundeadkeys" {
66
67     // Modifies the basic French layout to use the Sun dead keys
68
69     include "fr(basic)"
70
71     key <AD11>  { [dead_circumflex, dead_diaeresis ]    };
72     key <AB07>  { [comma,   question,  dead_acute, dead_doubleacute ]   };
73 };
74
75 partial alphanumeric_keys
76 xkb_symbols "sundeadkeys" {
77     include "fr(Sundeadkeys)"
78
79     name[Group1]="French (Sun dead keys)";
80 };
81
82 partial alphanumeric_keys
83 xkb_symbols "nodeadkeys" {
84
85     // Modifies the basic French layout to eliminate all dead keys
86
87     include "fr(basic)"
88
89     name[Group1]="French (eliminate dead keys)";
90
91     key <AE12>  { [     equal,       plus,   braceright,       ogonek ] };
92     key <AD11>  { [asciicircum,  diaeresis ]    };
93     key <AD12>  { [    dollar,   sterling,     currency,       macron ] };
94     key <AC11>  { [    ugrave,    percent,  asciicircum,        caron ] };
95     key <BKSL>  { [  asterisk,         mu,        grave,        breve ] };
96     key <AB07>  { [     comma,   question,        acute,  doubleacute ] };
97     key <AB10>  { [    exclam,    section, dead_belowdot,    abovedot ] };
98 };
99
100
101 // Unicode French derivative
102 // Loose refactoring of the historic Linux French keyboard layout
103 //
104 // Copyright © 2006-2008 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
105 //
106 // Credits (fr-latin1, fr-latin0, fr-latin9)
107 //   © 199x-1996 René Cougnenc ✝
108 //   © 1997-2002 Guylhem Aznar <clavier @ externe.net>
109 //   © 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
110 //
111 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
112 // │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃
113 // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃  arrière┃
114 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
115 // ┃       ┃ A Æ │ Z Â │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃
116 // ┃Tab ↹  ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ø ┃   ⏎   ┃
117 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
118 // ┃        ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃      ┃
119 // ┃Maj ⇬   ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃      ┃
120 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
121 // ┃       ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃             ┃
122 // ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧      ┃
123 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
124 // ┃       ┃       ┃       ┃ ␣         Espace fine insécable ⍽ ┃       ┃       ┃       ┃
125 // ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ Espace       Espace insécable ⍽ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
126 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
127 partial alphanumeric_keys
128 xkb_symbols "oss" {
129
130     include "latin"
131     include "level3(ralt_switch)"
132     include "nbsp(level4n)"
133     include "level5(rctrl_switch)"
134     include "keypad(oss)"
135
136     name[Group1]="French (alternative)";
137
138     // First row
139     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,          dead_cedilla ] }; // ² ³ ¹ ¸ 
140     key <AE01>  { [        ampersand,                1,           dead_caron,           dead_ogonek ] }; // & 1 ˇ ̨
141     key <AE02>  { [           eacute,                2,           asciitilde,                Eacute ] }; // é 2 ~ É
142     key <AE03>  { [         quotedbl,                3,           numbersign,            dead_breve ] }; // " 3 # ˘
143     key <AE04>  { [       apostrophe,                4,            braceleft,             0x1002014 ] }; // ' 4 { — (tiret cadratin)
144     key <AE05>  { [        parenleft,                5,          bracketleft,             0x1002013 ] }; // ( 5 [ – (tiret demi-cadratin)
145     key <AE06>  { [            minus,                6,                  bar,             0x1002011 ] }; // - 6 | ‑ (tiret insécable)
146     key <AE07>  { [           egrave,                7,                grave,                Egrave ] }; // è 7 ` È
147     key <AE08>  { [       underscore,                8,            backslash,             trademark ] }; // _ 8 \ ™
148     key <AE09>  { [         ccedilla,                9,          asciicircum,              Ccedilla ] }; // ç 9 ^ Ç
149     key <AE10>  { [           agrave,                0,                   at,                Agrave ] }; // à 0 @ À
150     key <AE11>  { [       parenright,           degree,         bracketright,              notequal ] }; // ) ° ] ≠ 
151     key <AE12>  { [            equal,             plus,           braceright,             plusminus ] }; // = + } ±
152
153     // Second row
154     key <AD01>  { [                a,                A,                   ae,                    AE ] }; // a A æ Æ
155     key <AD02>  { [                z,                Z,          acircumflex,           Acircumflex ] }; // z Z â Â
156     key <AD03>  { [                e,                E,             EuroSign,                  cent ] }; // e E € ¢
157     key <AD04>  { [                r,                R,          ecircumflex,           Ecircumflex ] }; // r R ê Ê
158     key <AD05>  { [                t,                T,                thorn,                 THORN ] }; // t T þ Þ
159     key <AD06>  { [                y,                Y,           ydiaeresis,            Ydiaeresis ] }; // y Y ÿ Ÿ
160     key <AD07>  { [                u,                U,          ucircumflex,           Ucircumflex ] }; // u U û Û
161     key <AD08>  { [                i,                I,          icircumflex,           Icircumflex ] }; // i I î Î
162     key <AD09>  { [                o,                O,                   oe,                    OE ] }; // o O œ Œ
163     key <AD10>  { [                p,                P,          ocircumflex,           Ocircumflex ] }; // p P ô Ô
164     key <AD11>  { [  dead_circumflex,   dead_diaeresis,           dead_tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚
165     key <AD12>  { [           dollar,         sterling,               oslash,              Ooblique ] }; // $ £ ø Ø
166
167     // Third row
168     key <AC01>  { [                q,                Q,           adiaeresis,            Adiaeresis ] }; // q Q ä Ä
169     key <AC02>  { [                s,                S,               ssharp,    doublelowquotemark ] }; // s S ß „ 
170     key <AC03>  { [                d,                D,           ediaeresis,            Ediaeresis ] }; // d D ë Ë
171     key <AC04>  { [                f,                F,  leftsinglequotemark,    singlelowquotemark ] }; // f F ‘ ‚
172     key <AC05>  { [                g,                G, rightsinglequotemark,                   yen ] }; // g G ’ ¥
173     key <AC06>  { [                h,                H,                  eth,                   ETH ] }; // h H ð Ð
174     key <AC07>  { [                j,                J,           udiaeresis,            Udiaeresis ] }; // j J ü Ü
175     key <AC08>  { [                k,                K,           idiaeresis,            Idiaeresis ] }; // k K ï Ï
176     key <AC09>  { [                l,                L,            0x1000140,             0x100013F ] }; // l L ŀ Ŀ
177     key <AC10>  { [                m,                M,           odiaeresis,            Odiaeresis ] }; // m M ö Ö
178     key <AC11>  { [           ugrave,          percent,           dead_acute,                Ugrave ] }; // ù % ' Ù
179     key <BKSL>  { [         asterisk,               mu,           dead_grave,           dead_macron ] }; // * µ ` ̄
180
181     // Fourth row
182     key <LSGT>  { [             less,          greater,        lessthanequal,      greaterthanequal ] }; // < > ≤ ≥
183     key <AB01>  { [                w,                W,        guillemotleft,   leftdoublequotemark ] }; // w W « “
184     key <AB02>  { [                x,                X,       guillemotright,  rightdoublequotemark ] }; // x X » ”
185     key <AB03>  { [                c,                C,            copyright,            registered ] }; // c C © ®
186     key <AB04>  { [                v,                V,            0x100202F,             leftarrow ] }; // v V ⍽ ← (espace fine insécable)
187     key <AB05>  { [                b,                B,            downarrow,               uparrow ] }; // b B ↓ ↑
188     key <AB06>  { [                n,                N,              notsign,            rightarrow ] }; // n N ¬ →
189     key <AB07>  { [            comma,         question,         questiondown,             0x1002026 ] }; // , ? ¿ …
190     key <AB08>  { [        semicolon,           period,             multiply,             0x10022C5 ] }; // ; . × ⋅
191     key <AB09>  { [            colon,            slash,             division,             0x1002215 ] }; // : / ÷ ∕
192     key <AB10>  { [           exclam,          section,           exclamdown,             0x1002212 ] }; // ! § ¡ −
193 };
194
195 partial alphanumeric_keys
196 xkb_symbols "oss_latin9" {
197
198     // Restricts the fr(oss) layout to latin9 symbols
199
200     include "fr(oss)"
201     include "keypad(oss_latin9)"
202
203     name[Group1]="French (alternative, latin-9 only)";
204
205     // First row
206     key <AE01>  { [        ampersand,                1,           dead_caron,          dead_cedilla ] }; // & 1 ˇ ¸
207     key <AE03>  { [         quotedbl,                3,           numbersign,            dead_tilde ] }; // " 3 # ~
208     key <AE04>  { [       apostrophe,                4,            braceleft,            underscore ] }; // ' 4 { _
209     key <AE05>  { [        parenleft,                5,          bracketleft,                 minus ] }; // ( 5 [ -
210     key <AE06>  { [            minus,                6,                  bar,                 minus ] }; // - 6 | -
211     key <AE08>  { [       underscore,                8,            backslash,             backslash ] }; // _ 8 \ \
212     key <AE11>  { [       parenright,           degree,         bracketright,                 equal ] }; // ) ° ] =
213
214     // Third row
215     key <AC02>  { [                s,                S,               ssharp,         guillemotleft ] }; // s S ß « 
216     key <AC04>  { [                f,                F,           apostrophe,            apostrophe ] }; // f F ' '
217     key <AC05>  { [                g,                G,           apostrophe,                   yen ] }; // g G ' ¥
218     key <AC09>  { [                l,                L,       periodcentered,        periodcentered ] }; // l L · ·
219     key <BKSL>  { [         asterisk,               mu,           dead_grave,       dead_circumflex ] }; // * µ ` ^ 
220
221     // Fourth row
222     key <LSGT>  { [             less,          greater,                 less,               greater ] }; // < > < >
223     key <AB01>  { [                w,                W,        guillemotleft,         guillemotleft ] }; // w W « «
224     key <AB02>  { [                x,                X,       guillemotright,        guillemotright ] }; // x X » »
225     key <AB04>  { [                v,                V,         nobreakspace,                  less ] }; // v V ⍽ < (espace insécable)
226     key <AB05>  { [                b,                B,                minus,           asciicircum ] }; // b B - ^
227     key <AB06>  { [                n,                N,              notsign,               greater ] }; // n N ¬ >
228     key <AB07>  { [            comma,         question,         questiondown,                period ] }; // , ? ¿ .
229     key <AB08>  { [        semicolon,           period,             multiply,        periodcentered ] }; // ; . × ·
230     key <AB09>  { [            colon,            slash,             division,                 slash ] }; // : / ÷ /
231     key <AB10>  { [           exclam,          section,           exclamdown,                 minus ] }; // ! § ¡ -
232 };
233
234 partial alphanumeric_keys
235 xkb_symbols "oss_Sundeadkeys" {
236
237     // Modifies the basic fr(oss) layout to use the Sun dead keys
238
239     include "fr(oss)"
240
241     // First row
242     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,         dead_cedilla ] }; // ¹ ² ³ ¸ 
243
244     // Second row
245     key <AD11>  { [     dead_circumflex,  dead_diaeresis,          dead_tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚
246
247     //Third row
248     key <AC11>  { [           ugrave,          percent,          dead_acute,                Ugrave ] }; // ù % ' Ù
249     key <BKSL>  { [         asterisk,               mu,          dead_grave,           dead_macron ] }; // * µ ` ̄
250 };
251
252 partial alphanumeric_keys
253 xkb_symbols "oss_sundeadkeys" {
254
255     include "fr(oss_Sundeadkeys)"
256
257     name[Group1]="French (alternative, Sun dead keys)";
258 };
259
260 partial alphanumeric_keys
261 xkb_symbols "oss_nodeadkeys" {
262
263     // Modifies the basic fr(oss) layout to eliminate all dead keys
264
265     include "fr(oss)"
266
267     name[Group1]="French (alternative, eliminate dead keys)";
268
269     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,               cedilla ] }; // ² ³ ¹ ¸ 
270     key <AE01>  { [        ampersand,                1,                caron,                ogonek ] }; // & 1 ˇ ̨
271     key <AE03>  { [         quotedbl,                3,           numbersign,                 breve ] }; // " 3 # ˘
272
273     // Second row
274     key <AD11>  { [  asciicircum,   diaeresis,           asciitilde,                 Aring ] }; // ^ ̈ ̃ Å
275     key <AC11>  { [           ugrave,          percent,                acute,                Ugrave ] }; // ù % ' Ù
276     key <BKSL>  { [         asterisk,               mu,                grave,                macron ] }; // * µ ` ̄
277 };
278
279
280 // Historic Linux French keyboard layout (fr-latin9)
281 // Copyright (c) 199x, 2002 Rene Cougnenc (original work)
282 //                          Guylhem Aznar <clavier @ externe.net> (maintainer)
283 //                          Nicolas Mailhot <Nicolas.Mailhot @ laposte.net>
284 //                              (XFree86 submission)
285 //
286 // This layout has long been distributed and refined outside official channels.
287 // To this day it remains more feature-rich and popular than the 'fr' layout.
288 //
289 // This file is derived from an original version by Guylhem Aznar.  The
290 // original version is always available from:
291 // http://en.tldp.org/HOWTO/Francophones-HOWTO.html
292 // and is distributed under a GPL license.
293 //
294 // The author has given permission for this derived version to be distributed
295 // under the standard XFree86 license. He would like all changes to this
296 // version be send to him at <clavier @ externe.net> so he can sync the
297 // identically named linux console map (kbd, linux-console) and this
298 // fileout-of-tree GPL version.
299 //
300 // Now follows the keyboard design description in French.
301 // (If you can't read it you probably have no business changing this file anyway:)
302 //
303 // Les accents circonflexes des principales voyelles sont obtenus avec
304 // la touche Alt_Gr, les trémas sont obtenus par Alt_Gr + Shift.
305 //
306 //  ____                                     _________ _____________ _______
307 // | S A| S = Shift,  A = AltGr + Shift     | Imprime | Arrêt défil | Pause |
308 // | s a| s = normal, a = AltGr             |  Exec   |             | Halte |
309 //  ¯¯¯¯                                     ¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯
310 //  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
311 // | œ "| 1 ·| 2 É| 3 ,| 4 '| 5 "| 6 || 7 È| 8 ¯| 9 Ç| 0 À| ° ÿ| + °| <--   |
312 // | Œ "| & '| é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }|       |
313 //  ========================================================================
314 // | |<-  | A ä| Z Å| E ¢| R Ç| T Þ| Y Ý| U ü| I ï| O ö| P '| " `| $ ë|   , |
315 // |  ->| | a â| z å| e €| r ç| t þ| y ý| u û| i î| o ô| p ¶| ^ ~| £ ê| <-' |
316 //  ===================================================================¬    |
317 // |       | Q Ä| S Ø| D Ë| F ª| G Æ| H Ð| J Ü| K Ï| L Ö| M º| % Ù| µ ¥|    |
318 // | MAJ   | q Â| s ø| d Ê| f ±| g æ| h ð| j Û| k Î| l Ô| m ¹| ù ²| * ³|    |
319 //  ========================================================================
320 // | ^   | >  | W  | X  | C  | V  | B  | N  | ?  | .  | /  | §  |     ^     |
321 // | |   | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡|     |     |
322 //  ========================================================================
323 // |      |      |      |                       |       |      |     |      |
324 // | Ctrl | Super| Alt  | Space    Nobreakspace | AltGr | Super|Menu | Ctrl |
325 //  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯
326 //
327 //
328 //              Si les touches mortes fonctionnent, utiliser les accents dits
329 //              « morts », i.e. fonctionnant comme l'accent circonflexe & le
330 //              tréma des machines à écrire ; sont disponibles :
331 //
332 // (^) : accent circonflexe,
333 // Shift+(^) : tréma,
334 // Shift+AltGr (^) : tilde,
335 // AltGr (1) : accent aigu,
336 // AltGr (7) : accent grave
337 //
338 // Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma
339 // sur les vielles machines à écrire :
340 //
341 // AltGr (1) puis e : é
342 // Shift+AltGr (1) puis e : É ...
343 partial alphanumeric_keys
344
345 xkb_symbols "latin9" {
346
347     include "latin"
348     include "nbsp(level3)"
349
350     name[Group1]="French (legacy, alternative)";
351
352     key <TLDE>  { [              oe,              OE, leftdoublequotemark, rightdoublequotemark ] };
353     key <AE01>  { [       ampersand,               1,          dead_acute,       periodcentered ] };
354     key <AE02>  { [          eacute,               2,          asciitilde,               Eacute ] };
355     key <AE03>  { [        quotedbl,               3,          numbersign,              cedilla ] };
356     key <AE04>  { [      apostrophe,               4,           braceleft,                acute ] };
357     key <AE05>  { [       parenleft,               5,         bracketleft,            diaeresis ] };
358     key <AE06>  { [           minus,               6,                 bar,            brokenbar ] };
359     key <AE07>  { [          egrave,               7,          dead_grave,               Egrave ] };
360     key <AE08>  { [      underscore,               8,           backslash,               macron ] };
361     key <AE09>  { [        ccedilla,               9,         asciicircum,             Ccedilla ] };
362     key <AE10>  { [          agrave,               0,                  at,               Agrave ] };
363     key <AE11>  { [      parenright,          degree,        bracketright,           ydiaeresis ] };
364     key <AE12>  { [           equal,            plus,          braceright,       dead_abovering ] };
365
366     key <AD01>  { [               a,               A,         acircumflex,           adiaeresis ] };
367     key <AD02>  { [               z,               Z,               aring,                Aring ] };
368     key <AD03>  { [               e,               E,            EuroSign,                 cent ] };
369     key <AD04>  { [               r,               R,            ccedilla,             Ccedilla ] };
370     key <AD05>  { [               t,               T,               thorn,                THORN ] };
371     key <AD06>  { [               y,               Y,              yacute,               Yacute ] };
372     key <AD07>  { [               u,               U,         ucircumflex,           udiaeresis ] };
373     key <AD08>  { [               i,               I,         icircumflex,           idiaeresis ] };
374     key <AD09>  { [               o,               O,         ocircumflex,           odiaeresis ] };
375     key <AD10>  { [               p,               P,           paragraph,            quoteleft ] };
376     key <AD11>  { [ dead_circumflex,  dead_diaeresis,          dead_tilde,           quoteright ] };
377     key <AD12>  { [          dollar,        sterling,         ecircumflex,           ediaeresis ] };
378
379     key <AC01>  { [               q,               Q,         Acircumflex,           Adiaeresis ] };
380     key <AC02>  { [               s,               S,              oslash,             Ooblique ] };
381     key <AC03>  { [               d,               D,         Ecircumflex,           Ediaeresis ] };
382     key <AC04>  { [               f,               F,           plusminus,          ordfeminine ] };
383     key <AC05>  { [               g,               G,                  ae,                   AE ] };
384     key <AC06>  { [               h,               H,                 eth,                  ETH ] };
385     key <AC07>  { [               j,               J,         Ucircumflex,           Udiaeresis ] };
386     key <AC08>  { [               k,               K,         Icircumflex,           Idiaeresis ] };
387     key <AC09>  { [               l,               L,         Ocircumflex,           Odiaeresis ] };
388     key <AC10>  { [               m,               M,         onesuperior,            masculine ] };
389     key <AC11>  { [          ugrave,         percent,         twosuperior,               Ugrave ] };
390     key <BKSL>  { [        asterisk,              mu,       threesuperior,                  yen ] };
391
392     key <LSGT>  { [            less,         greater,                 bar                       ] };
393     key <AB01>  { [               w,               W,       guillemotleft                       ] };
394     key <AB02>  { [               x,               X,      guillemotright                       ] };
395     key <AB03>  { [               c,               C,           copyright                       ] };
396     key <AB04>  { [               v,               V,          registered                       ] };
397     key <AB05>  { [               b,               B,              ssharp                       ] };
398     key <AB06>  { [               n,               N,             notsign                       ] };
399     key <AB07>  { [           comma,        question,        questiondown                       ] };
400     key <AB08>  { [       semicolon,          period,            multiply                       ] };
401     key <AB09>  { [           colon,           slash,            division                       ] };
402     key <AB10>  { [          exclam,         section,          exclamdown                       ] };
403
404     // French uses a comma as decimal separator, but keyboards are labeled with a period
405     // Will take effect when KP_Decimal is mapped to the locale decimal separator
406     key <KPDL>  { [       KP_Delete,      KP_Decimal,           KP_Delete,           KP_Decimal ] };
407
408     include "level3(ralt_switch)"
409 };
410
411 partial alphanumeric_keys
412 xkb_symbols "latin9_Sundeadkeys" {
413
414     // Modifies the basic fr-latin9 layout to use the Sun dead keys
415
416     include "fr(latin9)"
417
418     key <AE01>  { [       ampersand,               1,         dead_acute,       periodcentered ] };
419     key <AE07>  { [          egrave,               7,         dead_grave,               Egrave ] };
420     key <AD11>  { [    dead_circumflex, dead_diaeresis,         dead_tilde,           quoteright ] };
421
422 };
423
424 partial alphanumeric_keys
425 xkb_symbols "latin9_sundeadkeys" {
426
427     include "fr(latin9_Sundeadkeys)"
428
429     name[Group1]="French (legacy, alternative, Sun dead keys)";
430 };
431
432 partial alphanumeric_keys
433 xkb_symbols "latin9_nodeadkeys" {
434
435     // Modifies the basic fr-latin9 layout to eliminate all dead keys
436
437     include "fr(latin9)"
438
439     name[Group1]="French (legacy, alternative, eliminate dead keys)";
440
441     key <AE01>  { [       ampersand,               1,          apostrophe,       periodcentered ] };
442     key <AE07>  { [          egrave,               7,               grave,               Egrave ] };
443     key <AE12>  { [           equal,            plus,          braceright                       ] };
444     key <AD11>  { [     asciicircum,       diaeresis,          asciitilde,           quoteright ] };
445 };
446
447 // Bépo : Improved ergonomic french keymap using Dvorak method.
448 // Built by community on 'Dvorak Fr / Bépo' :
449 // see http://www.clavier-dvorak.org/wiki/ to join and help.
450 // XOrg integration (1.0rc2 version) in 2008
451 // by Frédéric Boiteux <fboiteux at free dot fr>
452 //
453 // Bépo layout (1.0rc2 version) for a pc105 keyboard (french) :
454 // ┌────┐
455 // │ S A│   S = Shift,  A = AltGr + Shift
456 // │ s a│   s = normal, a = AltGr
457 // └────┘
458 //
459 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
460 // │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6   │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃
461 // │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃  arrière┃
462 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
463 // ┃       ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ !   │ V   │ D Ð │ L   │ J IJ │ Z Ə │ W   ┃Entrée ┃
464 // ┃Tab ↹  ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃   ⏎   ┃
465 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
466 // ┃        ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N   │ M º │ Ç , ┃      ┃
467 // ┃Maj ⇬   ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃      ┃
468 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
469 // ┃       ┃ Ê   │ À   │ Y ‘ │ X ’ │ : · │ K   │ ? ̉ │ Q ̣ │ G   │ H ‡ │ F ª ┃             ┃
470 // ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧      ┃
471 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
472 // ┃       ┃       ┃       ┃ Espace inséc.   Espace inséc. fin ┃       ┃       ┃       ┃
473 // ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ (Espace)      _               ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
474 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
475 partial alphanumeric_keys
476 xkb_symbols "bepo" {
477
478     include "level3(ralt_switch)"
479     include "keypad(oss)"
480
481     name[Group1]= "French (Bepo, ergonomic, Dvorak way)";
482
483     // First row
484     key <TLDE> { [          dollar,   numbersign,        endash,       paragraph ] }; // $ # – ¶
485     key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        quotedbl,            1,         emdash, doublelowquotemark ] }; // " 1 — „
486     key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [   guillemotleft,            2,           less,  leftdoublequotemark ] }; // « 2 < “
487     key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [  guillemotright,            3,        greater, rightdoublequotemark ] }; // » 3 > ”
488     key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       parenleft,            4,    bracketleft,      lessthanequal ] }; // ( 4 [ ≤
489     key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [      parenright,            5,   bracketright,   greaterthanequal ] }; // ) 5 ] ≥
490     key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [              at,            6,    asciicircum                 ] }; // @ 6 ^
491     key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            plus,            7,      plusminus,        notsign ] }; // + 7 ± ¬
492     key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           minus,            8,          U2212,     onequarter ] }; // - 8 − ¼
493     key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           slash,            9,       division,        onehalf ] }; // / 9 ÷ ½
494     key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        asterisk,            0,       multiply,  threequarters ] }; // * 0 × ¾
495     key <AE11> { [           equal,       degree,       notequal,        minutes ] }; // = ° ≠ ′
496     key <AE12> { [         percent,        grave,          U2030,        seconds ] }; // % ` ‰ ″
497
498     // Second row
499     key <AD01> { [               b,            B,            bar,      brokenbar ] }; // b B | ¦
500     key <AD02> { [          eacute,       Eacute,     dead_acute, dead_doubleacute ] }; // é É ˊ ˝
501     key <AD03> { [               p,            P,      ampersand,        section ] }; // p P & §
502     key <AD04> { [               o,            O,             oe,             OE ] }; // o O œ Œ
503     key <AD05> { [          egrave,       Egrave,     dead_grave,          grave ] }; // è È ` `
504     key <AD06> { [ dead_circumflex,       exclam,     exclamdown                 ] }; // ^ ! ¡
505     key <AD07> { [               v,            V,     dead_caron                 ] }; // v V ˇ
506     key <AD08> { [               d,            D,            eth,            ETH ] }; // d D ð Ð
507     key <AD09> { [               l,            L,    dead_stroke                 ] }; // l L /
508     key <AD10> { [               j,            J,          U0133,          U0132 ] }; // j J ij IJ
509     key <AD11> { [               z,            Z,          schwa,          SCHWA ] }; // z Z ə Ə
510     key <AD12> { [               w,            W,     dead_breve                 ] }; // w W ̆
511
512     // Third row
513     key <AC01> { [               a,            A,             ae,             AE ] }; // a A æ Æ
514     key <AC02> { [               u,            U,         ugrave,         Ugrave ] }; // u U ù Ù
515     key <AC03> { [               i,            I, dead_diaeresis,  dead_abovedot ] }; // i I ̈ ˙
516     key <AC04> { [               e,            E,       EuroSign,  dead_currency ] }; // e E € ¤
517     key <AC05> { [           comma,    semicolon, rightsinglequotemark, dead_horn ] }; // , ; ’ ̛
518     key <AC06> { [               c,            C,      copyright,          U017F ] }; // c C © ſ
519     key <AC07> { [               t,            T,          thorn,          THORN ] }; // t T þ Þ
520     key <AC08> { [               s,            S,         ssharp,          U1E9E ] }; // s S ß ẞ
521     key <AC09> { [               r,            R,     registered,      trademark ] }; // r R ® ™
522     key <AC10> { [               n,            N,     dead_tilde                 ] }; // n N ~
523     key <AC11> { [               m,            M,    dead_macron,      masculine ] }; // m M ̄ º
524     key <BKSL> { [        ccedilla,     Ccedilla,   dead_cedilla, dead_belowcomma ] }; // ç Ç ¸ ,
525
526     // Fourth row
527     key <LSGT> { [     ecircumflex,  Ecircumflex,          slash                 ] }; // ê Ê /
528     key <AB01> { [          agrave,       Agrave,      backslash                 ] }; // à À \
529     key <AB02> { [               y,            Y,      braceleft, leftsinglequotemark  ] }; // y Y { ‘
530     key <AB03> { [               x,            X,     braceright, rightsinglequotemark ] }; // x X } ’
531     key <AB04> { [          period,        colon,       ellipsis, periodcentered ] }; // . : … ·
532     key <AB05> { [               k,            K,     asciitilde                 ] }; // k K ~
533     key <AB06> { [      apostrophe,     question,   questiondown,      dead_hook ] }; // ' ? ¿ ̉
534     key <AB07> { [               q,            Q, dead_abovering,  dead_belowdot ] }; // q Q ˚ ̣
535     key <AB08> { [               g,            G,     dead_greek                 ] }; // g G µ
536     key <AB09> { [               h,            H,         dagger,   doubledagger ] }; // h H † ‡
537     key <AB10> { [               f,            F,    dead_ogonek,    ordfeminine ] }; // f F ̨ ª
538
539     key <SPCE> { [           space, nobreakspace,     underscore,          U202F ] }; // ␣ (espace insécable) _ (espace insécable fin)
540 };
541
542 partial alphanumeric_keys
543 xkb_symbols "bepo_latin9" {
544
545     // Restricts the fr(bepo) layout to latin9 symbols
546
547     include "fr(bepo)"
548     include "keypad(oss_latin9)"
549
550     name[Group1]="French (Bepo, ergonomic, Dvorak way, latin-9 only)";
551
552     key <TLDE> { [          dollar,   numbersign,        dollar,       paragraph ] }; // $ # $ ¶
553
554     key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        quotedbl,            1                                 ] }; // " 1
555     key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [   guillemotleft,            2,           less                 ] }; // « 2 <
556     key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [  guillemotright,            3,        greater                 ] }; // » 3 >
557     key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       parenleft,            4,    bracketleft                 ] }; // ( 4 [
558     key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [      parenright,            5,   bracketright                 ] }; // ) 5 ]
559     key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           minus,            8,          minus,     onequarter ] }; // - 8 - ¼
560     key <AE11> { [           equal,       degree                                 ] }; // = °
561     key <AE12> { [         percent,        grave                                 ] }; // % `
562
563     key <AD01> { [               b,            B,            bar                 ] }; // b B |
564     key <AD02> { [          eacute,       Eacute,     dead_acute                 ] }; // é É ˊ
565     key <AD10> { [               j,            J                                 ] }; // j J
566     key <AD11> { [               z,            Z                                 ] }; // z Z
567     key <AD12> { [               w,            W                                 ] }; // w W
568
569     key <AC03> { [               i,            I, dead_diaeresis                 ] }; // i I ̈
570     key <AC05> { [           comma,    semicolon,          comma,      dead_horn ] }; // , ; , ̛
571     key <AC06> { [               c,            C,      copyright                 ] }; // c C ©
572     key <AC08> { [               s,            S,         ssharp                 ] }; // s S ß
573     key <AC09> { [               r,            R,     registered                 ] }; // r R ®
574     key <AC11> { [               m,            M,         macron,      masculine ] }; // m M ̄ º
575
576     key <AB02> { [               y,            Y,      braceleft                 ] }; // y Y {
577     key <AB03> { [               x,            X,     braceright                 ] }; // x X }
578     key <AB04> { [          period,        colon                                 ] }; // . :
579     key <AB09> { [               h,            H                                 ] }; // h H
580     key <AB10> { [               f,            F,              f,    ordfeminine ] }; // f F   ª
581
582     // Note : on a besoin de redéfinir les niveaux 3 et 4,
583     // donc nbsp(level2) ne suffit pas !
584     key <SPCE> { [           space,  nobreakspace,    underscore,   nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable)
585 };
586
587 // Author   : Francis Leboutte, http://www.algo.be/ergo/dvorak-fr.html
588 //            thanks to Fabien Cazenave for his help
589 // Licence  : X11
590 // Version  : 0.3
591
592 // Base layer + dead AltGr key (`):
593 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
594 // │ *   │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   │ 7   │ 8   │ 9   │ 0   │ +   │ %   ┃          ┃
595 // │ _   │ =   │ / ± │ - ¼ │ è ½ │ \ ¾ │ ^   │ (   │ ` ` │ )   │ "   │ [   │ ]   ┃ ⌫        ┃
596 // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
597 // ┃        ┃ ? Æ │ <   │ >   │ G   │ !   │ H   │ V   │ C Ç │ M   │ K   │ Z   │ &   ┃       ┃
598 // ┃ ↹      ┃ : æ │ ' $ │ é É │ g € │ . ° │ h   │ v   │ c ç │ m µ │ k   │ z   │ ¨   ┃       ┃
599 // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  ⏎   ┃
600 // ┃         ┃ O Ò │ A À │ U Ù │ E È │ B   │ F   │ S   │ T   │ N   │ D   │ W   │ #   ┃      ┃
601 // ┃ ⇬       ┃ o ò │ a à │ u ù │ e è │ b   │ f   │ s « │ t   │ n » │ d   │ w   │ ~   ┃      ┃
602 // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
603 // ┃      ┃ ç Ç │ | Œ │ Q   │ @   │ I Ì │ Y   │ X   │ R   │ L   │ P   │ J   ┃               ┃
604 // ┃ ⇧    ┃ à À │ ; œ │ q { │ , } │ i ì │ y £ │ x   │ r º │ l   │ p § │ j   ┃ ⇧             ┃
605 // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
606 // ┃       ┃       ┃       ┃ ␣                            ⍽ ┃       ┃       ┃       ┃       ┃
607 // ┃ ctrl  ┃ super ┃ alt   ┃ ␣ Espace    Espace insécable ⍽ ┃ alt   ┃ super ┃ menu  ┃ ctrl  ┃
608 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
609
610 // Notice the specific Caps_Lock layer:
611 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
612 // │ *   │ 1   │ 2   │ 3   │ 4   │ 5   │ 6   │ 7   │ 8   │ 9   │ 0   │ +   │ %   ┃          ┃
613 // │     │     │     │     │     │     │     │     │     │     │     │     │     ┃ ⌫        ┃
614 // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
615 // ┃        ┃     │ <   │ >   │     │     │     │     │     │     │     │     │     ┃       ┃
616 // ┃ ↹      ┃     │     │     │     │     │     │     │     │     │     │     │     ┃       ┃
617 // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  ⏎   ┃
618 // ┃         ┃     │     │     │     │     │     │     │     │     │     │     │     ┃      ┃
619 // ┃ ⇬       ┃     │     │     │     │     │     │     │     │     │     │     │     ┃      ┃
620 // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
621 // ┃      ┃ /   │ -   │     │     │     │     │     │     │     │     │     ┃               ┃
622 // ┃ ⇧    ┃     │     │     │     │     │     │     │     │     │     │     ┃ ⇧             ┃
623 // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
624 // ┃       ┃       ┃       ┃ ␣                            ⍽ ┃       ┃       ┃       ┃       ┃
625 // ┃ ctrl  ┃ super ┃ alt   ┃ ␣ Espace    Espace insécable ⍽ ┃ alt   ┃ super ┃ menu  ┃ ctrl  ┃
626 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
627
628 partial alphanumeric_keys modifier_keys
629 xkb_symbols "dvorak" {
630   name[Group1]="French (Dvorak)";
631
632   // First row
633   key <TLDE> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       underscore,   asterisk                  ] };
634   key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            equal,          1                  ] };
635   key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            slash,          2,       plusminus ] };
636   key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            minus,          3,      onequarter ] };
637   key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           egrave,          4,         onehalf ] };
638   key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        backslash,          5,   threequarters ] };
639   key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [  dead_circumflex,          6                  ] };
640   key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        parenleft,          7                  ] };
641   key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch,          8,           grave ] };
642   key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       parenright,          9                  ] };
643   key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [         quotedbl,          0                  ] };
644   key <AE11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [      bracketleft,       plus                  ] };
645   key <AE12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [     bracketright,    percent                  ] };
646
647   // Second row
648   key <AD01> { [            colon,         question,              ae,               AE ] };
649   key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       apostrophe,       less,          dollar ] };
650   key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           eacute,    greater,          Eacute ] };
651   key <AD04> { [                g,                G,        EuroSign                   ] };
652   key <AD05> { [           period,           exclam,          degree                   ] };
653   key <AD06> { [                h,                H                                    ] };
654   key <AD07> { [                v,                V                                    ] };
655   key <AD08> { [                c,                C,        ccedilla,         Ccedilla ] };
656   key <AD09> { [                m,                M,              mu                   ] };
657   key <AD10> { [                k,                K                                    ] };
658   key <AD11> { [                z,                Z                                    ] };
659   key <AD12> { [   dead_diaeresis,        ampersand                                    ] };
660
661   // Third row
662   key <AC01> { [                o,                O,          ograve,           Ograve ] };
663   key <AC02> { [                a,                A,          agrave,           Agrave ] };
664   key <AC03> { [                u,                U,          ugrave,           Ugrave ] };
665   key <AC04> { [                e,                E,          egrave,           Egrave ] };
666   key <AC05> { [                b,                B                                    ] };
667   key <AC06> { [                f,                F                                    ] };
668   key <AC07> { [                s,                S,   guillemotleft                   ] };
669   key <AC08> { [                t,                T                                    ] };
670   key <AC09> { [                n,                N,  guillemotright                   ] };
671   key <AC10> { [                d,                D                                    ] };
672   key <AC11> { [                w,                W                                    ] };
673   key <BKSL> { [       asciitilde,       numbersign                                    ] };
674
675   // Fourth row
676   key <LSGT> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [       agrave, ccedilla,  Agrave, Ccedilla,   slash ] };
677   key <AB01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [    semicolon,      bar,      oe,       OE,   minus ] };
678   key <AB02> { [                q,                Q,       braceleft                   ] };
679   key <AB03> { [            comma,               at,      braceright                   ] };
680   key <AB04> { [                i,                I,          igrave,           Igrave ] };
681   key <AB05> { [                y,                Y,        sterling                   ] };
682   key <AB06> { [                x,                X                                    ] };
683   key <AB07> { [                r,                R,       masculine                   ] };
684   key <AB08> { [                l,                L                                    ] };
685   key <AB09> { [                p,                P,         section                   ] };
686   key <AB10> { [                j,                J                                    ] };
687
688   key <SPCE> { [            space,            space,    nobreakspace,     nobreakspace ] };
689 };
690
691 // C'WHERTY: Breton keyboard. Ar c'hlavier brezhoneg.
692 // Copyright © 2009 Dominique Pellé <dominique.pelle@gmail.com>
693 // Version: 0.1
694 //
695 // ┌────┐
696 // │ S A│   S = Reol = Shift,  A = ArErl + Pennlizherenn = AltGr + Shift
697 // │ s a│   s = normal,        a = AltGr
698 // └────┘
699 //
700 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
701 // │ $ Γ │ 1 Δ │ 2 Θ │ 3 Λ │ 4 Ξ │ 5 Π │ 6 Σ │ 7 Φ │ 8 Ψ │ 9 Ç │ 0 Ω │ ° ß │ + ¬ ┃ ⌫ Souzañ┃
702 // │ ² ˙ │ & ¯ │ é ´ │ " # │ ' { │ ( [ │ - | │ è ` │ - \ │ ç ± │ à @ │ ) ] │ = } ┃         ┃
703 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
704 // ┃Toalenn┃ C'h │ W ω │ E ε │ R ρ │ T τ │ Y ψ │ U υ │ I ι │ O OE│ P π │ ¨ ¥ │ * £ ┃Enankañ┃
705 // ┃     ↹ ┃ c'h │ w   │ e € │ r   │ t   │ y   │ u   │ i ı │ o oe│ p   │ ^ « │ / » ┃   ⏎   ┃
706 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
707 // ┃Prenn   ┃ A Æ │ S σ │ D δ │ F φ │ G γ │ H η │ J ς │ K κ │ L λ │ M μ │ Ù ® │ ! ¡ ┃      ┃
708 // ┃Pennli ⇬┃ a æ │ s   │ d $ │ f   │ g   │ h   │ j   │ k   │ l   │ m   │ ù ŭ │ ? ¿ ┃      ┃
709 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
710 // ┃       ┃ Q θ │ Z ζ │ X ξ │ C χ │ V   │ B β │ N ν │ CH  │ Ñ   │ : © │ ;   ┃             ┃
711 // ┃Shift ⇧┃ q < │ z > │ x   │ c ¢ │ v   │ b   │ n   │ ch  │ ñ   │ .   │ ,   ┃Shift ⇧      ┃
712 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
713 // ┃       ┃       ┃       ┃ ⍽ Espace insécable              ␣ ┃       ┃       ┃       ┃
714 // ┃Reol   ┃Meta   ┃Erl    ┃ ␣ Espace                        ␣ ┃ArErl ⇮┃Menu   ┃Reol   ┃
715 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
716 partial alphanumeric_keys
717 xkb_symbols "bre" {
718
719     include "keypad(oss)"
720
721     name[Group1]= "French (Breton)";
722
723     // First row
724     key <TLDE> { [     twosuperior,     dead_tilde,   dead_abovedot,    Greek_GAMMA ] };
725     key <AE01> { [       ampersand,              1,     dead_macron,    Greek_DELTA ] };
726     key <AE02> { [          eacute,              2,      dead_acute,    Greek_THETA ] };
727     key <AE03> { [        quotedbl,              3,      numbersign,    Greek_LAMDA ] };
728     key <AE04> { [      apostrophe,              4,       braceleft,       Greek_XI ] };
729     key <AE05> { [       parenleft,              5,     bracketleft,       Greek_PI ] };
730     key <AE06> { [           minus,              6,             bar,    Greek_SIGMA ] };
731     key <AE07> { [          egrave,              7,      dead_grave,      Greek_PHI ] };
732     key <AE08> { [      underscore,              8,       backslash,      Greek_PSI ] };
733     key <AE09> { [        ccedilla,              9,       plusminus,       Ccedilla ] };
734     key <AE10> { [          agrave,              0,              at,    Greek_OMEGA ] };
735     key <AE11> { [      parenright, dead_abovering,    bracketright,         ssharp ] };
736     key <AE12> { [           equal,           plus,      braceright,        notsign ] };
737
738     // Second row
739     // Handling the C'H key correctly requires an inputmethod (XIM)
740     // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
741  // key <AD01> { [    trigraph_c_h,   trigraph_C_h,    trigraph_C_H,    Greek_alpha ] };
742     key <AD01> { [           UF8FD,          UF8FE,           UF8FF,    Greek_alpha ] };
743     key <AD02> { [               w,              W,     Greek_omega,    Greek_omega ] };
744     key <AD03> { [               e,              E,        EuroSign,  Greek_epsilon ] };
745     key <AD04> { [               r,              R,       Greek_rho,      Greek_rho ] };
746     key <AD05> { [               t,              T,       Greek_tau,      Greek_tau ] };
747     key <AD06> { [               y,              Y,       Greek_psi,      Greek_psi ] };
748     key <AD07> { [               u,              U,   Greek_upsilon,  Greek_upsilon ] };
749     key <AD08> { [               i,              I,        idotless,     Greek_iota ] };
750     key <AD09> { [               o,              O,              oe,             OE ] };
751     key <AD10> { [               p,              P,        Greek_pi,       Greek_pi ] };
752     key <AD11> { [ dead_circumflex, dead_diaeresis,   guillemotleft,            yen ] };
753     key <AD12> { [           slash,       asterisk,  guillemotright,       sterling ] };
754
755     // Third row
756     key <AC01> { [               a,              A,              ae,             AE ] };
757     key <AC02> { [               s,              S,     Greek_sigma,    Greek_sigma ] };
758     key <AC03> { [               d,              D,          dollar,    Greek_delta ] };
759     key <AC04> { [               f,              F,       Greek_phi,      Greek_phi ] };
760     key <AC05> { [               g,              G,     Greek_gamma,    Greek_gamma ] };
761     key <AC06> { [               h,              H,       Greek_eta,      Greek_eta ] };
762     key <AC07> { [               j,              J, Greek_finalsmallsigma, Greek_finalsmallsigma ] };
763     key <AC08> { [               k,              K,       Greek_kappa,  Greek_kappa ] };
764     key <AC09> { [               l,              L,       Greek_lamda, Greek_lambda ] };
765     key <AC10> { [               m,              M,          Greek_mu,     Greek_mu ] };
766     key <AC11> { [          ugrave,         Ugrave,            ubreve,   registered ] };
767     key <BKSL> { [        question,         exclam,      questiondown,   exclamdown ] };
768
769     // Fourth row
770     key <LSGT> { [               q,              Q,            less,    Greek_theta ] };
771     key <AB01> { [               z,              Z,         greater,     Greek_zeta ] };
772     key <AB02> { [               x,              X,        Greek_xi,       Greek_xi ] };
773     key <AB03> { [               c,              C,            cent,      Greek_chi ] };
774     key <AB04> { [               v,              V                                  ] };
775     key <AB05> { [               b,              B,      Greek_beta,     Greek_beta ] };
776     key <AB06> { [               n,              N,        Greek_nu,       Greek_nu ] };
777     // Handling the CH key correctly requires an inputmethod (XIM)
778     // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
779  // key <AB07> { [      digraph_ch,     digraph_Ch,      digraph_CH,  Greek_omicron ] };
780     key <AB07> { [           UF8FA,          UF8FB,           UF8FC,  Greek_omicron ] };
781     key <AB08> { [          ntilde,         Ntilde                                  ] };
782     key <AB09> { [          period,          colon,         section,      copyright ] };
783     key <AB10> { [           comma,      semicolon,         percent                 ] };
784
785     key <SPCE> { [           space,   nobreakspace,           space,   nobreakspace ] };
786
787     include "level3(ralt_switch)"
788 };
789
790 // Occitan layout
791 // Author : 2009 Thomas Metz <tmetz @ free.fr>
792 // Derivated from the layout defined at http://www.panoccitan.org
793 // Version: 0.1
794 // From OSS french keyboard :
795 // - add á, í, ò, ó et ú, Á, Í, Ò, Ó, Ú, ñ, Ñ
796 // - change position of æ, ü, î, û, œ, ô, ö, ï, â, ë
797 // 
798 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
799 // │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃
800 // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃  arrière┃
801 // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
802 // ┃       ┃ A Á │ Z Æ │ E ¢ │ R Ê │ T Ë │ Y Û │ U Ú │ I Í │ O Ó │ P Ò │ ¨ Œ │ £ Ø ┃Entrée ┃
803 // ┃Tab ↹  ┃ a á │ z æ │ e € │ r ê │ t ë │ y û │ u ú │ i í │ o ó │ p ò │ ^ œ │ $ ø ┃   ⏎   ┃
804 // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
805 // ┃        ┃ Q Ä │ S „ │ D Â │ F ‚ │ G ¥ │ H Ü │ J Î │ K Ï │ L Ô │ M Ö │ % Ù │ µ ̄ ┃      ┃
806 // ┃Maj ⇬   ┃ q ä │ s ß │ d â │ f ‘ │ g ’ │ h ü │ j î │ k ï │ l ô │ m ö │ ù ' │ * ` ┃      ┃
807 // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
808 // ┃       ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N Ñ │ ? … │ . . │ / ∕ │ § − ┃             ┃
809 // ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v → │ b ↓ │ n ñ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧      ┃
810 // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
811 // ┃       ┃       ┃       ┃ ␣         Espace fine insécable ⍽ ┃       ┃       ┃       ┃
812 // ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ Espace       Espace insécable ⍽ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
813 // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
814 partial alphanumeric_keys
815 xkb_symbols "oci" {
816
817     include "fr(oss)"
818
819     name[Group1]= "Occitan";
820
821     // First row
822     key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,          dead_cedilla ] }; // ² ³ ¹ ¸ 
823     key <AE01>  { [        ampersand,                1,           dead_caron,           dead_ogonek ] }; // & 1 ˇ ̨
824     key <AE02>  { [           eacute,                2,           asciitilde,                Eacute ] }; // é 2 ~ É
825     key <AE03>  { [         quotedbl,                3,           numbersign,            dead_breve ] }; // " 3 # ˘
826     key <AE04>  { [       apostrophe,                4,            braceleft,             0x1002014 ] }; // ' 4 { — (tiret cadratin)
827     key <AE05>  { [        parenleft,                5,          bracketleft,             0x1002013 ] }; // ( 5 [ – (tiret demi-cadratin)
828     key <AE06>  { [            minus,                6,                  bar,             0x1002011 ] }; // - 6 | ‑ (tiret insécable)
829     key <AE07>  { [           egrave,                7,                grave,                Egrave ] }; // è 7 ` È
830     key <AE08>  { [       underscore,                8,            backslash,             trademark ] }; // _ 8 \ ™
831     key <AE09>  { [         ccedilla,                9,          asciicircum,              Ccedilla ] }; // ç 9 ^ Ç
832     key <AE10>  { [           agrave,                0,                   at,                Agrave ] }; // à 0 @ À
833     key <AE11>  { [       parenright,           degree,         bracketright,              notequal ] }; // ) ° ] ≠ 
834     key <AE12>  { [            equal,             plus,           braceright,             plusminus ] }; // = + } ±
835
836     // Second row
837     key <AD01>  { [                a,                A,               aacute,                Aacute ] }; // a A á Á
838     key <AD02>  { [                z,                Z,                   ae,                    AE ] }; // z Z æ Æ
839     key <AD03>  { [                e,                E,             EuroSign,                  cent ] }; // e E € ¢
840     key <AD04>  { [                r,                R,          ecircumflex,           Ecircumflex ] }; // r R ê Ê
841     key <AD05>  { [                t,                T,           ediaeresis,            Ediaeresis ] }; // t T ë Ë
842     key <AD06>  { [                y,                Y,          ucircumflex,           Ucircumflex ] }; // y Y û Û
843     key <AD07>  { [                u,                U,               uacute,                Uacute ] }; // u U ú Ú
844     key <AD08>  { [                i,                I,               iacute,                Iacute ] }; // i I í Í
845     key <AD09>  { [                o,                O,               oacute,                Oacute ] }; // o O ó Ó
846     key <AD10>  { [                p,                P,               ograve,                Ograve ] }; // p P ò Ò
847     key <AD11>  { [  dead_circumflex,   dead_diaeresis,                   oe,                    OE ] }; // ^ ̈ ̃ œ Œ
848     key <AD12>  { [           dollar,         sterling,               oslash,              Ooblique ] }; // $ £ ø Ø
849
850     // Third row
851     key <AC01>  { [                q,                Q,           adiaeresis,            Adiaeresis ] }; // q Q ä Ä
852     key <AC02>  { [                s,                S,               ssharp,    doublelowquotemark ] }; // s S ß „ 
853     key <AC03>  { [                d,                D,           acircumflex,          Acircumflex ] }; // d D â Â
854     key <AC04>  { [                f,                F,  leftsinglequotemark,    singlelowquotemark ] }; // f F ‘ ‚
855     key <AC05>  { [                g,                G, rightsinglequotemark,                   yen ] }; // g G ’ ¥
856     key <AC06>  { [                h,                H,           udiaeresis,            Udiaeresis ] }; // h H ü Ü
857     key <AC07>  { [                j,                J,          icircumflex,            Icircumflex] }; // j J î Î
858     key <AC08>  { [                k,                K,           idiaeresis,             Idiaeresis] }; // k K ï Ï
859     key <AC09>  { [                l,                L,          ocircumflex,           Ocircumflex ] }; // l L ô Ô
860     key <AC10>  { [                m,                M,           odiaeresis,            Odiaeresis ] }; // m M ö Ö
861     key <AC11>  { [           ugrave,          percent,           dead_acute,                Ugrave ] }; // ù % ' Ù
862     key <BKSL>  { [         asterisk,               mu,           dead_grave,           dead_macron ] }; // * µ ` ̄
863
864     // Fourth row
865     key <LSGT>  { [             less,          greater,        lessthanequal,      greaterthanequal ] }; // < > ≤ ≥
866     key <AB01>  { [                w,                W,        guillemotleft,   leftdoublequotemark ] }; // w W « “
867     key <AB02>  { [                x,                X,       guillemotright,  rightdoublequotemark ] }; // x X » ”
868     key <AB03>  { [                c,                C,            copyright,            registered ] }; // c C © ®
869     key <AB04>  { [                v,                V,            rightarrow,            leftarrow ] }; // v V → ← 
870     key <AB05>  { [                b,                B,            downarrow,               uparrow ] }; // b B ↓ ↑
871     key <AB06>  { [                n,                N,              ntilde,                 Ntilde ] }; // n N ñ Ñ
872     key <AB07>  { [            comma,         question,         questiondown,             0x1002026 ] }; // , ? ¿ …
873     key <AB08>  { [        semicolon,           period,             multiply,             0x10022C5 ] }; // ; . × ⋅
874     key <AB09>  { [            colon,            slash,             division,             0x1002215 ] }; // : / ÷ ∕
875     key <AB10>  { [           exclam,          section,           exclamdown,             0x1002212 ] }; // ! § ¡ −
876 };
877
878 // Marc.Shapiro@inria.fr 19-sep-1998
879 // modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
880 // adapted to the new input layer :
881 //        Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
882 // adapted for Latin9 alphabet (ISO-8859-15): 
883 //        Etienne Herlent <eherlent@linux-france.org> march 2005
884
885 // This map is an almost-complete mapping of the standard French
886 // MacIntosh keyboard under Xwindows.  I tried to remain as faithful
887 // as possible to the Mac meaning of each key.  I did this entirely by
888 // hand and by intuition, relying on the Clavier (Keyboard?) Desktop
889 // Accessory for the Mac meaning of keys, and on reading keysymdef.h
890 // to intuit the corresponding X names.  Lacking proper documentation,
891 // I may have made some mistakes.
892
893 // Entries marked CHECK are particularly uncertain
894
895 // Entries marked MISSING mark Mac characters for which I was unable
896 // to find a corresponding keysym.  (Some for sure don't: e.g. the
897 // Apple mark and the oe/OE character; others I may have simply not
898 // found.)
899
900 // Copied from macintosh_vndr/fr
901 partial alphanumeric_keys
902 xkb_symbols "mac" {
903
904     name[Group1]= "French (Macintosh)";
905
906     // Alphanumeric section
907     key <TLDE> {        [          at,     numbersign, periodcentered,  Ydiaeresis      ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
908     key <AE01> {        [   ampersand,    1,   VoidSymbol,    dead_acute        ]       }; // MISSING: Apple
909     key <AE02> {        [      eacute,    2,   ediaeresis,        Eacute        ]       };
910     key <AE03> {        [    quotedbl,    3,   VoidSymbol,    VoidSymbol        ]       }; // CHECK all quotemarks
911     key <AE04> {        [  apostrophe,    4,   VoidSymbol,    VoidSymbol        ]       };
912     key <AE05> {        [   parenleft,    5,    braceleft,   bracketleft        ]       };
913  // CHECK section
914     key <AE06> {        [     section,    6,    paragraph,         aring        ]       };
915     key <AE07> {        [      egrave,    7, guillemotleft, guillemotright      ]       };
916     key <AE08> {        [      exclam,    8,   exclamdown,   Ucircumflex        ]       };
917     key <AE09> {        [    ccedilla,    9,     Ccedilla,        Aacute        ]       };
918     key <AE10> {        [      agrave,    0,       oslash,    VoidSymbol        ]       }; // MISSING: Oslash
919     key <AE11> {        [  parenright, degree, braceright,  bracketright        ]       };
920     key <AE12> {        [       minus, underscore, emdash,        endash        ]       }; // CHECK dashes
921
922     key <AD01> {        [           a,  A,           ae,          AE    ]       };
923     key <AD02> {        [           z,  Z,  Acircumflex,       Aring            ]       };
924     key <AD03> {        [           e,  E,  ecircumflex, Ecircumflex    ]       };
925     key <AD04> {        [           r,  R,   registered,    currency    ]       };
926     key <AD05> {        [           t,  T,   VoidSymbol,  VoidSymbol    ]       };
927     key <AD06> {        [           y,  Y,       Uacute,  Ydiaeresis    ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
928     key <AD07> {        [           u,  U,   VoidSymbol, ordfeminine    ]       }; // MISSING: ordmasculine?
929     key <AD08> {        [           i,  I,  icircumflex,  idiaeresis    ]       };
930     key <AD09> {        [           o,  O,           oe,          OE            ]       }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9
931     key <AD10> {        [           p,  P,   VoidSymbol,  VoidSymbol    ]       };
932     key <AD11> {        [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex       ]       };
933     key <AD12> {        [      dollar, asterisk,   EuroSign, yen                ]       }; // eherlent : EuroSign in Latin9
934
935     key <AC01> {        [         q, Q, acircumflex,         Agrave             ]       };
936     key <AC02> {        [         s, S,      Ograve,     VoidSymbol     ]       };
937     key <AC03> {        [         d, D,  VoidSymbol,     VoidSymbol     ]       };
938     key <AC04> {        [         f, F,  VoidSymbol, periodcentered     ]       }; // MISSING: oblong script f??
939     key <AC05> {        [         g, G,  VoidSymbol,     VoidSymbol     ]       }; // MISSING: kerned fi, fl
940     key <AC06> {        [         h, H,      Igrave,    Icircumflex     ]       };
941     key <AC07> {        [         j, J,  Idiaeresis,         Iacute     ]       };
942     key <AC08> {        [         k, K,      Egrave,     Ediaeresis     ]       };
943     key <AC09> {        [         l, L,     notsign,            bar     ]       };
944     key <AC10> {        [         m, M,          mu,         Oacute     ]       };
945     key <AC11> {        [    ugrave,percent, Ugrave,    ucircumflex     ]       }; // MISSING: per-mille
946     key <BKSL> {        [ dead_grave, sterling,  at,     numbersign     ]       };
947
948     key <LSGT> {        [      less, greater, VoidSymbol, VoidSymbol    ]       };
949     key <AB01> {        [         w, W, VoidSymbol,   VoidSymbol        ]       };      // MISSING: half-guillemot (single angle bracket)
950     key <AB02> {        [         x, X, VoidSymbol,   VoidSymbol        ]       }; // CHECK similarequal; MISSING: extra-slanted slash
951     key <AB03> {        [         c, C,  copyright,         cent        ]       };
952     key <AB04> {        [         v, V,    diamond,  leftradical        ]       }; // CHECK diamond, leftradical
953     key <AB05> {        [         b, B,     ssharp,   VoidSymbol        ]       }; // CHECK: Greek_beta or ssharp?; MISSING: oblong script s
954     key <AB06> {        [         n, N,  dead_tilde,  asciitilde        ]       };
955     key <AB07> {        [     comma,  question, VoidSymbol,  questiondown       ]       };
956     key <AB08> {        [ semicolon,  period, VoidSymbol,  periodcentered       ]       };
957     key <AB09> {        [     colon,  slash,   division,        backslash       ]       };
958     key <AB10> {        [     equal,   plus, VoidSymbol,        plusminus       ]       };
959
960     key <SPCE> {        [     space,  space, nobreakspace,   nobreakspace       ]       };
961     // End alphanumeric section
962
963     key <KPDL> {        [  comma,KP_Decimal     ]       };
964
965     include "level3(ralt_switch)"
966 };
967
968 partial alphanumeric_keys
969 xkb_symbols "geo" {
970     include "ge(basic)"
971
972     name[Group1]= "Georgian (France, AZERTY Tskapo)";
973
974     key <TLDE> { [ exclam, noSymbol ] };
975     key <AE01> { [ 0x0100201e, 1 ] };
976     key <AE02> { [ 0x01002116, 2 ] };
977     key <AE03> { [ percent, 3    ] };
978     key <AE04> { [ parenleft, 4  ] };
979     key <AE05> { [ colon, 5      ] };
980     key <AE06> { [ semicolon, 6  ] };
981     key <AE07> { [ question, 7   ] };
982     key <AE08> { [ 0x01002116, 8 ] };
983     key <AE09> { [ degree, 9     ] };
984     key <AE10> { [ parenright, 0 ] };
985     key <AE11> { [ minus, underscore, 0x01002014 ] };
986     key <AE12> { [ less, greater ] };
987
988     key <AD01> { [ 0x010010d0,  0x010010fa     ] };
989     key <AD02> { [ 0x010010d6,  Z              ] };
990     key <AD03> { [ 0x010010d4,  E, 0x010010f1  ] };
991     key <AD04> { [ 0x010010e0,  0x010000ae     ] };
992     key <AD05> { [ 0x010010e2,  T              ] };
993     key <AD06> { [ 0x010010e7,  0x010010f8     ] };
994     key <AD07> { [ 0x010010e3,  U              ] };
995     key <AD08> { [ 0x010010d8,  0x010010f2     ] };
996     key <AD09> { [ 0x010010dd,  O              ] };
997     key <AD10> { [ 0x010010de,  P              ] };
998     key <AD11> { [ 0x010010d7,  T              ] };
999     key <AD12> { [ 0x010010eb,  Z              ] };
1000
1001     key <AC01> { [ 0x010010e5,  Q              ] };
1002     key <AC02> { [ 0x010010e1,  S              ] };
1003     key <AC03> { [ 0x010010d3,  D              ] };
1004     key <AC04> { [ 0x010010e4,  0x010010f6     ] };
1005     key <AC05> { [ 0x010010d2,  0x010010f9     ] };
1006     key <AC06> { [ 0x010010f0,  0x010010f5     ] };
1007     key <AC07> { [ 0x010010ef,  0x010010f7     ] };
1008     key <AC08> { [ 0x010010d9,  K              ] };
1009     key <AC09> { [ 0x010010da,  L              ] };
1010     key <AC10> { [ 0x010010db,  M              ] };
1011     key <AC11> { [ 0x010010df,  J              ] };
1012     key <BKSL> { [ 0x010010e9,  0x010000a9     ] };
1013
1014     key <LSGT> { [ guillemotleft,guillemotright ] };
1015     key <AB01> { [ 0x010010ec,  W               ] };
1016     key <AB02> { [ 0x010010ee,  0x010010f4      ] };
1017     key <AB03> { [ 0x010010ea,  0x010000a9      ] };
1018     key <AB04> { [ 0x010010d5,  0x010010f3      ] };
1019     key <AB05> { [ 0x010010d1,  B               ] };
1020     key <AB06> { [ 0x010010dc,  0x010010fc      ] };
1021     key <AB07> { [ comma,       0x01002014      ] };
1022     key <AB08> { [ 0x010010e8,  S               ] };
1023     key <AB09> { [ 0x010010e6,  noSymbol        ] };
1024     key <AB10> { [ 0x010010ed,  noSymbol        ] };
1025
1026 };