Files
cnix/nixos/hosts/toothpc/xkb/symbols/fr
2024-07-16 00:40:44 +02:00

1405 lines
105 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Keyboard layouts for France.
default partial alphanumeric_keys
xkb_symbols "basic" {
include "latin"
name[Group1]="French";
key <TLDE> { [twosuperior, asciitilde, notsign, notsign ] };
key <AE01> { [ ampersand, 1, onesuperior, exclamdown ] };
key <AE02> { [ eacute, 2, asciitilde, oneeighth ] };
key <AE03> { [ quotedbl, 3, numbersign, sterling ] };
key <AE04> { [apostrophe, 4, braceleft, dollar ] };
key <AE05> { [ parenleft, 5, bracketleft, threeeighths ] };
key <AE06> { [ minus, 6, bar, fiveeighths ] };
key <AE07> { [ egrave, 7, grave, seveneighths ] };
key <AE08> { [underscore, 8, backslash, trademark ] };
key <AE09> { [ ccedilla, 9, asciicircum, plusminus ] };
key <AE10> { [ agrave, 0, at, degree ] };
key <AE11> { [parenright, degree, bracketright, questiondown ] };
key <AE12> { [ equal, plus, braceright, dead_ogonek ] };
key <AD01> { [ a, A, ae, AE ] };
key <AD02> { [ z, Z, guillemotleft, less ] };
key <AD03> { [ e, E, EuroSign, cent ] };
key <AD11> { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };
key <AD12> { [ dollar, sterling, currency, dead_macron ] };
key <AC01> { [ q, Q, at, Greek_OMEGA ] };
key <AC10> { [ m, M, mu, masculine ] };
key <AC11> { [ ugrave, percent, dead_circumflex, dead_caron] };
key <BKSL> { [ asterisk, mu, dead_grave, dead_breve ] };
key <AB01> { [ w, W, lstroke, Lstroke ] };
key <AB07> { [ comma, question, dead_acute, dead_doubleacute ] };
key <AB08> { [ semicolon, period, U2022, multiply ] }; // bullet
key <AB09> { [ colon, slash, periodcentered, division ] };
key <AB10> { [ exclam, section, dead_belowdot, dead_abovedot ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "olpc" {
// #HW-SPECIFIC
// Contact: Sayamindu Dasgupta <sayamindu@laptop.org>
include "fr(basic)"
name[Group1]="French";
key <I219> { [ less, greater ] };
key <AD11> { [ dead_circumflex, dead_diaeresis, notsign, dead_abovering ] };
key <AB08> { [ semicolon, period, underscore, multiply ] };
key <TLDE> { [ 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 <AB02> { [ x, X, guillemotright, guillemotright ] };
key <AC02> { [ s, S, ssharp, U1E9E ] };
key <AD02> { [ 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 <AE12> { [ equal, plus, braceright, ogonek ] };
key <AD11> { [asciicircum, diaeresis, radical, dagger ] };
key <AD12> { [ dollar, sterling, currency, macron ] };
key <AC07> { [ j, J, ezh, EZH ] };
key <AC11> { [ ugrave, percent, asciicircum, caron ] };
key <BKSL> { [ asterisk, mu, grave, breve ] };
key <AB07> { [ comma, question, acute, doubleacute ] };
key <AB10> { [ exclam, section, ellipsis, abovedot ] };
};
// Unicode French derivative
// Loose refactoring of the historic Linux French keyboard layout
//
// Copyright © 2006-2008 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
//
// Credits (fr-latin1, fr-latin0, fr-latin9)
// © 199x-1996 René Cougnenc ✝
// © 1997-2002 Guylhem Aznar <clavier @ externe.net>
// © 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
//
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
// │ ³ ¸ │ 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 <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸
key <AE01> { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ ˛
key <AE02> { [ eacute, 2, asciitilde, Eacute ] }; // é 2 ~ É
key <AE03> { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 # ˘
key <AE04> { [ apostrophe, 4, braceleft, 0x1002014 ] }; // ' 4 { — (tiret cadratin)
key <AE05> { [ parenleft, 5, bracketleft, 0x1002013 ] }; // ( 5 [ (tiret demi-cadratin)
key <AE06> { [ minus, 6, bar, 0x1002011 ] }; // - 6 | (tiret insécable)
key <AE07> { [ egrave, 7, grave, Egrave ] }; // è 7 ` È
key <AE08> { [ underscore, 8, backslash, trademark ] }; // _ 8 \ ™
key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] }; // ç 9 ^ Ç
key <AE10> { [ agrave, 0, at, Agrave ] }; // à 0 @ À
key <AE11> { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠
key <AE12> { [ equal, plus, braceright, plusminus ] }; // = + } ±
// Second row
key <AD01> { [ a, A, ae, AE ] }; // a A æ Æ
key <AD02> { [ z, Z, acircumflex, Acircumflex ] }; // z Z â Â
key <AD03> { [ e, E, EuroSign, cent ] }; // e E € ¢
key <AD04> { [ r, R, ecircumflex, Ecircumflex ] }; // r R ê Ê
key <AD05> { [ t, T, thorn, THORN ] }; // t T þ Þ
key <AD06> { [ y, Y, ydiaeresis, Ydiaeresis ] }; // y Y ÿ Ÿ
key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; // u U û Û
key <AD08> { [ i, I, icircumflex, Icircumflex ] }; // i I î Î
key <AD09> { [ o, O, oe, OE ] }; // o O œ Œ
key <AD10> { [ p, P, ocircumflex, Ocircumflex ] }; // p P ô Ô
key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^ ¨ ˜ ˚
key <AD12> { [ dollar, sterling, oslash, Oslash ] }; // $ £ ø Ø
// Third row
key <AC01> { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q ä Ä
key <AC02> { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „
key <AC03> { [ d, D, ediaeresis, Ediaeresis ] }; // d D ë Ë
key <AC04> { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F
key <AC05> { [ g, G, rightsinglequotemark, yen ] }; // g G ¥
key <AC06> { [ h, H, eth, ETH ] }; // h H ð Ð
key <AC07> { [ j, J, udiaeresis, Udiaeresis ] }; // j J ü Ü
key <AC08> { [ k, K, idiaeresis, Idiaeresis ] }; // k K ï Ï
key <AC09> { [ l, L, 0x1000140, 0x100013F ] }; // l L ŀ Ŀ
key <AC10> { [ m, M, odiaeresis, Odiaeresis ] }; // m M ö Ö
key <AC11> { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ´ Ù
key <BKSL> { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ¯
// Fourth row
key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; // < > ≤ ≥
key <AB01> { [ w, W, guillemotleft, leftdoublequotemark ] }; // w W « “
key <AB02> { [ x, X, guillemotright, rightdoublequotemark ] }; // x X » ”
key <AB03> { [ c, C, copyright, registered ] }; // c C © ®
key <AB04> { [ v, V, 0x100202F, leftarrow ] }; // v V ⍽ ← (espace fine insécable)
key <AB05> { [ b, B, downarrow, uparrow ] }; // b B ↓ ↑
key <AB06> { [ n, N, notsign, rightarrow ] }; // n N ¬ →
key <AB07> { [ comma, question, questiondown, 0x1002026 ] }; // , ? ¿ …
key <AB08> { [ semicolon, period, multiply, 0x10022C5 ] }; // ; . ×
key <AB09> { [ colon, slash, division, 0x1002215 ] }; // : / ÷
key <AB10> { [ 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 <AE01> { [ ampersand, 1, dead_caron, dead_cedilla ] }; // & 1 ˇ ¸
key <AE03> { [ quotedbl, 3, numbersign, dead_tilde ] }; // " 3 # ˜
key <AE04> { [ apostrophe, 4, braceleft, underscore ] }; // ' 4 { _
key <AE05> { [ parenleft, 5, bracketleft, minus ] }; // ( 5 [ -
key <AE06> { [ minus, 6, bar, minus ] }; // - 6 | -
key <AE08> { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \
key <AE11> { [ parenright, degree, bracketright, equal ] }; // ) ° ] =
// Third row
key <AC02> { [ s, S, ssharp, guillemotleft ] }; // s S ß «
key <AC04> { [ f, F, apostrophe, apostrophe ] }; // f F ' '
key <AC05> { [ g, G, apostrophe, yen ] }; // g G ' ¥
key <AC09> { [ l, L, periodcentered, periodcentered ] }; // l L · ·
key <BKSL> { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * µ ` ^
// Fourth row
key <LSGT> { [ less, greater, less, greater ] }; // < > < >
key <AB01> { [ w, W, guillemotleft, guillemotleft ] }; // w W « «
key <AB02> { [ x, X, guillemotright, guillemotright ] }; // x X » »
key <AB04> { [ v, V, nobreakspace, less ] }; // v V ⍽ < (espace insécable)
key <AB05> { [ b, B, minus, asciicircum ] }; // b B - ^
key <AB06> { [ n, N, notsign, greater ] }; // n N ¬ >
key <AB07> { [ comma, question, questiondown, period ] }; // , ? ¿ .
key <AB08> { [ semicolon, period, multiply, periodcentered ] }; // ; . × ·
key <AB09> { [ colon, slash, division, slash ] }; // : / ÷ /
key <AB10> { [ 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 <TLDE> { [ twosuperior, threesuperior, onesuperior, cedilla ] }; // ² ³ ¹ ¸
key <AE01> { [ ampersand, 1, caron, ogonek ] }; // & 1 ˇ ˛
key <AE03> { [ quotedbl, 3, numbersign, breve ] }; // " 3 # ˘
key <AD11> { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^ ¨ ~ Å
key <AC11> { [ ugrave, percent, acute, Ugrave ] }; // ù % ' Ù
key <BKSL> { [ asterisk, mu, grave, macron ] }; // * µ ` ¯
};
// Historic Linux French keyboard layout (fr-latin9)
// Copyright (c) 199x, 2002 Rene Cougnenc (original work)
// Guylhem Aznar <clavier @ externe.net> (maintainer)
// Nicolas Mailhot <Nicolas.Mailhot @ laposte.net>
// (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 <clavier @ externe.net>, 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 <TLDE> { [ oe, OE, leftdoublequotemark, rightdoublequotemark ] };
key <AE01> { [ ampersand, 1, dead_acute, periodcentered ] };
key <AE02> { [ eacute, 2, asciitilde, Eacute ] };
key <AE03> { [ quotedbl, 3, numbersign, cedilla ] };
key <AE04> { [ apostrophe, 4, braceleft, acute ] };
key <AE05> { [ parenleft, 5, bracketleft, diaeresis ] };
key <AE06> { [ minus, 6, bar, brokenbar ] };
key <AE07> { [ egrave, 7, dead_grave, Egrave ] };
key <AE08> { [ underscore, 8, backslash, macron ] };
key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] };
key <AE10> { [ agrave, 0, at, Agrave ] };
key <AE11> { [ parenright, degree, bracketright, ydiaeresis ] };
key <AE12> { [ equal, plus, braceright, dead_abovering ] };
key <AD01> { [ a, A, acircumflex, adiaeresis ] };
key <AD02> { [ z, Z, aring, Aring ] };
key <AD03> { [ e, E, EuroSign, cent ] };
key <AD04> { [ r, R, ccedilla, Ccedilla ] };
key <AD05> { [ t, T, thorn, THORN ] };
key <AD06> { [ y, Y, yacute, Yacute ] };
key <AD07> { [ u, U, ucircumflex, udiaeresis ] };
key <AD08> { [ i, I, icircumflex, idiaeresis ] };
key <AD09> { [ o, O, ocircumflex, odiaeresis ] };
key <AD10> { [ p, P, paragraph, grave ] };
key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, apostrophe ] };
key <AD12> { [ dollar, sterling, ecircumflex, ediaeresis ] };
key <AC01> { [ q, Q, Acircumflex, Adiaeresis ] };
key <AC02> { [ s, S, oslash, Oslash ] };
key <AC03> { [ d, D, Ecircumflex, Ediaeresis ] };
key <AC04> { [ f, F, plusminus, ordfeminine ] };
key <AC05> { [ g, G, ae, AE ] };
key <AC06> { [ h, H, eth, ETH ] };
key <AC07> { [ j, J, Ucircumflex, Udiaeresis ] };
key <AC08> { [ k, K, Icircumflex, Idiaeresis ] };
key <AC09> { [ l, L, Ocircumflex, Odiaeresis ] };
key <AC10> { [ m, M, onesuperior, masculine ] };
key <AC11> { [ ugrave, percent, twosuperior, Ugrave ] };
key <BKSL> { [ asterisk, mu, threesuperior, yen ] };
key <LSGT> { [ less, greater, bar ] };
key <AB01> { [ w, W, guillemotleft ] };
key <AB02> { [ x, X, guillemotright ] };
key <AB03> { [ c, C, copyright ] };
key <AB04> { [ v, V, registered ] };
key <AB05> { [ b, B, ssharp, U1E9E ] };
key <AB06> { [ n, N, notsign ] };
key <AB07> { [ comma, question, questiondown ] };
key <AB08> { [ semicolon, period, multiply ] };
key <AB09> { [ colon, slash, division ] };
key <AB10> { [ 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 <KPDL> { [ 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 <AE01> { [ ampersand, 1, apostrophe, periodcentered ] };
key <AE07> { [ egrave, 7, grave, Egrave ] };
key <AE12> { [ equal, plus, braceright ] };
key <AD11> { [ 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 <fboiteux at free dot fr>
//
// 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 <TLDE> { [ dollar, numbersign, endash, paragraph ] }; // $ #
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ”
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, lessthanequal ] }; // ( 4 [ ≤
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, greaterthanequal ] }; // ) 5 ] ≥
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum ] }; // @ 6 ^
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 ¼
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾
key <AE11> { [ equal, degree, notequal, minutes ] }; // = ° ≠
key <AE12> { [ percent, grave, permille, seconds ] }; // % ` ‰ ″
// Second row
key <AD01> { [ b, B, bar, brokenbar ] }; // b B | ¦
key <AD02> { [ eacute, Eacute, dead_acute, dead_doubleacute]}; // é É ˊ ˝
key <AD03> { [ p, P, ampersand, section ] }; // p P & §
key <AD04> { [ o, O, oe, OE ] }; // o O œ Œ
key <AD05> { [ egrave, Egrave, dead_grave, grave ] }; // è È ` `
key <AD06> { [ dead_circumflex, exclam, exclamdown ] }; // ^ ! ¡
key <AD07> { [ v, V, dead_caron ] }; // v V ˇ
key <AD08> { [ d, D, eth, ETH ] }; // d D ð Ð
key <AD09> { [ l, L, dead_stroke ] }; // l L /
key <AD10> { [ j, J, U0133, U0132 ] }; // j J ij IJ
key <AD11> { [ z, Z, schwa, SCHWA ] }; // z Z ə Ə
key <AD12> { [ w, W, dead_breve ] }; // w W ˘
// Third row
key <AC01> { [ a, A, ae, AE ] }; // a A æ Æ
key <AC02> { [ u, U, ugrave, Ugrave ] }; // u U ù Ù
key <AC03> { [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙
key <AC04> { [ e, E, EuroSign, dead_currency ] }; // e E € ¤
key <AC05> { [ comma, semicolon, rightsinglequotemark, dead_horn] }; // , ; ̛
key <AC06> { [ c, C, copyright, U017F ] }; // c C © ſ
key <AC07> { [ t, T, thorn, THORN ] }; // t T þ Þ
key <AC08> { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ
key <AC09> { [ r, R, registered, trademark ] }; // r R ® ™
key <AC10> { [ n, N, dead_tilde ] }; // n N ˜
key <AC11> { [ m, M, dead_macron, masculine ] }; // m M ¯ º
key <BKSL> { [ ccedilla, Ccedilla, dead_cedilla, dead_belowcomma ]}; // ç Ç ¸ ,
// Fourth row
key <LSGT> { [ ecircumflex, Ecircumflex, slash ] }; // ê Ê /
key <AB01> { [ agrave, Agrave, backslash ] }; // à À \
key <AB02> { [ y, Y, braceleft, leftsinglequotemark ] }; // y Y {
key <AB03> { [ x, X, braceright, rightsinglequotemark ] }; // x X }
key <AB04> { [ period, colon, ellipsis, periodcentered ] }; // . : … ·
key <AB05> { [ k, K, asciitilde ] }; // k K ~
key <AB06> { [ apostrophe, question, questiondown, dead_hook ] }; // ' ? ¿ ̉
key <AB07> { [ q, Q, dead_abovering, dead_belowdot ] }; // q Q ˚ ̣
key <AB08> { [ g, G, dead_greek ] }; // g G µ
key <AB09> { [ h, H, dagger, doubledagger ] }; // h H † ‡
key <AB10> { [ f, F, dead_ogonek, ordfeminine ] }; // f F ˛ ª
key <SPCE> { [ 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 <TLDE> { [ dollar, numbersign, dollar, paragraph ] }; // $ # $ ¶
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1 ] }; // " 1
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less ] }; // « 2 <
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater ] }; // » 3 >
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft ] }; // ( 4 [
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright ] }; // ) 5 ]
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, minus, onequarter ] }; // - 8 - ¼
key <AE11> { [ equal, degree ] }; // = °
key <AE12> { [ percent, grave ] }; // % `
key <AD01> { [ b, B, bar ] }; // b B |
key <AD02> { [ eacute, Eacute, dead_acute ] }; // é É ˊ
key <AD10> { [ j, J ] }; // j J
key <AD11> { [ z, Z ] }; // z Z
key <AD12> { [ w, W ] }; // w W
key <AC03> { [ i, I, dead_diaeresis ] }; // i I ¨
key <AC05> { [ comma, semicolon, comma, dead_horn ] }; // , ; , ̛
key <AC06> { [ c, C, copyright ] }; // c C ©
key <AC08> { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ
key <AC09> { [ r, R, registered ] }; // r R ®
key <AC11> { [ m, M, macron, masculine ] }; // m M ¯ º
key <AB02> { [ y, Y, braceleft ] }; // y Y {
key <AB03> { [ x, X, braceright ] }; // x X }
key <AB04> { [ period, colon ] }; // . :
key <AB09> { [ h, H ] }; // h H
key <AB10> { [ f, F, f, ordfeminine ] }; // f F ª
key <SPCE> { [ space, nobreakspace, underscore, nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable)
};
// Version 1.1rc2 of the Bépo keyboard layout,
// normalized by the AFNOR NF Z71300 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 <TLDE> { type[group1] = "FOUR_LEVEL", [ dollar, numbersign, endash, paragraph ] }; // $ #
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ”
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, U2A7D ] }; // ( 4 [ ⩽
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, U2A7E ] }; // ) 5 ] ⩾
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum, U262D ] }; // @ 6 ^ ☭
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 ¼
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾
key <AE11> { type[group1] = "FOUR_LEVEL", [ equal, degree, notequal, minutes ] }; // = ° ≠
key <AE12> { type[group1] = "FOUR_LEVEL", [ percent, grave, permille, seconds ] }; // % ` ‰ ″
key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, underscore ] }; // b B | _
key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, heart ] }; // é É ´
key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, ampersand, section ] }; // p P & §
key <AD04> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ
key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, grave ] }; // è È ` `
key <AD06> { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, exclamdown, U2620 ] }; // ^ ! ¡ ☠
key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, U2622 ] }; // v V ˇ ☢
key <AD08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, UFDD7, U2623 ] }; // d D ∞ ☣
key <AD09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, dead_stroke, sterling ] }; // l L / £
key <AD10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, U262E, U262F ] }; // j J ☮ ☯
key <AD11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, UFDD8, U2619 ] }; // z Z ― ☙
key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U269C, U267F ] }; // w W ⚜ ♿
key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ
key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù
key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙
key <AC04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, EuroSign, dead_currency ] }; // e E € ¤
key <AC05> { type[group1] = "FOUR_LEVEL", [ comma, semicolon, apostrophe, dead_belowcomma ] }; // , ; ' ,
key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, copyright ] }; // c C ¸ ©
key <AC07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, UFDD5, trademark ] }; // t T ᵉ ™
key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, UFDD4, U017F ] }; // s S ß ſ
key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, dead_breve, registered ] }; // r R ˘ ®
key <AC10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U2693 ] }; // n N ~ ⚓
key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, U26FD ] }; // m M ¯ ⛽
key <BKSL> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, U2708, U1F12F ] }; // ç Ç ✈ 🄯
key <LSGT> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex, Ecircumflex, slash, asciicircum ] }; // ê Ê / ^
key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, backslash, singlelowquotemark ] }; // à À \
key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, braceleft, leftsinglequotemark ] }; // y Y {
key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, braceright, rightsinglequotemark ] }; // x X }
key <AB04> { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … ·
key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, asciitilde, U2011 ] }; // k K ~
key <AB06> { type[group1] = "FOUR_LEVEL", [ rightsinglequotemark, question, questiondown, dead_hook ] }; // ? ¿ ̉
key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, dead_horn ] }; // q Q ˚ ̛
key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, dead_greek, dagger ] }; // g G µ †
key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_belowdot, doubledagger ] }; // h H ̣ ‡
key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, dead_ogonek, U26C4 ] }; // f F ˛
key <SPCE> { type[group1] = "FOUR_LEVEL", [ space, U202F, underscore, nobreakspace ] }; // _  
include "level3(ralt_switch)"
};
// ErgoL
//
// 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 (ErgoL)";
key.type[group1] = "EIGHT_LEVEL";
// Digits
key <AE01> {[ 1 , EuroSign , U2081 , onesuperior , U201E , U201A ]}; // 1 € ₁ ¹ „
key <AE02> {[ 2 , guillemotleft , U2082 , twosuperior , U201C , U2018 ]}; // 2 « ₂ ² “
key <AE03> {[ 3 , guillemotright , U2083 , threesuperior , U201D , U2019 ]}; // 3 » ₃ ³ ”
key <AE04> {[ 4 , dollar , U2084 , U2074 , cent , VoidSymbol ]}; // 4 $ ₄ ⁴ ¢
key <AE05> {[ 5 , percent , U2085 , U2075 , U2030 , VoidSymbol ]}; // 5 % ₅ ⁵ ‰
key <AE06> {[ 6 , asciicircum , U2086 , U2076 , VoidSymbol , VoidSymbol ]}; // 6 ^ ₆ ⁶
key <AE07> {[ 7 , ampersand , U2087 , U2077 , VoidSymbol , VoidSymbol ]}; // 7 & ₇ ⁷
key <AE08> {[ 8 , asterisk , U2088 , U2078 , section , VoidSymbol ]}; // 8 * ₈ ⁸ §
key <AE09> {[ 9 , numbersign , U2089 , U2079 , paragraph , VoidSymbol ]}; // 9 # ₉ ⁹ ¶
key <AE10> {[ 0 , at , U2080 , U2070 , degree , VoidSymbol ]}; // 0 @ ₀ ⁰ °
// Letters, first row
key <AD01> {[ q , Q , asciicircum , dead_circumflex , acircumflex , Acircumflex ]}; // q Q ^ ^ â Â
key <AD02> {[ c , C , less , lessthanequal , ccedilla , Ccedilla ]}; // c C < ≤ ç Ç
key <AD03> {[ o , O , greater , greaterthanequal, oe , OE ]}; // o O > ≥ œ Œ
key <AD04> {[ p , P , dollar , dead_currency , ocircumflex , Ocircumflex ]}; // p P $ ¤ ô Ô
key <AD05> {[ w , W , percent , U2030 , VoidSymbol , VoidSymbol ]}; // w W % ‰
key <AD06> {[ j , J , at , dead_abovering , VoidSymbol , VoidSymbol ]}; // j J @ ˚
key <AD07> {[ m , M , ampersand , VoidSymbol , mu , VoidSymbol ]}; // m M & µ
key <AD08> {[ d , D , asterisk , multiply , underscore , underscore ]}; // d D * × _ _
key <AD09> {[ ISO_Level5_Latch, exclam , apostrophe , dead_acute , dead_diaeresis , exclamdown ]}; // *¨ ! ' ´ ¨ ¡
key <AD10> {[ y , Y , grave , dead_grave , ucircumflex , Ucircumflex ]}; // y Y ` ` û Û
// Letters, second row
key <AC01> {[ a , A , braceleft , dead_caron , agrave , Agrave ]}; // a A { ˇ à À
key <AC02> {[ s , S , parenleft , VoidSymbol , eacute , Eacute ]}; // s S ( é É
key <AC03> {[ e , E , parenright , VoidSymbol , egrave , Egrave ]}; // e E ) è È
key <AC04> {[ n , N , braceright , dead_abovedot , ecircumflex , Ecircumflex ]}; // n N } ˙ ê Ê
key <AC05> {[ f , F , equal , notequal , ntilde , Ntilde ]}; // f F = ≠ ñ Ñ
key <AC06> {[ l , L , backslash , dead_stroke , parenleft , VoidSymbol ]}; // l L \ / (
key <AC07> {[ r , R , plus , plusminus , parenright , VoidSymbol ]}; // r R + ± )
key <AC08> {[ t , T , minus , dead_macron , icircumflex , Icircumflex ]}; // t T - ˉ î Î
key <AC09> {[ i , I , slash , division , idiaeresis , Idiaeresis ]}; // i I / ÷ ï Ï
key <AC10> {[ u , U , quotedbl , dead_doubleacute, ugrave , Ugrave ]}; // u U " ˝ ù Ù
// Letters, third row
key <AB01> {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ
key <AB02> {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ
key <AB03> {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ¿
key <AB04> {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _
key <AB05> {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # —
key <AB06> {[ period , colon , bar , brokenbar , ellipsis , VoidSymbol ]}; // . : | ¦ …
key <AB07> {[ h , H , exclam , notsign , VoidSymbol , VoidSymbol ]}; // h H ! ¬
key <AB08> {[ g , G , semicolon , dead_cedilla , dead_greek , VoidSymbol ]}; // g G ; ¸ µ
key <AB09> {[ comma , semicolon , colon , colon , periodcentered , U2022 ]}; // , ; : : · •
key <AB10> {[ k , K , question , dead_breve , VoidSymbol , VoidSymbol ]}; // k K ? ˘
// Pinky keys
key <AE11> {[ slash , underscore , VoidSymbol , VoidSymbol , division , endash ]}; // / _ ÷
key <AE12> {[ equal , plus , VoidSymbol , VoidSymbol , notequal , plusminus ]}; // = + ≠ ±
key <AE13> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; //
key <AD11> {[ bracketleft , braceleft , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // [ {
key <AD12> {[ bracketright , braceright , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ] }
key <AC11> {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ' "
key <AB11> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; //
key <TLDE> {[ grave , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ` ~
key <BKSL> {[ backslash , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // \ |
key <LSGT> {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // < >
// Space bar
key <SPCE> {[ space , U202F , space , nobreakspace , U2019 , U2019 ]}; //  
include "level3(ralt_switch)"
};
// ErgoL (angle-mod / ISO variant)
// Same as regular ErgoL, 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 (ErgoL, ISO variant)";
key <AB01> {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ
key <AB02> {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ¿
key <AB03> {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _
key <AB04> {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # —
key <AB05> {[ BackSpace , BackSpace , Delete , Delete , VoidSymbol , VoidSymbol ]}; // bsp bsp del del
key <LSGT> {[ 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 <TLDE> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ underscore, asterisk ] };
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 1 ] };
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 2, plusminus ] };
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 3, onequarter ] };
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, 4, onehalf ] };
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ backslash, 5, threequarters ] };
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ dead_circumflex, 6 ] };
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 7 ] };
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch, 8, grave ] };
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 9 ] };
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 0 ] };
key <AE11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketleft, plus ] };
key <AE12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketright, percent ] };
// Second row
key <AD01> { [ colon, question, ae, AE ] };
key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ apostrophe, less, dollar ] };
key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, greater, Eacute ] };
key <AD04> { [ g, G, EuroSign ] };
key <AD05> { [ period, exclam, degree ] };
key <AD06> { [ h, H ] };
key <AD07> { [ v, V ] };
key <AD08> { [ c, C, ccedilla, Ccedilla ] };
key <AD09> { [ m, M, mu ] };
key <AD10> { [ k, K ] };
key <AD11> { [ z, Z ] };
key <AD12> { [ dead_diaeresis, ampersand ] };
// Third row
key <AC01> { [ o, O, ograve, Ograve ] };
key <AC02> { [ a, A, agrave, Agrave ] };
key <AC03> { [ u, U, ugrave, Ugrave ] };
key <AC04> { [ e, E, egrave, Egrave ] };
key <AC05> { [ b, B ] };
key <AC06> { [ f, F ] };
key <AC07> { [ s, S, guillemotleft ] };
key <AC08> { [ t, T ] };
key <AC09> { [ n, N, guillemotright ] };
key <AC10> { [ d, D ] };
key <AC11> { [ w, W ] };
key <BKSL> { [ asciitilde, numbersign ] };
// Fourth row
key <LSGT> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ agrave, ccedilla, Agrave, Ccedilla, slash ] };
key <AB01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ semicolon, bar, oe, OE, minus ] };
key <AB02> { [ q, Q, braceleft ] };
key <AB03> { [ comma, at, braceright ] };
key <AB04> { [ i, I, igrave, Igrave ] };
key <AB05> { [ y, Y, sterling ] };
key <AB06> { [ x, X ] };
key <AB07> { [ r, R, masculine ] };
key <AB08> { [ l, L ] };
key <AB09> { [ p, P, section ] };
key <AB10> { [ j, J ] };
key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
};
// C'WHERTY: Breton keyboard. Ar c'hlavier brezhoneg.
// Copyright © 2009 Dominique Pellé <dominique.pelle@gmail.com>
// 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 <TLDE> { [ twosuperior, dead_tilde, dead_abovedot, Greek_GAMMA ] };
key <AE01> { [ ampersand, 1, dead_macron, Greek_DELTA ] };
key <AE02> { [ eacute, 2, dead_acute, Greek_THETA ] };
key <AE03> { [ quotedbl, 3, numbersign, Greek_LAMDA ] };
key <AE04> { [ apostrophe, 4, braceleft, Greek_XI ] };
key <AE05> { [ parenleft, 5, bracketleft, Greek_PI ] };
key <AE06> { [ minus, 6, bar, Greek_SIGMA ] };
key <AE07> { [ egrave, 7, dead_grave, Greek_PHI ] };
key <AE08> { [ underscore, 8, backslash, Greek_PSI ] };
key <AE09> { [ ccedilla, 9, plusminus, Ccedilla ] };
key <AE10> { [ agrave, 0, at, Greek_OMEGA ] };
key <AE11> { [ parenright, dead_abovering, bracketright, ssharp ] };
key <AE12> { [ equal, plus, braceright, notsign ] };
// Second row
// Handling the C'H key correctly requires the XIM input method.
key <AD01> { [ c_h, C_h, C_H, Greek_alpha ] };
key <AD02> { [ w, W, Greek_omega, Greek_omega ] };
key <AD03> { [ e, E, EuroSign, Greek_epsilon ] };
key <AD04> { [ r, R, Greek_rho, Greek_rho ] };
key <AD05> { [ t, T, Greek_tau, Greek_tau ] };
key <AD06> { [ y, Y, Greek_psi, Greek_psi ] };
key <AD07> { [ u, U, Greek_upsilon, Greek_upsilon ] };
key <AD08> { [ i, I, idotless, Greek_iota ] };
key <AD09> { [ o, O, oe, OE ] };
key <AD10> { [ p, P, Greek_pi, Greek_pi ] };
key <AD11> { [ dead_circumflex, dead_diaeresis, guillemotleft, yen ] };
key <AD12> { [ slash, asterisk, guillemotright, sterling ] };
// Third row
key <AC01> { [ a, A, ae, AE ] };
key <AC02> { [ s, S, Greek_sigma, Greek_sigma ] };
key <AC03> { [ d, D, dollar, Greek_delta ] };
key <AC04> { [ f, F, Greek_phi, Greek_phi ] };
key <AC05> { [ g, G, Greek_gamma, Greek_gamma ] };
key <AC06> { [ h, H, Greek_eta, Greek_eta ] };
key <AC07> { [ j, J, Greek_finalsmallsigma, Greek_finalsmallsigma ] };
key <AC08> { [ k, K, Greek_kappa, Greek_kappa ] };
key <AC09> { [ l, L, Greek_lamda, Greek_lambda ] };
key <AC10> { [ m, M, Greek_mu, Greek_mu ] };
key <AC11> { [ ugrave, Ugrave, ubreve, registered ] };
key <BKSL> { [ question, exclam, questiondown, exclamdown ] };
// Fourth row
key <LSGT> { [ q, Q, less, Greek_theta ] };
key <AB01> { [ z, Z, greater, Greek_zeta ] };
key <AB02> { [ x, X, Greek_xi, Greek_xi ] };
key <AB03> { [ c, C, cent, Greek_chi ] };
key <AB04> { [ v, V ] };
key <AB05> { [ b, B, Greek_beta, Greek_beta ] };
key <AB06> { [ n, N, Greek_nu, Greek_nu ] };
// Handling the CH key correctly requires the XIM input method.
key <AB07> { [ ch, Ch, CH, Greek_omicron ] };
key <AB08> { [ ntilde, Ntilde ] };
key <AB09> { [ period, colon, section, copyright ] };
key <AB10> { [ comma, semicolon, percent ] };
key <SPCE> { [ space, nobreakspace, space, nobreakspace ] };
include "level3(ralt_switch)"
};
// Occitan layout
// Author : 2009 Thomas Metz <tmetz @ free.fr>
// 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 <AD01> {[ a, A, aacute, Aacute ]}; // a A á Á
key <AD02> {[ z, Z, ae, AE ]}; // z Z æ Æ
key <AD05> {[ t, T, ediaeresis, Ediaeresis ]}; // t T ë Ë
key <AD06> {[ y, Y, ucircumflex, Ucircumflex ]}; // y Y û Û
key <AD07> {[ u, U, uacute, Uacute ]}; // u U ú Ú
key <AD08> {[ i, I, iacute, Iacute ]}; // i I í Í
key <AD09> {[ o, O, oacute, Oacute ]}; // o O ó Ó
key <AD10> {[ p, P, ograve, Ograve ]}; // p P ò Ò
key <AD11> {[ dead_circumflex, dead_diaeresis, oe, OE ]}; // ^ ̈ œ Œ
key <AC03> {[ d, D, acircumflex, Acircumflex ]}; // d D â Â
key <AC06> {[ h, H, udiaeresis, Udiaeresis ]}; // h H ü Ü
key <AC07> {[ j, J, icircumflex, Icircumflex ]}; // j J î Î
key <AC08> {[ k, K, idiaeresis, Idiaeresis ]}; // k K ï Ï
key <AC09> {[ l, L, ocircumflex, Ocircumflex ]}; // l L ô Ô
key <AB04> {[ v, V, rightarrow, leftarrow ]}; // v V → ←
key <AB06> {[ n, N, ntilde, Ntilde ]}; // n N ñ Ñ
};
// Marc.Shapiro@inria.fr 19-sep-1998
// modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
// adapted to the new input layer :
// Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
// adapted for Latin9 alphabet (ISO-8859-15):
// Etienne Herlent <eherlent@linux-france.org> 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 <TLDE> { [ at, numbersign, periodcentered, ydiaeresis ] };
key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
key <AE03> { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ]};
key <AE04> { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ]};
key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
key <AE06> { [ section, 6, paragraph, aring ] };
key <AE07> { [ egrave, 7, guillemotleft, guillemotright ] };
key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
key <AE10> { [ agrave, 0, oslash, Oslash ] };
key <AE11> { [ parenright, degree, braceright, bracketright ] };
key <AE12> { [ minus, underscore, emdash, endash ] };
key <AD01> { [ a, A, ae, AE ] };
key <AD02> { [ z, Z, Acircumflex, Aring ] };
key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
key <AD04> { [ r, R, registered, currency ] };
key <AD05> { [ t, T, dagger, trademark ] };
key <AD06> { [ y, Y, Uacute, Ydiaeresis ] };
key <AD07> { [ u, U, masculine, ordfeminine ] };
key <AD08> { [ i, I, icircumflex, idiaeresis ] };
key <AD09> { [ o, O, oe, OE ] };
key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
key <AD11> { [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex ] };
key <AD12> { [ dollar, asterisk, EuroSign, yen ] };
key <AC01> { [ q, Q, acircumflex, Agrave ] };
key <AC02> { [ s, S, Ograve, VoidSymbol ] };
key <AC03> { [ d, D, Greek_delta, Greek_DELTA ] };
key <AC04> { [ f, F, U0192, periodcentered ] }; // ƒ ·
key <AC05> { [ g, G, UFB01, UFB02 ] }; // fi fl
key <AC06> { [ h, H, Igrave, Icircumflex ] };
key <AC07> { [ j, J, Idiaeresis, Iacute ] };
key <AC08> { [ k, K, Egrave, Ediaeresis ] };
key <AC09> { [ l, L, notsign, bar ] };
key <AC10> { [ m, M, mu, Oacute ] };
key <AC11> { [ ugrave,percent, Ugrave, ucircumflex ] }; // MISSING: per-mille
key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
key <AB01> { [ w, W, U2039, U203A ] }; //
key <AB02> { [ x, X, similarequal, U2044 ] }; // ≃
key <AB03> { [ c, C, copyright, cent ] };
key <AB04> { [ v, V, diamond, radical ] }; // CHECK diamond
key <AB05> { [ b, B, ssharp, integral ] };
key <AB06> { [ n, N, dead_tilde, asciitilde ] };
key <AB07> { [ comma, question, VoidSymbol, questiondown ] };
key <AB08> { [ semicolon, period, ellipsis, periodcentered ] };
key <AB09> { [ colon, slash, division, backslash ] };
key <AB10> { [ equal, plus, notequal, plusminus ] };
key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
key <KPDL> { [ comma,KP_Decimal ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "geo" {
include "ge(basic)"
name[Group1]= "Georgian (France, AZERTY Tskapo)";
key <TLDE> {[ exclam, any ]};
key <AE01> {[ U201E, 1 ]};
key <AE02> {[ U2116, 2 ]};
key <AE03> {[ percent, 3 ]};
key <AE04> {[ parenleft, 4 ]};
key <AE05> {[ colon, 5 ]};
key <AE06> {[ semicolon, 6 ]};
key <AE07> {[ question, 7 ]};
key <AE08> {[ U2116, 8 ]};
key <AE09> {[ degree, 9 ]};
key <AE10> {[ parenright, 0 ]};
key <AE11> {[ minus, underscore, emdash ]};
key <AE12> {[ less, greater ]};
key <AD01> {[ Georgian_an, U10FA ]};
key <AD02> {[ Georgian_zen, Z ]};
key <AD03> {[ Georgian_en, E, Georgian_he ]};
key <AD04> {[ Georgian_rae, registered ]};
key <AD05> {[ Georgian_tar, T ]};
key <AD06> {[ Georgian_qar, U10F8 ]};
key <AD07> {[ Georgian_un, U ]};
key <AD08> {[ Georgian_in, Georgian_hie ]};
key <AD09> {[ Georgian_on, O ]};
key <AD10> {[ Georgian_par, P ]};
key <AD11> {[ Georgian_tan, T ]};
key <AD12> {[ Georgian_jil, Z ]};
key <AC01> {[ Georgian_khar, Q ]};
key <AC02> {[ Georgian_san, S ]};
key <AC03> {[ Georgian_don, D ]};
key <AC04> {[ Georgian_phar, Georgian_fi ]};
key <AC05> {[ Georgian_gan, U10F9 ]};
key <AC06> {[ Georgian_hae, Georgian_hoe ]};
key <AC07> {[ Georgian_jhan, U10F7 ]};
key <AC08> {[ Georgian_kan, K ]};
key <AC09> {[ Georgian_las, L ]};
key <AC10> {[ Georgian_man, M ]};
key <AC11> {[ Georgian_zhar, J ]};
key <BKSL> {[ Georgian_chin, copyright ]};
key <LSGT> {[ guillemotleft, guillemotright ]};
key <AB01> {[ Georgian_cil, W ]};
key <AB02> {[ Georgian_xan, Georgian_har ]};
key <AB03> {[ Georgian_can, copyright ]};
key <AB04> {[ Georgian_vin, Georgian_we ]};
key <AB05> {[ Georgian_ban, B ]};
key <AB06> {[ Georgian_nar, U10FC ]};
key <AB07> {[ comma, U2014 ]};
key <AB08> {[ Georgian_shin, S ]};
key <AB09> {[ Georgian_ghan, any ]};
key <AB10> {[ Georgian_char, any ]};
};
// US keyboard made French
//
// Copyright (C) 2018, Florent Gallaire <f@gallai.re>
partial alphanumeric_keys
xkb_symbols "us" {
include "us(basic)"
name[Group1]= "French (US)";
key <TLDE> { [ grave, asciitilde, dead_grave ] };
key <AE04> { [ 4, dollar, EuroSign, currency ] }; // € ¤
key <AE06> { [ 6,asciicircum,dead_circumflex ] };
key <AD03> { [ e, E, eacute, Eacute ] }; // é É
key <AD04> { [ r, R, egrave, Egrave ] }; // è È
key <AD06> { [ y, Y, ydiaeresis, Ydiaeresis ] }; // ÿ Ÿ
key <AD07> { [ u, U, ugrave, Ugrave ] }; // ù Ù
key <AD08> { [ i, I, idiaeresis, Idiaeresis ] }; // ï Ï
key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; // ô Ô
key <AD10> { [ p, P, oe, OE ] }; // œ Œ
key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “
key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ”
key <AC01> { [ a, A, agrave, Agrave ] }; // à À
key <AC02> { [ s, S, ae, AE ] }; // æ Æ
key <AC03> { [ d, D, ecircumflex, Ecircumflex ] }; // ê Ê
key <AC04> { [ f, F, ediaeresis, Ediaeresis ] }; // ë Ë
key <AC06> { [ h, H, udiaeresis, Udiaeresis ] }; // ü Ü
key <AC07> { [ j, J, ucircumflex, Ucircumflex ] }; // û Û
key <AC08> { [ k, K, icircumflex, Icircumflex ] }; // î Î
key <AC11> { [apostrophe, quotedbl,dead_diaeresis, degree ] };
key <AB01> { [ z, Z, acircumflex, Acircumflex ] }; // â Â
key <AB03> { [ 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 <mats @ globalbility.org>, 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 <TLDE> {[ twosuperior ]};
key <AE01> {[ ampersand, 1 ]};
key <AE02> {[ eacute, 2, asciitilde ]};
key <AE03> {[ quotedbl, 3, numbersign ]};
key <AE04> {[ apostrophe, 4, braceleft ]};
key <AE05> {[ parenleft, 5, bracketleft ]};
key <AE06> {[ minus, 6, bar ]};
key <AE07> {[ egrave, 7, grave ]};
key <AE08> {[ underscore, 8, backslash ]};
key <AE09> {[ ccedilla, 9, asciicircum ]};
key <AE10> {[ agrave, 0, at ]};
key <AE11> {[ parenright, degree, bracketright ]};
key <AE12> {[ equal, plus, braceright ]};
key <AD01> {[ a, A ]};
key <AD02> {[ z, Z ]};
key <AD03> {[ e, E, EuroSign ]};
key <AD04> {[ r, R ]};
key <AD05> {[ t, T ]};
key <AD06> {[ y, Y ]};
key <AD07> {[ u, U ]};
key <AD08> {[ i, I ]};
key <AD09> {[ o, O ]};
key <AD10> {[ p, P ]};
key <AD11> {[ dead_circumflex,dead_diaeresis ]};
key <AD12> {[ dollar, sterling, currency ]};
key <AC01> {[ q, Q ]};
key <AC02> {[ s, S ]};
key <AC03> {[ d, D ]};
key <AC04> {[ f, F ]};
key <AC05> {[ g, G ]};
key <AC06> {[ h, H ]};
key <AC07> {[ j, J ]};
key <AC08> {[ k, K ]};
key <AC09> {[ l, L ]};
key <AC10> {[ m, M ]};
key <AC11> {[ ugrave, percent ]};
key <BKSL> {[ asterisk, mu ]};
key <LSGT> {[ less, greater ]};
key <AB01> {[ w, W ]};
key <AB02> {[ x, X ]};
key <AB03> {[ c, C ]};
key <AB04> {[ v, V ]};
key <AB05> {[ b, B ]};
key <AB06> {[ n, N ]};
key <AB07> {[ comma, question ]};
key <AB08> {[ semicolon, period ]};
key <AB09> {[ colon, slash ]};
key <AB10> {[ exclam, section ]};
include "level3(ralt_switch)"
};
// US keyboard made French (with dead keys, alternative)
//
// Copyright (C) 2018, Florent Gallaire <f@gallai.re>
partial alphanumeric_keys
xkb_symbols "us-alt" {
include "us(basic)"
name[Group1]= "French (US with dead keys, alt.)";
key <TLDE> { [dead_grave, asciitilde, grave ] };
key <AE04> { [ 4, dollar, EuroSign, currency ] }; // € ¤
key <AE06> { [dead_circumflex, asciicircum, 6 ] };
key <AD03> { [ e, E, eacute, Eacute ] }; // é É
key <AD09> { [ o, O, oe, OE ] }; // œ Œ
key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “
key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ”
key <AC01> { [ a, A, ae, AE ] }; // æ Æ
key <AC11> { [dead_diaeresis, quotedbl, apostrophe ] };
key <AB03> { [ 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 <f@gallai.re>
partial alphanumeric_keys
xkb_symbols "us-azerty" {
include "us"
name[Group1]= "French (US, AZERTY)";
key <TLDE> { [ grave, asciitilde, dead_grave ] };
key <AE02> { [ 2, at, eacute, Eacute ] }; // é É
key <AE04> { [ 4, dollar, currency ] }; // ¤
key <AE06> { [ 6,asciicircum,dead_circumflex ] };
key <AE07> { [ 7, ampersand, egrave, Egrave ] }; // è È
key <AE09> { [ 9, parenleft, ccedilla, Ccedilla ] }; // ç Ç
key <AE10> { [ 0, parenright, agrave, Agrave ] }; // à À
key <AD01> { [ a, A, ae, AE ] }; // æ Æ
key <AD02> { [ z, Z ] };
key <AD09> { [ o, O, oe, OE ] }; // œ Œ
key <AD11> { [bracketleft, braceleft,dead_circumflex, dead_diaeresis ] };
key <AC01> { [ q, Q ] };
key <AC10> { [ m, M ] };
key <AC11> { [apostrophe, quotedbl, ugrave, Ugrave ] }; // ù Ù
key <AB01> { [ w, W, guillemotleft, leftdoublequotemark ] }; // « “
key <AB02> { [ x, X,guillemotright,rightdoublequotemark ] }; // » ”
key <AB07> { [ 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 <me @ cimba.li>, © 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 <TLDE> {[ at, numbersign, dead_breve, dead_invertedbreve ]}; // @ # ̑ ̆
key <AE01> {[ agrave, 1, section, Agrave ]}; // à 1 § À
key <AE02> {[ eacute, 2, dead_acute, Eacute ]}; // é 2 ́ É
key <AE03> {[ egrave, 3, dead_grave, Egrave ]}; // è 3 ̀ È
key <AE04> {[ ecircumflex, 4, ampersand, Ecircumflex ]}; // ê 4 & Ê
key <AE05> {[ parenleft, 5, bracketleft, dead_doubleacute ]}; // ( 5 [ ̋
key <AE06> {[ parenright, 6, bracketright, dead_doublegrave ]}; // ) 6 ] ̏
key <AE07> {[ leftsinglequotemark, 7, dead_macron, none ]}; // 7 ̄
key <AE08> {[ rightsinglequotemark, 8, underscore, emdash ]}; // 8 _ —
key <AE09> {[ guillemotleft, 9, leftdoublequotemark, U2039 ]}; // « 9 “
key <AE10> {[ guillemotright, 0, rightdoublequotemark, U203A ]}; // » 0 ”
key <AE11> {[ apostrophe, quotedbl, degree, dead_abovering ]}; // ' " ° ̊
key <AE12> {[ dead_circumflex, dead_diaeresis, dead_caron, none ]}; // ̂ ̈ ̌
key <AD01> {[ a, A, ae, AE ]}; // a A æ Æ
key <AD02> {[ z, Z, sterling, none ]}; // z Z £
key <AD03> {[ e, E, EuroSign, none ]}; // e E €
key <AD04> {[ r, R, registered, none ]}; // r R ®
key <AD05> {[ t, T, braceleft, trademark ]}; // t T { ™
key <AD06> {[ y, Y, braceright, none ]}; // y Y }
key <AD07> {[ u, U, ugrave, Ugrave ]}; // u U ù Ù
key <AD08> {[ i, I, dead_abovedot, dead_belowdot ]}; // i I ̇ ̣
key <AD09> {[ o, O, oe, OE ]}; // o O œ Œ
key <AD10> {[ p, P, percent, permille ]}; // p P % ‰
key <AD11> {[ minus, endash, U2212, U2011 ]}; // - // signe moins (minus sign), trait d'union insécable (non-breaking hyphen)
key <AD12> {[ plus, plusminus, dagger, doubledagger ]}; // + ± † ‡
key <AC01> {[ q, Q, Greek_theta, none ]}; // q Q θ
key <AC02> {[ s, S, ssharp, U1E9E ]}; // s S ß ẞ // lettre majuscule latine S dur (latin capital letter sharp s)
key <AC03> {[ d, D, dollar, none ]}; // d D $
key <AC04> {[ f, F, dead_currency, none ]}; // f F ¤
key <AC05> {[ g, G, dead_greek, none ]}; // g G µ
key <AC06> {[ h, H, none, dead_belowmacron ]}; // h H ̱ // Missing deadkey for other european characters (ªəƏþÞıݺſðÐƞȠijIJ)
key <AC07> {[ j, J, none, none ]}; // j J
key <AC08> {[ k, K, dead_stroke, none ]}; // k K ̷
key <AC09> {[ l, L, bar, none ]}; // l L |
key <AC10> {[ m, M, infinity, none ]}; // m M ∞
key <AC11> {[ slash, backslash, division, radical ]}; // / \ ÷ √
key <BKSL> {[ asterisk, onehalf, multiply, onequarter ]}; // * ½ × ¼
key <LSGT> {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥
key <AB01> {[ w, W, ezh, EZH ]}; // w W ʒ Ʒ
key <AB02> {[ x, X, copyright, none ]}; // x X ©
key <AB03> {[ c, C, ccedilla, Ccedilla ]}; // c C ç Ç
key <AB04> {[ v, V, dead_cedilla, dead_ogonek ]}; // v V ̧ ̨
key <AB05> {[ b, B, dead_stroke, none ]}; // b B ̵
key <AB06> {[ n, N, dead_tilde, none ]}; // n N ̃
key <AB07> {[ period, question, questiondown, none ]}; // . ? ¿
key <AB08> {[ comma, exclam, exclamdown, dead_belowcomma ]}; // , ! ¡ ̦
key <AB09> {[ colon, ellipsis, periodcentered, none ]}; // : … ·
key <AB10> {[ semicolon, equal, similarequal, notequal ]}; // ; = ≃ ≠
include "nbsp(level3n)"
include "keypad(oss)"
include "level3(ralt_switch)"
};