// Keyboard layouts for France. default partial alphanumeric_keys xkb_symbols "basic" { include "latin" name[Group1]="French"; key { [twosuperior, asciitilde, notsign, notsign ] }; key { [ ampersand, 1, onesuperior, exclamdown ] }; key { [ eacute, 2, asciitilde, oneeighth ] }; key { [ quotedbl, 3, numbersign, sterling ] }; key { [apostrophe, 4, braceleft, dollar ] }; key { [ parenleft, 5, bracketleft, threeeighths ] }; key { [ minus, 6, bar, fiveeighths ] }; key { [ egrave, 7, grave, seveneighths ] }; key { [underscore, 8, backslash, trademark ] }; key { [ ccedilla, 9, asciicircum, plusminus ] }; key { [ agrave, 0, at, degree ] }; key { [parenright, degree, bracketright, questiondown ] }; key { [ equal, plus, braceright, dead_ogonek ] }; key { [ a, A, ae, AE ] }; key { [ z, Z, guillemotleft, less ] }; key { [ e, E, EuroSign, cent ] }; key { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] }; key { [ dollar, sterling, currency, dead_macron ] }; key { [ q, Q, at, Greek_OMEGA ] }; key { [ m, M, mu, masculine ] }; key { [ ugrave, percent, dead_circumflex, dead_caron] }; key { [ asterisk, mu, dead_grave, dead_breve ] }; key { [ w, W, lstroke, Lstroke ] }; key { [ comma, question, dead_acute, dead_doubleacute ] }; key { [ semicolon, period, U2022, multiply ] }; // bullet key { [ colon, slash, periodcentered, division ] }; key { [ exclam, section, dead_belowdot, dead_abovedot ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "olpc" { // #HW-SPECIFIC // Contact: Sayamindu Dasgupta include "fr(basic)" name[Group1]="French"; key { [ less, greater ] }; key { [ dead_circumflex, dead_diaeresis, notsign, dead_abovering ] }; key { [ semicolon, period, underscore, multiply ] }; key { [ twosuperior, asciitilde, VoidSymbol, VoidSymbol ] }; // Some keys only have the Shift+AltGr character printed on them (alongside // the unmodified one). Make such keys shift-invariant so that the printed // value is achieved by pressing AltGr or Shift+AltGr. key { [ x, X, guillemotright, guillemotright ] }; key { [ s, S, ssharp, U1E9E ] }; key { [ z, Z, guillemotleft, guillemotleft ] }; }; partial alphanumeric_keys xkb_symbols "nodeadkeys" { // Modifies the basic French layout to eliminate all dead keys include "fr(basic)" name[Group1]="French (no dead keys)"; key { [ equal, plus, braceright, ogonek ] }; key { [asciicircum, diaeresis, radical, dagger ] }; key { [ dollar, sterling, currency, macron ] }; key { [ j, J, ezh, EZH ] }; key { [ ugrave, percent, asciicircum, caron ] }; key { [ asterisk, mu, grave, breve ] }; key { [ comma, question, acute, doubleacute ] }; key { [ exclam, section, ellipsis, abovedot ] }; }; // Unicode French derivative // Loose refactoring of the historic Linux French keyboard layout // // Copyright © 2006-2008 Nicolas Mailhot // // Credits (fr-latin1, fr-latin0, fr-latin9) // © 199x-1996 René Cougnenc ✝ // © 1997-2002 Guylhem Aznar // © 2003-2006 Nicolas Mailhot // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ A Æ │ Z  │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃ // ┃Tab ↹ ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ø ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ // ┃ ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃ ┃ // ┃Maj ⇬ ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃ ┃ // ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ // ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "oss" { include "level3(ralt_switch)" include "nbsp(level3n)" include "keypad(oss)" name[Group1]="French (alt.)"; // First row key { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸ key { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ ˛ key { [ eacute, 2, asciitilde, Eacute ] }; // é 2 ~ É key { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 # ˘ key { [ apostrophe, 4, braceleft, 0x1002014 ] }; // ' 4 { — (tiret cadratin) key { [ parenleft, 5, bracketleft, 0x1002013 ] }; // ( 5 [ – (tiret demi-cadratin) key { [ minus, 6, bar, 0x1002011 ] }; // - 6 | ‑ (tiret insécable) key { [ egrave, 7, grave, Egrave ] }; // è 7 ` È key { [ underscore, 8, backslash, trademark ] }; // _ 8 \ ™ key { [ ccedilla, 9, asciicircum, Ccedilla ] }; // ç 9 ^ Ç key { [ agrave, 0, at, Agrave ] }; // à 0 @ À key { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠ key { [ equal, plus, braceright, plusminus ] }; // = + } ± // Second row key { [ a, A, ae, AE ] }; // a A æ Æ key { [ z, Z, acircumflex, Acircumflex ] }; // z Z â  key { [ e, E, EuroSign, cent ] }; // e E € ¢ key { [ r, R, ecircumflex, Ecircumflex ] }; // r R ê Ê key { [ t, T, thorn, THORN ] }; // t T þ Þ key { [ y, Y, ydiaeresis, Ydiaeresis ] }; // y Y ÿ Ÿ key { [ u, U, ucircumflex, Ucircumflex ] }; // u U û Û key { [ i, I, icircumflex, Icircumflex ] }; // i I î Î key { [ o, O, oe, OE ] }; // o O œ Œ key { [ p, P, ocircumflex, Ocircumflex ] }; // p P ô Ô key { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^ ¨ ˜ ˚ key { [ dollar, sterling, oslash, Oslash ] }; // $ £ ø Ø // Third row key { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q ä Ä key { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „ key { [ d, D, ediaeresis, Ediaeresis ] }; // d D ë Ë key { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F ‘ ‚ key { [ g, G, rightsinglequotemark, yen ] }; // g G ’ ¥ key { [ h, H, eth, ETH ] }; // h H ð Ð key { [ j, J, udiaeresis, Udiaeresis ] }; // j J ü Ü key { [ k, K, idiaeresis, Idiaeresis ] }; // k K ï Ï key { [ l, L, 0x1000140, 0x100013F ] }; // l L ŀ Ŀ key { [ m, M, odiaeresis, Odiaeresis ] }; // m M ö Ö key { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ´ Ù key { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ¯ // Fourth row key { [ less, greater, lessthanequal, greaterthanequal ] }; // < > ≤ ≥ key { [ w, W, guillemotleft, leftdoublequotemark ] }; // w W « “ key { [ x, X, guillemotright, rightdoublequotemark ] }; // x X » ” key { [ c, C, copyright, registered ] }; // c C © ® key { [ v, V, 0x100202F, leftarrow ] }; // v V ⍽ ← (espace fine insécable) key { [ b, B, downarrow, uparrow ] }; // b B ↓ ↑ key { [ n, N, notsign, rightarrow ] }; // n N ¬ → key { [ comma, question, questiondown, 0x1002026 ] }; // , ? ¿ … key { [ semicolon, period, multiply, 0x10022C5 ] }; // ; . × ⋅ key { [ colon, slash, division, 0x1002215 ] }; // : / ÷ ∕ key { [ exclam, section, exclamdown, 0x1002212 ] }; // ! § ¡ − }; partial alphanumeric_keys xkb_symbols "oss_latin9" { // Restricts the fr(oss) layout to latin9 symbols include "fr(oss)" include "keypad(oss_latin9)" name[Group1]="French (alt., Latin-9 only)"; // First row key { [ ampersand, 1, dead_caron, dead_cedilla ] }; // & 1 ˇ ¸ key { [ quotedbl, 3, numbersign, dead_tilde ] }; // " 3 # ˜ key { [ apostrophe, 4, braceleft, underscore ] }; // ' 4 { _ key { [ parenleft, 5, bracketleft, minus ] }; // ( 5 [ - key { [ minus, 6, bar, minus ] }; // - 6 | - key { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \ key { [ parenright, degree, bracketright, equal ] }; // ) ° ] = // Third row key { [ s, S, ssharp, guillemotleft ] }; // s S ß « key { [ f, F, apostrophe, apostrophe ] }; // f F ' ' key { [ g, G, apostrophe, yen ] }; // g G ' ¥ key { [ l, L, periodcentered, periodcentered ] }; // l L · · key { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * µ ` ^ // Fourth row key { [ less, greater, less, greater ] }; // < > < > key { [ w, W, guillemotleft, guillemotleft ] }; // w W « « key { [ x, X, guillemotright, guillemotright ] }; // x X » » key { [ v, V, nobreakspace, less ] }; // v V ⍽ < (espace insécable) key { [ b, B, minus, asciicircum ] }; // b B - ^ key { [ n, N, notsign, greater ] }; // n N ¬ > key { [ comma, question, questiondown, period ] }; // , ? ¿ . key { [ semicolon, period, multiply, periodcentered ] }; // ; . × · key { [ colon, slash, division, slash ] }; // : / ÷ / key { [ exclam, section, exclamdown, minus ] }; // ! § ¡ - }; partial alphanumeric_keys xkb_symbols "oss_nodeadkeys" { // Modifies the basic fr(oss) layout to eliminate all dead keys include "fr(oss)" name[Group1]="French (alt., no dead keys)"; key { [ twosuperior, threesuperior, onesuperior, cedilla ] }; // ² ³ ¹ ¸ key { [ ampersand, 1, caron, ogonek ] }; // & 1 ˇ ˛ key { [ quotedbl, 3, numbersign, breve ] }; // " 3 # ˘ key { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^ ¨ ~ Å key { [ ugrave, percent, acute, Ugrave ] }; // ù % ' Ù key { [ asterisk, mu, grave, macron ] }; // * µ ` ¯ }; // Historic Linux French keyboard layout (fr-latin9) // Copyright (c) 199x, 2002 Rene Cougnenc (original work) // Guylhem Aznar (maintainer) // Nicolas Mailhot // (XFree86 submission) // // This layout has long been distributed and refined outside official channels. // To this day it remains more feature-rich and popular than the 'fr' layout. // // This layout is derived from an original version by Guylhem Aznar. // The original version is always available from: // http://en.tldp.org/HOWTO/Francophones-HOWTO.html // and is distributed under a GPL license. // // The author has given permission for this derived version to be distributed // under the standard XFree86 license. He would like all changes to this // version to be sent to him at , so he can sync // the identically named linux console map (kbd, linux-console) and his // out-of-tree GPL version. // // Now follows the keyboard design description in French. // (If you can't read it you probably have no business changing this file anyway:) // // Les accents circonflexes des principales voyelles sont obtenus avec // la touche Alt_Gr, les trémas sont obtenus par Alt_Gr + Shift. // // ____ // | S A| S = Shift, A = AltGr + Shift // | s a| s = normal, a = AltGr // ¯¯¯¯ // ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______ // | œ "| 1 ·| 2 É| 3 ,| 4 '| 5 "| 6 || 7 È| 8 ¯| 9 Ç| 0 À| ° ÿ| + °| <-- | // | Œ "| & '| é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }| | // ======================================================================== // | |<- | A ä| Z Å| E ¢| R Ç| T Þ| Y Ý| U ü| I ï| O ö| P '| " `| $ ë| , | // | ->| | a â| z å| e €| r ç| t þ| y ý| u û| i î| o ô| p ¶| ^ ~| £ ê| <-' | // ===================================================================¬ | // | | Q Ä| S Ø| D Ë| F ª| G Æ| H Ð| J Ü| K Ï| L Ö| M º| % Ù| µ ¥| | // | MAJ | q Â| s ø| d Ê| f ±| g æ| h ð| j Û| k Î| l Ô| m ¹| ù ²| * ³| | // ======================================================================== // | ^ | > | W | X | C | V | B | N | ? | . | / | § | ^ | // | | | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡| | | // ======================================================================== // | | | | | | | | | // | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl | // ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯ // // Si les touches mortes fonctionnent, utiliser les accents dits // « morts », i.e. fonctionnant comme l'accent circonflexe & le // tréma des machines à écrire ; sont disponibles : // // (^) : accent circonflexe, // Shift+(^) : tréma, // AltGr+(^) : tilde, // AltGr+(1) : accent aigu, // AltGr+(7) : accent grave // // Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma // sur les vielles machines à écrire : // // AltGr+(1) puis e : é // AltGr+(1) puis E : É // partial alphanumeric_keys xkb_symbols "latin9" { include "latin" include "nbsp(level3)" name[Group1]="French (legacy, alt.)"; key { [ oe, OE, leftdoublequotemark, rightdoublequotemark ] }; key { [ ampersand, 1, dead_acute, periodcentered ] }; key { [ eacute, 2, asciitilde, Eacute ] }; key { [ quotedbl, 3, numbersign, cedilla ] }; key { [ apostrophe, 4, braceleft, acute ] }; key { [ parenleft, 5, bracketleft, diaeresis ] }; key { [ minus, 6, bar, brokenbar ] }; key { [ egrave, 7, dead_grave, Egrave ] }; key { [ underscore, 8, backslash, macron ] }; key { [ ccedilla, 9, asciicircum, Ccedilla ] }; key { [ agrave, 0, at, Agrave ] }; key { [ parenright, degree, bracketright, ydiaeresis ] }; key { [ equal, plus, braceright, dead_abovering ] }; key { [ a, A, acircumflex, adiaeresis ] }; key { [ z, Z, aring, Aring ] }; key { [ e, E, EuroSign, cent ] }; key { [ r, R, ccedilla, Ccedilla ] }; key { [ t, T, thorn, THORN ] }; key { [ y, Y, yacute, Yacute ] }; key { [ u, U, ucircumflex, udiaeresis ] }; key { [ i, I, icircumflex, idiaeresis ] }; key { [ o, O, ocircumflex, odiaeresis ] }; key { [ p, P, paragraph, grave ] }; key { [ dead_circumflex, dead_diaeresis, dead_tilde, apostrophe ] }; key { [ dollar, sterling, ecircumflex, ediaeresis ] }; key { [ q, Q, Acircumflex, Adiaeresis ] }; key { [ s, S, oslash, Oslash ] }; key { [ d, D, Ecircumflex, Ediaeresis ] }; key { [ f, F, plusminus, ordfeminine ] }; key { [ g, G, ae, AE ] }; key { [ h, H, eth, ETH ] }; key { [ j, J, Ucircumflex, Udiaeresis ] }; key { [ k, K, Icircumflex, Idiaeresis ] }; key { [ l, L, Ocircumflex, Odiaeresis ] }; key { [ m, M, onesuperior, masculine ] }; key { [ ugrave, percent, twosuperior, Ugrave ] }; key { [ asterisk, mu, threesuperior, yen ] }; key { [ less, greater, bar ] }; key { [ w, W, guillemotleft ] }; key { [ x, X, guillemotright ] }; key { [ c, C, copyright ] }; key { [ v, V, registered ] }; key { [ b, B, ssharp, U1E9E ] }; key { [ n, N, notsign ] }; key { [ comma, question, questiondown ] }; key { [ semicolon, period, multiply ] }; key { [ colon, slash, division ] }; key { [ exclam, section, exclamdown ] }; // French uses a comma as decimal separator, but keyboards are labeled with a period // Will take effect when KP_Decimal is mapped to the locale decimal separator key { [ KP_Delete, KP_Decimal, KP_Delete, KP_Decimal ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "latin9_nodeadkeys" { // Modifies the basic fr-latin9 layout to eliminate all dead keys include "fr(latin9)" name[Group1]="French (legacy, alt., no dead keys)"; key { [ ampersand, 1, apostrophe, periodcentered ] }; key { [ egrave, 7, grave, Egrave ] }; key { [ equal, plus, braceright ] }; key { [ asciicircum, diaeresis, asciitilde, apostrophe ] }; }; // Bépo : Improved ergonomic french keymap using Dvorak method. // Built by community on 'Dvorak Fr / Bépo' : // see http://www.clavier-dvorak.org/wiki/ to join and help. // XOrg integration (1.0rc2 version) in 2008 // by Frédéric Boiteux // // Bépo layout (1.0rc2 version) for a pc105 keyboard (french) : // ┌─────┐ // │ S A │ S = Shift, A = AltGr + Shift // │ s a │ s = normal, a = AltGr // └─────┘ // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6 │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃ // │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ ! │ V │ D Ð │ L │ J IJ │ Z Ə │ W ┃Entrée ┃ // ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ // ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃ // ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃ // ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ Espace inséc. Espace inséc. fin ┃ ┃ ┃ ┃ // ┃Ctrl ┃Meta ┃Alt ┃ ␣ (Espace) _ ␣ ┃AltGr ⇮┃Menu ┃Ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "bepo" { include "level3(ralt_switch)" include "keypad(oss)" name[Group1]= "French (BEPO)"; // First row key { [ dollar, numbersign, endash, paragraph ] }; // $ # – ¶ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ” key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, lessthanequal ] }; // ( 4 [ ≤ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, greaterthanequal ] }; // ) 5 ] ≥ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum ] }; // @ 6 ^ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 − ¼ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾ key { [ equal, degree, notequal, minutes ] }; // = ° ≠ ′ key { [ percent, grave, permille, seconds ] }; // % ` ‰ ″ // Second row key { [ b, B, bar, brokenbar ] }; // b B | ¦ key { [ eacute, Eacute, dead_acute, dead_doubleacute]}; // é É ˊ ˝ key { [ p, P, ampersand, section ] }; // p P & § key { [ o, O, oe, OE ] }; // o O œ Œ key { [ egrave, Egrave, dead_grave, grave ] }; // è È ` ` key { [ dead_circumflex, exclam, exclamdown ] }; // ^ ! ¡ key { [ v, V, dead_caron ] }; // v V ˇ key { [ d, D, eth, ETH ] }; // d D ð Ð key { [ l, L, dead_stroke ] }; // l L / key { [ j, J, U0133, U0132 ] }; // j J ij IJ key { [ z, Z, schwa, SCHWA ] }; // z Z ə Ə key { [ w, W, dead_breve ] }; // w W ˘ // Third row key { [ a, A, ae, AE ] }; // a A æ Æ key { [ u, U, ugrave, Ugrave ] }; // u U ù Ù key { [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙ key { [ e, E, EuroSign, dead_currency ] }; // e E € ¤ key { [ comma, semicolon, rightsinglequotemark, dead_horn] }; // , ; ’ ̛ key { [ c, C, copyright, U017F ] }; // c C © ſ key { [ t, T, thorn, THORN ] }; // t T þ Þ key { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ key { [ r, R, registered, trademark ] }; // r R ® ™ key { [ n, N, dead_tilde ] }; // n N ˜ key { [ m, M, dead_macron, masculine ] }; // m M ¯ º key { [ ccedilla, Ccedilla, dead_cedilla, dead_belowcomma ]}; // ç Ç ¸ , // Fourth row key { [ ecircumflex, Ecircumflex, slash ] }; // ê Ê / key { [ agrave, Agrave, backslash ] }; // à À \ key { [ y, Y, braceleft, leftsinglequotemark ] }; // y Y { ‘ key { [ x, X, braceright, rightsinglequotemark ] }; // x X } ’ key { [ period, colon, ellipsis, periodcentered ] }; // . : … · key { [ k, K, asciitilde ] }; // k K ~ key { [ apostrophe, question, questiondown, dead_hook ] }; // ' ? ¿ ̉ key { [ q, Q, dead_abovering, dead_belowdot ] }; // q Q ˚ ̣ key { [ g, G, dead_greek ] }; // g G µ key { [ h, H, dagger, doubledagger ] }; // h H † ‡ key { [ f, F, dead_ogonek, ordfeminine ] }; // f F ˛ ª key { [ space, nobreakspace, underscore, U202F ] }; // ␣ (espace insécable) _ (espace insécable fin) }; partial alphanumeric_keys xkb_symbols "bepo_latin9" { // Restricts the Bépo layout to latin9 symbols. include "fr(bepo)" include "keypad(oss_latin9)" name[Group1]="French (BEPO, Latin-9 only)"; key { [ dollar, numbersign, dollar, paragraph ] }; // $ # $ ¶ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1 ] }; // " 1 key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less ] }; // « 2 < key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater ] }; // » 3 > key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft ] }; // ( 4 [ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright ] }; // ) 5 ] key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, minus, onequarter ] }; // - 8 - ¼ key { [ equal, degree ] }; // = ° key { [ percent, grave ] }; // % ` key { [ b, B, bar ] }; // b B | key { [ eacute, Eacute, dead_acute ] }; // é É ˊ key { [ j, J ] }; // j J key { [ z, Z ] }; // z Z key { [ w, W ] }; // w W key { [ i, I, dead_diaeresis ] }; // i I ¨ key { [ comma, semicolon, comma, dead_horn ] }; // , ; , ̛ key { [ c, C, copyright ] }; // c C © key { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ key { [ r, R, registered ] }; // r R ® key { [ m, M, macron, masculine ] }; // m M ¯ º key { [ y, Y, braceleft ] }; // y Y { key { [ x, X, braceright ] }; // x X } key { [ period, colon ] }; // . : key { [ h, H ] }; // h H key { [ f, F, f, ordfeminine ] }; // f F ª key { [ space, nobreakspace, underscore, nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable) }; // Version 1.1rc2 of the Bépo keyboard layout, // normalized by the AFNOR NF Z71‐300 norm. // // Layout: https://bepo.fr/wiki/Version_1.1rc2 // Normalization: https://normalisation.afnor.org/actualites/faq-clavier-francais/ // // ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗ // │ # ¶│ 1 „│ 2 “│ 3 ”│ 4 ⩽│ 5 ⩾║ 6 │ 7 ¬│ 8 ¼│ 9 ½│ 0 ¾│ ° ′│ ` ″║ ║ // │ $ –│ " —│ « <│ » >│ ( [│ ) ]║ @ ^│ + ±│ - −│ / ÷│ * ×│ = ≠│ % ‰║ <-- ║ // ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣ // ║ |<- ║ B _│ É │ P §│ O Œ│ È `║ ! │ V │ D │ L £│ J │ Z │ W ║ | ║ // ║ ->| ║ b |│ é ´│ p &│ o œ│ è `║ ˆ ¡│ v ˇ│ d ∞│ l /│ j │ z ―│ w ║ <-' ║ // ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║ // ║ ║ A Æ│ U Ù│ I ˙│ E ¤│ ; ,║ C ©│ T ™│ S ſ│ R ®│ N │ M │ Ç ©║ ║ // ║ CAPS ║ a æ│ u ù│ i ¨│ e €│ , '║ c ¸│ t ᵉ│ s ß│ r ˘│ n ~│ m ¯│ ç ║ ║ // ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣ // ║ ^ ║ Ê ^│ À ‚│ Y ‘│ X ’│ : ·│ K ‑║ ? ̉│ Q ̛│ G †│ H ‡│ F ║ ^ ║ // ║ | ║ ê /│ à \│ y {│ x }│ . …│ k ~║ ’ ¿│ q °│ g µ│ h ̣ │ f ˛║ | ║ // ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣ // ║ ║ ║ ║ Fine insécable Insécable ║ ║ ║ ║ ║ // ║ Ctrl ║ WinG ║ Alt ║ Espace _ ║AltGr║ WinD ║WinM ║ Ctrl ║ // ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝ partial alphanumeric_keys xkb_symbols "bepo_afnor" { name[Group1]= "French (BEPO, AFNOR)"; key { type[group1] = "FOUR_LEVEL", [ dollar, numbersign, endash, paragraph ] }; // $ # – ¶ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ” key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, U2A7D ] }; // ( 4 [ ⩽ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, U2A7E ] }; // ) 5 ] ⩾ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum, U262D ] }; // @ 6 ^ ☭ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 − ¼ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾ key { type[group1] = "FOUR_LEVEL", [ equal, degree, notequal, minutes ] }; // = ° ≠ ′ key { type[group1] = "FOUR_LEVEL", [ percent, grave, permille, seconds ] }; // % ` ‰ ″ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, underscore ] }; // b B | _ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, heart ] }; // é É ´ ♥ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, ampersand, section ] }; // p P & § key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, grave ] }; // è È ` ` key { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, exclamdown, U2620 ] }; // ^ ! ¡ ☠ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, U2622 ] }; // v V ˇ ☢ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, UFDD7, U2623 ] }; // d D ∞ ☣ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, dead_stroke, sterling ] }; // l L / £ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, U262E, U262F ] }; // j J ☮ ☯ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, UFDD8, U2619 ] }; // z Z ― ☙ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U269C, U267F ] }; // w W ⚜ ♿ key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, EuroSign, dead_currency ] }; // e E € ¤ key { type[group1] = "FOUR_LEVEL", [ comma, semicolon, apostrophe, dead_belowcomma ] }; // , ; ' , key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, copyright ] }; // c C ¸ © key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, UFDD5, trademark ] }; // t T ᵉ ™ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, UFDD4, U017F ] }; // s S ß ſ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, dead_breve, registered ] }; // r R ˘ ® key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U2693 ] }; // n N ~ ⚓ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, U26FD ] }; // m M ¯ ⛽ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, U2708, U1F12F ] }; // ç Ç ✈ 🄯 key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex, Ecircumflex, slash, asciicircum ] }; // ê Ê / ^ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, backslash, singlelowquotemark ] }; // à À \ ‚ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, braceleft, leftsinglequotemark ] }; // y Y { ‘ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, braceright, rightsinglequotemark ] }; // x X } ’ key { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … · key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, asciitilde, U2011 ] }; // k K ~ ‑ key { type[group1] = "FOUR_LEVEL", [ rightsinglequotemark, question, questiondown, dead_hook ] }; // ’ ? ¿ ̉ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, dead_horn ] }; // q Q ˚ ̛ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, dead_greek, dagger ] }; // g G µ † key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_belowdot, doubledagger ] }; // h H ̣ ‡ key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, dead_ogonek, U26C4 ] }; // f F ˛ ⛄ key { type[group1] = "FOUR_LEVEL", [ space, U202F, underscore, nobreakspace ] }; //   _   include "level3(ralt_switch)" }; // Ergo‑L // // Project page: https://ergol.org // Author: NuclearSquid (huge thanks to Fabien Cazenave and the “Ergonauts”) // Version: 1.0.0 // // In the following figures, a `*` preceding another character denotes a dead key. // // Base layer + Typography (dead key ★, implemented via ISO_Level5_Latch) // ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ // ┆ ~ ┃ € ‚ │ « ‘ │ » ’ │ $ │ % ┃ ^ │ & │ * │ # │ @ ┃ _ – ┆ + ± ┆ // ┆ ` ┃ 1 „ │ 2 “ │ 3 ” │ 4 ¢ │ 5 ‰ ┃ 6 │ 7 │ 8 § │ 9 ¶ │ 0 ° ┃ / ÷ ┆ = ≠ ┆ // ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ // ┃ Q │ C │ O │ P │ W ┃ J │ M │ D _ │ ! ¡ │ Y ┃ { ┆ } ┆ // ┃ â │ ç │ œ │ ô │ ┃ │ µ │ _ │*★*¨ │ û ┃ [ ┆ ] ┆ // ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ // ┃ A │ S │ E │ N │ F ┃ L │ R │ T │ I │ U ┃ " ┆ | ┆ // ┃ à │ é │ è │ ê │ ñ ┃ ( │ ) │ î │ ï │ ù ┃ ' ┆ \ ┆ // ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ // ┆ > ┃ Z │ X │ ? ¿ │ V │ B ┃ : │ H │ G │ ; • │ K ┃ // ┆ < ┃ æ │ ß │ - ‑ │ – │ — ┃ . … │ │ *µ │ , · │ ┃ // ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ // // Symbols layer (AltGr) // ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ // ┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ // ┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ // ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ // ┃ *^ │ │ │ *¤ │ ‰ ┃ *˚ │ │ × │ *´ │ *` ┃ ┆ ┆ // ┃ ^ │ < │ > │ $ │ % ┃ @ │ & │ * │ ' │ ` ┃ ┆ ┆ // ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ // ┃ *ˇ │ │ │ *˙ │ ≠ ┃ */ │ ± │ *¯ │ ÷ │ *” ┃ ┆ ┆ // ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ // ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ // ┆ ┃ *~ │ *, │ *˛ │ – │ ┃ │ ¬ │ *¸ │ : │ *˘ ┃ // ┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ // ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ partial alphanumeric_keys modifier_keys xkb_symbols "ergol" { name[group1]= "French (Ergo‑L)"; key.type[group1] = "EIGHT_LEVEL"; // Digits key {[ 1 , EuroSign , U2081 , onesuperior , U201E , U201A ]}; // 1 € ₁ ¹ „ ‚ key {[ 2 , guillemotleft , U2082 , twosuperior , U201C , U2018 ]}; // 2 « ₂ ² “ ‘ key {[ 3 , guillemotright , U2083 , threesuperior , U201D , U2019 ]}; // 3 » ₃ ³ ” ’ key {[ 4 , dollar , U2084 , U2074 , cent , VoidSymbol ]}; // 4 $ ₄ ⁴ ¢ key {[ 5 , percent , U2085 , U2075 , U2030 , VoidSymbol ]}; // 5 % ₅ ⁵ ‰ key {[ 6 , asciicircum , U2086 , U2076 , VoidSymbol , VoidSymbol ]}; // 6 ^ ₆ ⁶ key {[ 7 , ampersand , U2087 , U2077 , VoidSymbol , VoidSymbol ]}; // 7 & ₇ ⁷ key {[ 8 , asterisk , U2088 , U2078 , section , VoidSymbol ]}; // 8 * ₈ ⁸ § key {[ 9 , numbersign , U2089 , U2079 , paragraph , VoidSymbol ]}; // 9 # ₉ ⁹ ¶ key {[ 0 , at , U2080 , U2070 , degree , VoidSymbol ]}; // 0 @ ₀ ⁰ ° // Letters, first row key {[ q , Q , asciicircum , dead_circumflex , acircumflex , Acircumflex ]}; // q Q ^ ^ â  key {[ c , C , less , lessthanequal , ccedilla , Ccedilla ]}; // c C < ≤ ç Ç key {[ o , O , greater , greaterthanequal, oe , OE ]}; // o O > ≥ œ Œ key {[ p , P , dollar , dead_currency , ocircumflex , Ocircumflex ]}; // p P $ ¤ ô Ô key {[ w , W , percent , U2030 , VoidSymbol , VoidSymbol ]}; // w W % ‰ key {[ j , J , at , dead_abovering , VoidSymbol , VoidSymbol ]}; // j J @ ˚ key {[ m , M , ampersand , VoidSymbol , mu , VoidSymbol ]}; // m M & µ key {[ d , D , asterisk , multiply , underscore , underscore ]}; // d D * × _ _ key {[ ISO_Level5_Latch, exclam , apostrophe , dead_acute , dead_diaeresis , exclamdown ]}; // *¨ ! ' ´ ¨ ¡ key {[ y , Y , grave , dead_grave , ucircumflex , Ucircumflex ]}; // y Y ` ` û Û // Letters, second row key {[ a , A , braceleft , dead_caron , agrave , Agrave ]}; // a A { ˇ à À key {[ s , S , parenleft , VoidSymbol , eacute , Eacute ]}; // s S ( é É key {[ e , E , parenright , VoidSymbol , egrave , Egrave ]}; // e E ) è È key {[ n , N , braceright , dead_abovedot , ecircumflex , Ecircumflex ]}; // n N } ˙ ê Ê key {[ f , F , equal , notequal , ntilde , Ntilde ]}; // f F = ≠ ñ Ñ key {[ l , L , backslash , dead_stroke , parenleft , VoidSymbol ]}; // l L \ / ( key {[ r , R , plus , plusminus , parenright , VoidSymbol ]}; // r R + ± ) key {[ t , T , minus , dead_macron , icircumflex , Icircumflex ]}; // t T - ˉ î Î key {[ i , I , slash , division , idiaeresis , Idiaeresis ]}; // i I / ÷ ï Ï key {[ u , U , quotedbl , dead_doubleacute, ugrave , Ugrave ]}; // u U " ˝ ù Ù // Letters, third row key {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ key {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ key {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ‑ ¿ key {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _ – – key {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # — key {[ period , colon , bar , brokenbar , ellipsis , VoidSymbol ]}; // . : | ¦ … key {[ h , H , exclam , notsign , VoidSymbol , VoidSymbol ]}; // h H ! ¬ key {[ g , G , semicolon , dead_cedilla , dead_greek , VoidSymbol ]}; // g G ; ¸ µ key {[ comma , semicolon , colon , colon , periodcentered , U2022 ]}; // , ; : : · • key {[ k , K , question , dead_breve , VoidSymbol , VoidSymbol ]}; // k K ? ˘ // Pinky keys key {[ slash , underscore , VoidSymbol , VoidSymbol , division , endash ]}; // / _ ÷ – key {[ equal , plus , VoidSymbol , VoidSymbol , notequal , plusminus ]}; // = + ≠ ± key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // key {[ bracketleft , braceleft , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // [ { key {[ bracketright , braceright , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ] } key {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ' " key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // key {[ grave , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ` ~ key {[ backslash , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // \ | key {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // < > // Space bar key {[ space , U202F , space , nobreakspace , U2019 , U2019 ]}; //     ’ ’ include "level3(ralt_switch)" }; // Ergo‑L (angle-mod / ISO variant) // Same as regular Ergo‑L, but with a permutation on the lower left keys. // before: LSGT | z | x | - | v // after: z | x | - | v | Backspace partial alphanumeric_keys modifier_keys xkb_symbols "ergol_iso" { include "fr(ergol)" name[group1]= "French (Ergo‑L, ISO variant)"; key {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ key {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ‑ ¿ key {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _ – – key {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # — key {[ BackSpace , BackSpace , Delete , Delete , VoidSymbol , VoidSymbol ]}; // bsp bsp del del key {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ }; // Author : Francis Leboutte, http://www.algo.be/ergo/dvorak-fr.html // thanks to Fabien Cazenave for his help // Licence : X11 // Version : 0.3 // Base layer + dead AltGr key (`): // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓ // │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ % ┃ ┃ // │ _ │ = │ / ± │ - ¼ │ è ½ │ \ ¾ │ ^ │ ( │ ` ` │ ) │ " │ [ │ ] ┃ ⌫ ┃ // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫ // ┃ ┃ ? Æ │ < │ > │ G │ ! │ H │ V │ C Ç │ M │ K │ Z │ & ┃ ┃ // ┃ ↹ ┃ : æ │ ' $ │ é É │ g € │ . ° │ h │ v │ c ç │ m µ │ k │ z │ ¨ ┃ ┃ // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃ // ┃ ┃ O Ò │ A À │ U Ù │ E È │ B │ F │ S │ T │ N │ D │ W │ # ┃ ┃ // ┃ ⇬ ┃ o ò │ a à │ u ù │ e è │ b │ f │ s « │ t │ n » │ d │ w │ ~ ┃ ┃ // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫ // ┃ ┃ ç Ç │ | Œ │ Q │ @ │ I Ì │ Y │ X │ R │ L │ P │ J ┃ ┃ // ┃ ⇧ ┃ à À │ ; œ │ q { │ , } │ i ì │ y £ │ x │ r º │ l │ p § │ j ┃ ⇧ ┃ // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫ // ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ ┃ // ┃ ctrl ┃ super ┃ alt ┃ ␣ Espace Espace insécable ⍽ ┃ alt ┃ super ┃ menu ┃ ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ // Notice the specific Caps_Lock layer: // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓ // │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ % ┃ ┃ // │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ ┃ // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫ // ┃ ┃ │ < │ > │ │ │ │ │ │ │ │ │ ┃ ┃ // ┃ ↹ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃ // ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ // ┃ ⇬ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫ // ┃ ┃ / │ - │ │ │ │ │ │ │ │ │ ┃ ┃ // ┃ ⇧ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ⇧ ┃ // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫ // ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ ┃ // ┃ ctrl ┃ super ┃ alt ┃ ␣ Espace Espace insécable ⍽ ┃ alt ┃ super ┃ menu ┃ ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys modifier_keys xkb_symbols "dvorak" { name[Group1]="French (Dvorak)"; // First row key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ underscore, asterisk ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 1 ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 2, plusminus ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 3, onequarter ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, 4, onehalf ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ backslash, 5, threequarters ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ dead_circumflex, 6 ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 7 ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch, 8, grave ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 9 ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 0 ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketleft, plus ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketright, percent ] }; // Second row key { [ colon, question, ae, AE ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ apostrophe, less, dollar ] }; key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, greater, Eacute ] }; key { [ g, G, EuroSign ] }; key { [ period, exclam, degree ] }; key { [ h, H ] }; key { [ v, V ] }; key { [ c, C, ccedilla, Ccedilla ] }; key { [ m, M, mu ] }; key { [ k, K ] }; key { [ z, Z ] }; key { [ dead_diaeresis, ampersand ] }; // Third row key { [ o, O, ograve, Ograve ] }; key { [ a, A, agrave, Agrave ] }; key { [ u, U, ugrave, Ugrave ] }; key { [ e, E, egrave, Egrave ] }; key { [ b, B ] }; key { [ f, F ] }; key { [ s, S, guillemotleft ] }; key { [ t, T ] }; key { [ n, N, guillemotright ] }; key { [ d, D ] }; key { [ w, W ] }; key { [ asciitilde, numbersign ] }; // Fourth row key { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ agrave, ccedilla, Agrave, Ccedilla, slash ] }; key { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ semicolon, bar, oe, OE, minus ] }; key { [ q, Q, braceleft ] }; key { [ comma, at, braceright ] }; key { [ i, I, igrave, Igrave ] }; key { [ y, Y, sterling ] }; key { [ x, X ] }; key { [ r, R, masculine ] }; key { [ l, L ] }; key { [ p, P, section ] }; key { [ j, J ] }; key { [ space, space, nobreakspace, nobreakspace ] }; }; // C'WHERTY: Breton keyboard. Ar c'hlavier brezhoneg. // Copyright © 2009 Dominique Pellé // Version: 0.1 // // ┌─────┐ // │ S A │ S = Reol = Shift, A = ArErl + Pennlizherenn = AltGr + Shift // │ s a │ s = normal, a = ArErl = AltGr // └─────┘ // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ $ Γ │ 1 Δ │ 2 Θ │ 3 Λ │ 4 Ξ │ 5 Π │ 6 Σ │ 7 Φ │ 8 Ψ │ 9 Ç │ 0 Ω │ ° ß │ + ¬ ┃ ⌫ Souzañ┃ // │ ² ˙ │ & ¯ │ é ´ │ " # │ ' { │ ( [ │ - | │ è ` │ - \ │ ç ± │ à @ │ ) ] │ = } ┃ ┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃Toalenn┃ C'h │ W ω │ E ε │ R ρ │ T τ │ Y ψ │ U υ │ I ι │ O OE│ P π │ ¨ ¥ │ * £ ┃Enankañ┃ // ┃ ↹ ┃ c'h │ w │ e € │ r │ t │ y │ u │ i ı │ o oe│ p │ ^ « │ / » ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ // ┃Prenn ┃ A Æ │ S σ │ D δ │ F φ │ G γ │ H η │ J ς │ K κ │ L λ │ M μ │ Ù ® │ ! ¡ ┃ ┃ // ┃Pennli ⇬┃ a æ │ s │ d $ │ f │ g │ h │ j │ k │ l │ m │ ù ŭ │ ? ¿ ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ Q θ │ Z ζ │ X ξ │ C χ │ V │ B β │ N ν │ CH │ Ñ │ : © │ ; ┃ ┃ // ┃Shift ⇧┃ q < │ z > │ x │ c ¢ │ v │ b │ n │ ch │ ñ │ . │ , ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ ⍽ Espace insécable ␣ ┃ ┃ ┃ ┃ // ┃Reol ┃Meta ┃Erl ┃ ␣ Espace ␣ ┃ArErl ⇮┃Menu ┃Reol ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "bre" { include "keypad(oss)" name[Group1]= "Breton (France)"; // First row key { [ twosuperior, dead_tilde, dead_abovedot, Greek_GAMMA ] }; key { [ ampersand, 1, dead_macron, Greek_DELTA ] }; key { [ eacute, 2, dead_acute, Greek_THETA ] }; key { [ quotedbl, 3, numbersign, Greek_LAMDA ] }; key { [ apostrophe, 4, braceleft, Greek_XI ] }; key { [ parenleft, 5, bracketleft, Greek_PI ] }; key { [ minus, 6, bar, Greek_SIGMA ] }; key { [ egrave, 7, dead_grave, Greek_PHI ] }; key { [ underscore, 8, backslash, Greek_PSI ] }; key { [ ccedilla, 9, plusminus, Ccedilla ] }; key { [ agrave, 0, at, Greek_OMEGA ] }; key { [ parenright, dead_abovering, bracketright, ssharp ] }; key { [ equal, plus, braceright, notsign ] }; // Second row // Handling the C'H key correctly requires the XIM input method. key { [ c_h, C_h, C_H, Greek_alpha ] }; key { [ w, W, Greek_omega, Greek_omega ] }; key { [ e, E, EuroSign, Greek_epsilon ] }; key { [ r, R, Greek_rho, Greek_rho ] }; key { [ t, T, Greek_tau, Greek_tau ] }; key { [ y, Y, Greek_psi, Greek_psi ] }; key { [ u, U, Greek_upsilon, Greek_upsilon ] }; key { [ i, I, idotless, Greek_iota ] }; key { [ o, O, oe, OE ] }; key { [ p, P, Greek_pi, Greek_pi ] }; key { [ dead_circumflex, dead_diaeresis, guillemotleft, yen ] }; key { [ slash, asterisk, guillemotright, sterling ] }; // Third row key { [ a, A, ae, AE ] }; key { [ s, S, Greek_sigma, Greek_sigma ] }; key { [ d, D, dollar, Greek_delta ] }; key { [ f, F, Greek_phi, Greek_phi ] }; key { [ g, G, Greek_gamma, Greek_gamma ] }; key { [ h, H, Greek_eta, Greek_eta ] }; key { [ j, J, Greek_finalsmallsigma, Greek_finalsmallsigma ] }; key { [ k, K, Greek_kappa, Greek_kappa ] }; key { [ l, L, Greek_lamda, Greek_lambda ] }; key { [ m, M, Greek_mu, Greek_mu ] }; key { [ ugrave, Ugrave, ubreve, registered ] }; key { [ question, exclam, questiondown, exclamdown ] }; // Fourth row key { [ q, Q, less, Greek_theta ] }; key { [ z, Z, greater, Greek_zeta ] }; key { [ x, X, Greek_xi, Greek_xi ] }; key { [ c, C, cent, Greek_chi ] }; key { [ v, V ] }; key { [ b, B, Greek_beta, Greek_beta ] }; key { [ n, N, Greek_nu, Greek_nu ] }; // Handling the CH key correctly requires the XIM input method. key { [ ch, Ch, CH, Greek_omicron ] }; key { [ ntilde, Ntilde ] }; key { [ period, colon, section, copyright ] }; key { [ comma, semicolon, percent ] }; key { [ space, nobreakspace, space, nobreakspace ] }; include "level3(ralt_switch)" }; // Occitan layout // Author : 2009 Thomas Metz // Derived from the layout defined at http://www.panoccitan.org // Version: 0.1 // Differences from OSS French keyboard : // - add á, í, ò, ó et ú, Á, Í, Ò, Ó, Ú, ñ, Ñ // - change position of æ, ü, î, û, œ, ô, ö, ï, â, ë // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ A Á │ Z Æ │ E ¢ │ R Ê │ T Ë │ Y Û │ U Ú │ I Í │ O Ó │ P Ò │ ¨ Œ │ £ Ø ┃Entrée ┃ // ┃Tab ↹ ┃ a á │ z æ │ e € │ r ê │ t ë │ y û │ u ú │ i í │ o ó │ p ò │ ^ œ │ $ ø ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ // ┃ ┃ Q Ä │ S „ │ D  │ F ‚ │ G ¥ │ H Ü │ J Î │ K Ï │ L Ô │ M Ö │ % Ù │ µ ̄ ┃ ┃ // ┃Maj ⇬ ┃ q ä │ s ß │ d â │ f ‘ │ g ’ │ h ü │ j î │ k ï │ l ô │ m ö │ ù ' │ * ` ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N Ñ │ ? … │ . . │ / ∕ │ § − ┃ ┃ // ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v → │ b ↓ │ n ñ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ // ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "oci" { include "fr(oss)" name[Group1]= "Occitan"; key {[ a, A, aacute, Aacute ]}; // a A á Á key {[ z, Z, ae, AE ]}; // z Z æ Æ key {[ t, T, ediaeresis, Ediaeresis ]}; // t T ë Ë key {[ y, Y, ucircumflex, Ucircumflex ]}; // y Y û Û key {[ u, U, uacute, Uacute ]}; // u U ú Ú key {[ i, I, iacute, Iacute ]}; // i I í Í key {[ o, O, oacute, Oacute ]}; // o O ó Ó key {[ p, P, ograve, Ograve ]}; // p P ò Ò key {[ dead_circumflex, dead_diaeresis, oe, OE ]}; // ^ ̈ œ Œ key {[ d, D, acircumflex, Acircumflex ]}; // d D â  key {[ h, H, udiaeresis, Udiaeresis ]}; // h H ü Ü key {[ j, J, icircumflex, Icircumflex ]}; // j J î Î key {[ k, K, idiaeresis, Idiaeresis ]}; // k K ï Ï key {[ l, L, ocircumflex, Ocircumflex ]}; // l L ô Ô key {[ v, V, rightarrow, leftarrow ]}; // v V → ← key {[ n, N, ntilde, Ntilde ]}; // n N ñ Ñ }; // Marc.Shapiro@inria.fr 19-sep-1998 // modifications : Etienne Herlent june 2000 // adapted to the new input layer : // Martin Costabel 3-jan-2001 // adapted for Latin9 alphabet (ISO-8859-15): // Etienne Herlent march 2005 // This map is an almost-complete mapping of the standard French // MacIntosh keyboard under Xwindows. I tried to remain as faithful // as possible to the Mac meaning of each key. I did this entirely by // hand and by intuition, relying on the Clavier (Keyboard?) Desktop // Accessory for the Mac meaning of keys, and on reading keysymdef.h // to intuit the corresponding X names. Lacking proper documentation, // I may have made some mistakes. // Entries marked CHECK are particularly uncertain // Entries marked MISSING mark Mac characters for which I was unable // to find a corresponding keysym. (Some for sure don't: e.g. the // Apple mark and the oe/OE character; others I may have simply not // found.) // Copied from macintosh_vndr/fr partial alphanumeric_keys xkb_symbols "mac" { name[Group1]= "French (Macintosh)"; key { [ at, numbersign, periodcentered, ydiaeresis ] }; key { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple key { [ eacute, 2, ediaeresis, Eacute ] }; key { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ]}; key { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ]}; key { [ parenleft, 5, braceleft, bracketleft ] }; key { [ section, 6, paragraph, aring ] }; key { [ egrave, 7, guillemotleft, guillemotright ] }; key { [ exclam, 8, exclamdown, Ucircumflex ] }; key { [ ccedilla, 9, Ccedilla, Aacute ] }; key { [ agrave, 0, oslash, Oslash ] }; key { [ parenright, degree, braceright, bracketright ] }; key { [ minus, underscore, emdash, endash ] }; key { [ a, A, ae, AE ] }; key { [ z, Z, Acircumflex, Aring ] }; key { [ e, E, ecircumflex, Ecircumflex ] }; key { [ r, R, registered, currency ] }; key { [ t, T, dagger, trademark ] }; key { [ y, Y, Uacute, Ydiaeresis ] }; key { [ u, U, masculine, ordfeminine ] }; key { [ i, I, icircumflex, idiaeresis ] }; key { [ o, O, oe, OE ] }; key { [ p, P, Greek_pi, Greek_PI ] }; key { [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex ] }; key { [ dollar, asterisk, EuroSign, yen ] }; key { [ q, Q, acircumflex, Agrave ] }; key { [ s, S, Ograve, VoidSymbol ] }; key { [ d, D, Greek_delta, Greek_DELTA ] }; key { [ f, F, U0192, periodcentered ] }; // ƒ · key { [ g, G, UFB01, UFB02 ] }; // fi fl key { [ h, H, Igrave, Icircumflex ] }; key { [ j, J, Idiaeresis, Iacute ] }; key { [ k, K, Egrave, Ediaeresis ] }; key { [ l, L, notsign, bar ] }; key { [ m, M, mu, Oacute ] }; key { [ ugrave,percent, Ugrave, ucircumflex ] }; // MISSING: per-mille key { [ dead_grave, sterling, at, numbersign ] }; key { [ less, greater, lessthanequal, greaterthanequal ] }; key { [ w, W, U2039, U203A ] }; // ‹ › key { [ x, X, similarequal, U2044 ] }; // ≃ ⁄ key { [ c, C, copyright, cent ] }; key { [ v, V, diamond, radical ] }; // CHECK diamond key { [ b, B, ssharp, integral ] }; key { [ n, N, dead_tilde, asciitilde ] }; key { [ comma, question, VoidSymbol, questiondown ] }; key { [ semicolon, period, ellipsis, periodcentered ] }; key { [ colon, slash, division, backslash ] }; key { [ equal, plus, notequal, plusminus ] }; key { [ space, space, nobreakspace, nobreakspace ] }; key { [ comma,KP_Decimal ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "geo" { include "ge(basic)" name[Group1]= "Georgian (France, AZERTY Tskapo)"; key {[ exclam, any ]}; key {[ U201E, 1 ]}; key {[ U2116, 2 ]}; key {[ percent, 3 ]}; key {[ parenleft, 4 ]}; key {[ colon, 5 ]}; key {[ semicolon, 6 ]}; key {[ question, 7 ]}; key {[ U2116, 8 ]}; key {[ degree, 9 ]}; key {[ parenright, 0 ]}; key {[ minus, underscore, emdash ]}; key {[ less, greater ]}; key {[ Georgian_an, U10FA ]}; key {[ Georgian_zen, Z ]}; key {[ Georgian_en, E, Georgian_he ]}; key {[ Georgian_rae, registered ]}; key {[ Georgian_tar, T ]}; key {[ Georgian_qar, U10F8 ]}; key {[ Georgian_un, U ]}; key {[ Georgian_in, Georgian_hie ]}; key {[ Georgian_on, O ]}; key {[ Georgian_par, P ]}; key {[ Georgian_tan, T ]}; key {[ Georgian_jil, Z ]}; key {[ Georgian_khar, Q ]}; key {[ Georgian_san, S ]}; key {[ Georgian_don, D ]}; key {[ Georgian_phar, Georgian_fi ]}; key {[ Georgian_gan, U10F9 ]}; key {[ Georgian_hae, Georgian_hoe ]}; key {[ Georgian_jhan, U10F7 ]}; key {[ Georgian_kan, K ]}; key {[ Georgian_las, L ]}; key {[ Georgian_man, M ]}; key {[ Georgian_zhar, J ]}; key {[ Georgian_chin, copyright ]}; key {[ guillemotleft, guillemotright ]}; key {[ Georgian_cil, W ]}; key {[ Georgian_xan, Georgian_har ]}; key {[ Georgian_can, copyright ]}; key {[ Georgian_vin, Georgian_we ]}; key {[ Georgian_ban, B ]}; key {[ Georgian_nar, U10FC ]}; key {[ comma, U2014 ]}; key {[ Georgian_shin, S ]}; key {[ Georgian_ghan, any ]}; key {[ Georgian_char, any ]}; }; // US keyboard made French // // Copyright (C) 2018, Florent Gallaire partial alphanumeric_keys xkb_symbols "us" { include "us(basic)" name[Group1]= "French (US)"; key { [ grave, asciitilde, dead_grave ] }; key { [ 4, dollar, EuroSign, currency ] }; // € ¤ key { [ 6,asciicircum,dead_circumflex ] }; key { [ e, E, eacute, Eacute ] }; // é É key { [ r, R, egrave, Egrave ] }; // è È key { [ y, Y, ydiaeresis, Ydiaeresis ] }; // ÿ Ÿ key { [ u, U, ugrave, Ugrave ] }; // ù Ù key { [ i, I, idiaeresis, Idiaeresis ] }; // ï Ï key { [ o, O, ocircumflex, Ocircumflex ] }; // ô Ô key { [ p, P, oe, OE ] }; // œ Œ key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “ key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ” key { [ a, A, agrave, Agrave ] }; // à À key { [ s, S, ae, AE ] }; // æ Æ key { [ d, D, ecircumflex, Ecircumflex ] }; // ê Ê key { [ f, F, ediaeresis, Ediaeresis ] }; // ë Ë key { [ h, H, udiaeresis, Udiaeresis ] }; // ü Ü key { [ j, J, ucircumflex, Ucircumflex ] }; // û Û key { [ k, K, icircumflex, Icircumflex ] }; // î Î key { [apostrophe, quotedbl,dead_diaeresis, degree ] }; key { [ z, Z, acircumflex, Acircumflex ] }; // â  key { [ c, C, ccedilla, Ccedilla ] }; // ç Ç include "eurosign(5)" include "level3(ralt_switch)" }; // EXTRAS: partial alphanumeric_keys xkb_symbols "sun_type6" { include "sun_vndr/fr(sun_type6)" }; // Plain French Azerty layout. // Original author: Mats Blakstad , 2015. // Based on https://en.wikipedia.org/wiki/File:KB_France.svg. // ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______ // | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ° | + | <-- | // | ² | & | é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }| | // ======================================================================== // | |<- | A | Z | E | R | T | Y | U | I | O | P | ¨ | $ | , | // | ->| | a | z | e €| r | t | y | u | i | o | p | ^ | £ ¤| <-' | // ===================================================================¬ | // | | Q | S | D | F | G | H | J | K | L | M | % | µ | | // | MAJ | q | s | d | f | g | h | j | k | l | m | ù | * | | // ======================================================================== // | ^ | > | W | X | C | V | B | N | ? | . | / | § | ^ | // | | | < | w | x | c | v | b | n | , | ; | : | ! | | | // ======================================================================== // | | | | | | | | | // | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl | // ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯ partial alphanumeric_keys xkb_symbols "azerty" { name[Group1]="French (AZERTY)"; key {[ twosuperior ]}; key {[ ampersand, 1 ]}; key {[ eacute, 2, asciitilde ]}; key {[ quotedbl, 3, numbersign ]}; key {[ apostrophe, 4, braceleft ]}; key {[ parenleft, 5, bracketleft ]}; key {[ minus, 6, bar ]}; key {[ egrave, 7, grave ]}; key {[ underscore, 8, backslash ]}; key {[ ccedilla, 9, asciicircum ]}; key {[ agrave, 0, at ]}; key {[ parenright, degree, bracketright ]}; key {[ equal, plus, braceright ]}; key {[ a, A ]}; key {[ z, Z ]}; key {[ e, E, EuroSign ]}; key {[ r, R ]}; key {[ t, T ]}; key {[ y, Y ]}; key {[ u, U ]}; key {[ i, I ]}; key {[ o, O ]}; key {[ p, P ]}; key {[ dead_circumflex,dead_diaeresis ]}; key {[ dollar, sterling, currency ]}; key {[ q, Q ]}; key {[ s, S ]}; key {[ d, D ]}; key {[ f, F ]}; key {[ g, G ]}; key {[ h, H ]}; key {[ j, J ]}; key {[ k, K ]}; key {[ l, L ]}; key {[ m, M ]}; key {[ ugrave, percent ]}; key {[ asterisk, mu ]}; key {[ less, greater ]}; key {[ w, W ]}; key {[ x, X ]}; key {[ c, C ]}; key {[ v, V ]}; key {[ b, B ]}; key {[ n, N ]}; key {[ comma, question ]}; key {[ semicolon, period ]}; key {[ colon, slash ]}; key {[ exclam, section ]}; include "level3(ralt_switch)" }; // US keyboard made French (with dead keys, alternative) // // Copyright (C) 2018, Florent Gallaire partial alphanumeric_keys xkb_symbols "us-alt" { include "us(basic)" name[Group1]= "French (US with dead keys, alt.)"; key { [dead_grave, asciitilde, grave ] }; key { [ 4, dollar, EuroSign, currency ] }; // € ¤ key { [dead_circumflex, asciicircum, 6 ] }; key { [ e, E, eacute, Eacute ] }; // é É key { [ o, O, oe, OE ] }; // œ Œ key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “ key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ” key { [ a, A, ae, AE ] }; // æ Æ key { [dead_diaeresis, quotedbl, apostrophe ] }; key { [ c, C, ccedilla, Ccedilla ] }; // ç Ç include "eurosign(5)" include "level3(ralt_switch)" }; // For physically modified US keyboard (Q <-> A, W <-> Z and ; <-> M) // // Copyright (C) 2018, Florent Gallaire partial alphanumeric_keys xkb_symbols "us-azerty" { include "us" name[Group1]= "French (US, AZERTY)"; key { [ grave, asciitilde, dead_grave ] }; key { [ 2, at, eacute, Eacute ] }; // é É key { [ 4, dollar, currency ] }; // ¤ key { [ 6,asciicircum,dead_circumflex ] }; key { [ 7, ampersand, egrave, Egrave ] }; // è È key { [ 9, parenleft, ccedilla, Ccedilla ] }; // ç Ç key { [ 0, parenright, agrave, Agrave ] }; // à À key { [ a, A, ae, AE ] }; // æ Æ key { [ z, Z ] }; key { [ o, O, oe, OE ] }; // œ Œ key { [bracketleft, braceleft,dead_circumflex, dead_diaeresis ] }; key { [ q, Q ] }; key { [ m, M ] }; key { [apostrophe, quotedbl, ugrave, Ugrave ] }; // ù Ù key { [ w, W, guillemotleft, leftdoublequotemark ] }; // « “ key { [ x, X,guillemotright,rightdoublequotemark ] }; // » ” key { [ semicolon, colon ] }; include "eurosign(e)" include "level3(ralt_switch)" }; // New Azerty layout, from the French Standardization Association (AFNOR), // defined in norm NF Z71-300. See https://norme-azerty.fr. // // Original author: Cimbali , © 2019. // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ # ̑ │ 1 À │ 2 É │ 3 È │ 4 Ê │ 5 ̋ │ 6 ̏ │ 7 │ 8 — │ 9 ‹ │ 0 › │ " ˚ │ ¨ ┃ ⌫ Retour┃ // │ @ ̆ │ à § │ é ́ │ è ̀ │ ê & │ ( [ │ ) ] │ ‘ ̄ │ ’ _ │ « “ │ » ” │ ' ° │ ̂ ̌ ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ A Æ │ Z │ E │ R │ T ™ │ Y │ U Ù │ I ̣ │ O Œ │ P ‰ │ – ‑ │ ± ‡ ┃Entrée ┃ // ┃Tab ↹ ┃ a æ │ z £ │ e € │ r ® │ t { │ y } │ u ù │ i ̇ │ o œ │ p % │ - − │ + † ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ // ┃ ┃ Q │ S ẞ │ D │ F │ G │ H ̱ │ J │ K │ L │ M │ \ √ │ ½ ¼ ┃ ┃ // ┃Maj ⇬ ┃ q θ │ s ß │ d $ │ f ¤ │ g µ │ h │ j │ k ̷ │ l | │ m ∞ │ / ÷ │ * × ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ > ≥ │ W Ʒ │ X │ C Ç │ V ˛ │ B │ N │ ? │ ! ̦ │ … │ = ≠ ┃ ┃ // ┃Shift ⇧┃ < ≤ │ w ʒ │ x © │ c ç │ v ¸ │ b ̵ │ n ~ │ . ¿ │ , ¡ │ : · │ ; ≃ ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ // ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ partial alphanumeric_keys xkb_symbols "afnor" { name[Group1]="French (AZERTY, AFNOR)"; key {[ at, numbersign, dead_breve, dead_invertedbreve ]}; // @ # ̑ ̆ key {[ agrave, 1, section, Agrave ]}; // à 1 § À key {[ eacute, 2, dead_acute, Eacute ]}; // é 2 ́ É key {[ egrave, 3, dead_grave, Egrave ]}; // è 3 ̀ È key {[ ecircumflex, 4, ampersand, Ecircumflex ]}; // ê 4 & Ê key {[ parenleft, 5, bracketleft, dead_doubleacute ]}; // ( 5 [ ̋ key {[ parenright, 6, bracketright, dead_doublegrave ]}; // ) 6 ] ̏ key {[ leftsinglequotemark, 7, dead_macron, none ]}; // ‘ 7 ̄ key {[ rightsinglequotemark, 8, underscore, emdash ]}; // ’ 8 _ — key {[ guillemotleft, 9, leftdoublequotemark, U2039 ]}; // « 9 “ ‹ key {[ guillemotright, 0, rightdoublequotemark, U203A ]}; // » 0 ” › key {[ apostrophe, quotedbl, degree, dead_abovering ]}; // ' " ° ̊ key {[ dead_circumflex, dead_diaeresis, dead_caron, none ]}; // ̂ ̈ ̌ key {[ a, A, ae, AE ]}; // a A æ Æ key {[ z, Z, sterling, none ]}; // z Z £ key {[ e, E, EuroSign, none ]}; // e E € key {[ r, R, registered, none ]}; // r R ® key {[ t, T, braceleft, trademark ]}; // t T { ™ key {[ y, Y, braceright, none ]}; // y Y } key {[ u, U, ugrave, Ugrave ]}; // u U ù Ù key {[ i, I, dead_abovedot, dead_belowdot ]}; // i I ̇ ̣ key {[ o, O, oe, OE ]}; // o O œ Œ key {[ p, P, percent, permille ]}; // p P % ‰ key {[ minus, endash, U2212, U2011 ]}; // - – − ‑ // signe moins (minus sign), trait d'union insécable (non-breaking hyphen) key {[ plus, plusminus, dagger, doubledagger ]}; // + ± † ‡ key {[ q, Q, Greek_theta, none ]}; // q Q θ key {[ s, S, ssharp, U1E9E ]}; // s S ß ẞ // lettre majuscule latine S dur (latin capital letter sharp s) key {[ d, D, dollar, none ]}; // d D $ key {[ f, F, dead_currency, none ]}; // f F ¤ key {[ g, G, dead_greek, none ]}; // g G µ key {[ h, H, none, dead_belowmacron ]}; // h H ̱ // Missing deadkey for other european characters (ªəƏþÞıݺſðÐƞȠijIJ) key {[ j, J, none, none ]}; // j J key {[ k, K, dead_stroke, none ]}; // k K ̷ key {[ l, L, bar, none ]}; // l L | key {[ m, M, infinity, none ]}; // m M ∞ key {[ slash, backslash, division, radical ]}; // / \ ÷ √ key {[ asterisk, onehalf, multiply, onequarter ]}; // * ½ × ¼ key {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ key {[ w, W, ezh, EZH ]}; // w W ʒ Ʒ key {[ x, X, copyright, none ]}; // x X © key {[ c, C, ccedilla, Ccedilla ]}; // c C ç Ç key {[ v, V, dead_cedilla, dead_ogonek ]}; // v V ̧ ̨ key {[ b, B, dead_stroke, none ]}; // b B ̵ key {[ n, N, dead_tilde, none ]}; // n N ̃ key {[ period, question, questiondown, none ]}; // . ? ¿ key {[ comma, exclam, exclamdown, dead_belowcomma ]}; // , ! ¡ ̦ key {[ colon, ellipsis, periodcentered, none ]}; // : … · key {[ semicolon, equal, similarequal, notequal ]}; // ; = ≃ ≠ include "nbsp(level3n)" include "keypad(oss)" include "level3(ralt_switch)" };