Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/04/2019, à 01:14

Arbiel

Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonjour


L'AFNOR a récemment retenu une nouvelle norme, NF Z71‐300, pour la saisie de textes en français. Il s'agit du clavier "azerty amélioré".

Il se trouve que j'ai développé un script pour faciliter la saisie du grec polytonique (grec ancien) façon bépo, qui peut tout aussi bien être utiliser pour créer un clavier conforme à cette nouvelle norme.

Le script et le fichier de création du clavier azerty amélioré sont disponibles ici.

Je suis à votre disposition pour de plus amples explications.

Arbiel

Dernière modification par Arbiel (Le 12/05/2019, à 18:57)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#2 Le 20/04/2019, à 12:02

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

salut
brillante idée et respect pour le boulot que tu fais,
Pour le néophyte il faudrait expliquer et développer certaines lignes

le script étant enregistré sous le nom ucg dans un répertoire inclus dans ${PATH}.

pour ma part j'ai créé un fichier ucg dans mon dossier personnel avec kate (je suis sous plasma kde)

ucg clavier

ne fonctionne pas car ne trouve pas le chemin du fichier.

/home/kubu/ucg 
bash: /home/kubu/ucg: Permission non accordée 

pas de droit d'exécution sur ce fichier, donc je met les droits d'exécution sur ce fichier (clic droit sur fichier - propriétés - rendre exécutable)

/home/kubu/ucg clavier
mkdir: impossible de créer le répertoire «/home/.ucg»: Permission non accordée

là je ne comprends pas pourquoi ce fichier veut se créer dans /home/.ucg et pas dans mon dossier perso /home/kubu/.ucg

Dernière modification par eric63 (Le 20/04/2019, à 12:05)


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#3 Le 20/04/2019, à 16:23

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonjour

Je te remercie d'avoir essayé ce script et de m'avoir fait part de tes remarques. J'ai modifié mon message initial pour en tenir compte.

Merci de m'indiquer si ces explications sont suffisantes, et suffisamment claires.

Arbiel

Dernière modification par Arbiel (Le 20/04/2019, à 16:24)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#4 Le 20/04/2019, à 22:02

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

désolé de faire le béotien
mais hormis les explications améliorées je bute toujours sur le même problème de création du dossier caché .ucg dans /home
il me faut sans doute les droit sudo pour créer ce dossier dans home
Je n'ai pas de dossier /home/kubu/bin/ ou   /home/kubu/local/bin dans mon path pour y mettre .ucg
parce que je ne l'ai jamais déclaré

echo "${PATH}"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

donc suivant tes indications j'ai modifié le script pour prendre en compte mon dossier personnel ligne 119

gbl_dir_ucg="${UCG_DIR:-"/home/kubu/.ucg"}"; # répertoire des fichiers ucg

ce qui m'a créé un repertoire caché dans mon dossier perso qui n'est pas vu par

echo "${PATH}"

la commande suivante donne

/home/kubu/ucg clavier
/home/kubu/ucg: ligne 30: notify-send : commande introuvable

Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#5 Le 20/04/2019, à 22:33

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonsoir

Le plus simple pour disposer d'un répertoire énuméré dans ${PATH} est de créer le répertoire /bin dans ton répertoire personnel /home/${USER}. Lorsque /home/${USER}/bin existe, les scripts d'initialisation mettent ${PATH} à jour pour tenir compte de son existence. Tout script enregistré dans ce répertoire peut ainsi être exécuté sans mention du chemin d'accès.

Dans ton cas, je suppose que l'utilisateur est "kubu".

J'ai en tête d'écrire une fonction d'information, dont j'ai commencé la rédaction, non présente dans la version que j'ai publiée ici. Cette fonction d'informations présentera en particulier les paquets nécessaires à l'exécution du script.

######################################################################################################################
#8 Dépendances
#8 
#8 sed, grep, tempfile
#8 kill, pidof
#8 yad, zenity, libttspico-utils (pour pico2wave, sox)
#8 wget,
#8 xmlstarlet,
#8 notify-send
#8 
#8 doivent avoir été préalablement chargés.
#8 
#####################################################################################################################$

sont des lignes de commentaires qui seront présentées dans une fenêtre de l'interface graphique de la commande
ucg notice.

On ne peut effectivement pas inventer cette liste, dont j'espère qu'elle est complète, et j'ai eu tort de ne pas la publier dans mon message initial.

À vrai dire, dans la version dont tu disposes, libttspico-utils n'est pas nécessaire. Ce paquet est utilisé pour énoncer à haute voix certains messages. La fonction qui gère l'affichage et cette énonciation provient d'un autre script, destiné à des adultes handicapés mentaux qui ne savent pas lire, ou ne savent pas suffisamment bien lire pour prendre connaissance des messages qui leur sont destinés.

Dans la situation présente, j'ai supprimé la lecture à haute voix des messages.

Si tu veux la réintroduire, cherche la fonction "annonce" en début de script, et enlève le commentaire de la ligne

#				parler) pid=$(pidof play); [ -n "${pid}" ] && kill -9 ${pid}; pico2wave -l fr-FR -w /tmp/message.wav "${msg}"; (play /tmp/message.wav 2>/dev/null &) ;;

Dernière modification par Arbiel (Le 20/04/2019, à 22:41)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#6 Le 21/04/2019, à 00:29

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

dépendances manquantes yad xmlstarlet

echo "${PATH}"
/home/kubu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

déplacement du fichier ucg dans /home/kubu/bin
modification du fichier ucg pour revenir comme à l'origine

gbl_dir_ucg="${UCG_DIR:-"/home/.ucg"}"; # répertoire des fichiers ucg

erreur

ucg clavier
mkdir: impossible de créer le répertoire «/home/.ucg»: Permission non accordée

donc retour à

gbl_dir_ucg="${UCG_DIR:-"/home/kubu/.ucg"}"; # répertoire des fichiers ucg

lancement et ouverture de la requête pour modifier le clavier
1er champ laissé vierge (en fait j'ai déjà deux claviers dispo en francais legacy, alt et alt et 1  en anglais, donc dans le doute je m'abstiens)
2 eme champ modifier en french ucg
3 champ fichier de description dans dev/stdin (là je ne sais pas ce qu'il faut en faire: choisir un autre fichier  ou laisser en l'état)
4 champ indicateur: ucg
validation

sélection des claviers disponibles
résultat aucun n'a les nouveaux codes
par exemple e accent circonflexe sur la touche 4


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#7 Le 21/04/2019, à 23:02

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonsoir

J'ai réparé l'erreur de création du répertoire

mkdir: impossible de créer le répertoire «/home/.ucg»: Permission non accordée

et remplacé le script du #1 en conséquence, et en y réintroduisant les commentaires que j'avais supprimés un peu trop rapidement, mais qui ne sont pas encore suffisants pour apporter toutes les informations nécessaires à son exécution.

3 champ fichier de description dans dev/stdin (là je ne sais pas ce qu'il faut en faire: choisir un autre fichier  ou laisser en l'état)

Il faut préciser ici le chemin vers le fichier que j'ai publié en #1

// clavier azerty amélioré - norme AFNOR NF Z71‐300
TLDE @ # brève invertedbreve 
…
AB10 ; = ≃ ≠
SPCE " "

en naviguant dans l'arborescence des fichiers avec le contrôle qui apparaît à droite de la zone de saisie.

résultat aucun n'a les nouveaux codes

As-tu trouvé le clavier dans la liste déroulante de l'outil graphique de sélection des claviers (je n'utilise pas Kubuntu, et je ne peux pas décrire plus précisément l'interface de cet outil qui peut être différent de celui d'Ubuntu. Il faudrait que j'installe une distribution Kubuntu pour tester).

En tout état de cause, je te remercie de bien vouloir me donner le retour de ces commandes :

ls -la /home/kubu/.ucg/gnu
cat /home/kubu/.ucg/gnu/fr
ls -la /usr/share/X11/xkb/symbols | grep fr
xmlstarlet sel -t -c "//layout[./configItem/name  = 'fr']"   /home/kubu/.ucg/gnu/evdev.xml 2>/dev/null

Arbiel

Dernière modification par Arbiel (Le 21/04/2019, à 23:08)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#8 Le 22/04/2019, à 13:36

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

bon c'est presque ok
donc je récapitule ce que j'ai fait

création d'un dossier /bin dans /home/kubu/
reboot pour prise en compte path (utile ?)

création d'un 1er fichier "clavier" dans /home/kubu/bin
qui contient

// clavier azerty amélioré - norme AFNOR NF Z71‐300
TLDE @ # brève invertedbreve 
AE02-½a é 2 tonique É 
AE03-½a è 3 grave È 
AE04-½a ê 4 & Ê 
AE05-½a ( 5 [ doubleacute
AE06-½a ) 6 ] doublegrave
AE07-½a ‘ 7 macron 
AE08-½a ' 8 _ —
AE09-½a « 9 “ ‹
AE10-½a » 0 ” ›
AE11 ' " ° abovering
AE12 circonflexe tréma caron
AD01 a A æ Æ
AD02 z Z £ 
AD03 e E € 
AD04 r R ®
AD05 t T { ™
AD06 y Y }
AD07 u U ù Ù
AD08 i I abovedot belowdot
AD09 o O œ Œ
AD10 p P % ‰
AD11 - – − ‑
AD12 + ± † ‡
AC01 q Q θ
AC02 s S ß ẞ
AC03 d D $
AC04 f F ¤
AC05 g G μ
AC06 h H Eu macron
AC07 j J 
AC08 k K longsolidusoverlay
AC09 l L |
AC10 m M ∞
AC11 / \ ÷ √
BKSL * ½ × ¼
LSGT < > 
AB01 w W ʒ Ʒ
AB02 x X ©
AB03 c C ç Ç 
AB04 v V cedilla ogonek
AB05 b B aboveverticalline
AB06 n N tilde
AB07 . ? ¿ 
AB08 , ! ¡ belowcomma
AB09 : … · 
AB10 ; = ≃ ≠
SPCE " "

création du nouveau fichier "ucg" version 15
lancement de la commande

ucg clavier

mdp
création auto du dossier caché /home/.ucg/
et renseignement des champs dans la fenêtre ucg de création de clavier
1 er champ laisser vierge
2 eme champ modifié en "francais modifie"
3 eme champ recherche du fichier "clavier" dans /home/kubu/bin/
4 eme champ indicateur "ucg"
validation
reboot
recherche de la disposition  "francais modifie" dans la configuration systéme clavier
et c'est ok
il reste que le fichier n'a pas toutes les touches indiquées
pas de 1 pas de touche space
avec le clavier ucg actif ça donne
pas"de"touche"en"normal"pas"de"touche"space"en"normal

le retours des commandes

kubu@kubu:~$ ls -la /home/.ucg/gnu
total 344
drwxrwxr-x 2 kubu kubu   4096 avril 22 13:36 .
drwxr-xr-x 4 kubu kubu   4096 avril 22 00:08 ..
-rw-r--r-- 1 kubu kubu 178089 avril 22 13:36 evdev.xml
lrwxrwxrwx 1 kubu kubu     35 avril 22 00:23 evdev.xml.original -> /usr/share/X11/xkb/rules/.evdev.xml
-rw-r--r-- 1 kubu kubu  80159 avril 22 13:36 fr
-rw-r--r-- 1 kubu kubu  80159 avril 22 00:56 fr~
lrwxrwxrwx 1 kubu kubu     30 avril 22 00:23 fr.original -> /usr/share/X11/xkb/symbols/.fr
kubu@kubu:~$

le code est tronqué au début mais impossible d'avoir mieux

cat /home/.ucg/gnu/fr
// ( 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_Sundeadkeys" {

    // Modifies the basic fr(oss) layout to use the Sun dead keys

    include "fr(oss)"

    key <TLDE>  { [      twosuperior,    threesuperior,          onesuperior,          dead_cedilla ] }; // ¹ ² ³ ¸

    key <AD11>  { [  dead_circumflex,   dead_diaeresis,           dead_tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚

    key <AC11>  { [           ugrave,          percent,           dead_acute,                Ugrave ] }; // ù % ' Ù
    key <BKSL>  { [         asterisk,               mu,           dead_grave,           dead_macron ] }; // * µ ` ̄
};

partial alphanumeric_keys
xkb_symbols "oss_sundeadkeys" {

    include "fr(oss_Sundeadkeys)"

    name[Group1]="French (alt., with Sun dead keys)";
};

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     | Imprime | Arrêt défil | Pause |
// | s a| s = normal, a = AltGr             |  Exec   |             | Halte |
//  ¯¯¯¯                                     ¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯
//  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
// | œ "| 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,
// Shift+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,             Ooblique ] };
    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                       ] };
    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_Sundeadkeys" {

    // Modifies the basic fr-latin9 layout to use the Sun dead keys

    include "fr(latin9)"

    key <AE01>  { [       ampersand,               1,         dead_acute,       periodcentered ] };
    key <AE07>  { [          egrave,               7,         dead_grave,               Egrave ] };
    key <AD11>  { [ dead_circumflex,  dead_diaeresis,         dead_tilde,           apostrophe ] };
};

partial alphanumeric_keys
xkb_symbols "latin9_sundeadkeys" {

    include "fr(latin9_Sundeadkeys)"

    name[Group1]="French (legacy, alt., with Sun dead keys)";
};

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, ergonomic, Dvorak way)";

    // 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,          U2030,        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 fr(bepo) layout to latin9 symbols

    include "fr(bepo)"
    include "keypad(oss_latin9)"

    name[Group1]="French (Bepo, ergonomic, Dvorak way, 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                 ] }; // 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   ª

    // Note : on a besoin de redéfinir les niveaux 3 et 4,
    // donc nbsp(level2) ne suffit pas !
    key <SPCE> { [           space,  nobreakspace,    underscore,   nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable)
};

// 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]= "French (Breton)";

    // 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 an inputmethod (XIM)
    // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
 // key <AD01> { [    trigraph_c_h,   trigraph_C_h,    trigraph_C_H,    Greek_alpha ] };
    key <AD01> { [           UF8FD,          UF8FE,           UF8FF,    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 an inputmethod (XIM)
    // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
 // key <AB07> { [      digraph_ch,     digraph_Ch,      digraph_CH,  Greek_omicron ] };
    key <AB07> { [           UF8FA,          UF8FB,           UF8FC,  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  ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
    key <AE01> {        [   ampersand,    1,   VoidSymbol,    dead_acute        ]       }; // MISSING: Apple
    key <AE02> {        [      eacute,    2,   ediaeresis,        Eacute        ]       };
    key <AE03> {        [    quotedbl,    3,   VoidSymbol,    VoidSymbol        ]       }; // CHECK all quotemarks
    key <AE04> {        [  apostrophe,    4,   VoidSymbol,    VoidSymbol        ]       };
    key <AE05> {        [   parenleft,    5,    braceleft,   bracketleft        ]       };
 // CHECK section
    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,    VoidSymbol        ]       }; // MISSING: Oslash
    key <AE11> {        [  parenright, degree, braceright,  bracketright        ]       };
    key <AE12> {        [       minus, underscore, emdash,        endash        ]       }; // CHECK dashes

    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,   VoidSymbol,  VoidSymbol    ]       };
    key <AD06> {        [           y,  Y,       Uacute,  Ydiaeresis    ]       }; // MISSING: Ydiaeresis; eherlent : ok in Latin9
    key <AD07> {        [           u,  U,   VoidSymbol, ordfeminine    ]       }; // MISSING: ordmasculine?
    key <AD08> {        [           i,  I,  icircumflex,  idiaeresis    ]       };
    key <AD09> {        [           o,  O,           oe,          OE    ]       }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9
    key <AD10> {        [           p,  P,   VoidSymbol,  VoidSymbol    ]       };
    key <AD11> {        [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex       ]       };
    key <AD12> {        [      dollar, asterisk,   EuroSign, yen        ]       }; // eherlent : EuroSign in Latin9

    key <AC01> {        [         q, Q, acircumflex,         Agrave     ]       };
    key <AC02> {        [         s, S,      Ograve,     VoidSymbol     ]       };
    key <AC03> {        [         d, D,  VoidSymbol,     VoidSymbol     ]       };
    key <AC04> {        [         f, F,  VoidSymbol, periodcentered     ]       }; // MISSING: oblong script f??
    key <AC05> {        [         g, G,  VoidSymbol,     VoidSymbol     ]       }; // MISSING: kerned 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, VoidSymbol, VoidSymbol    ]       };
    key <AB01> {        [         w, W, VoidSymbol,   VoidSymbol        ]       }; // MISSING: half-guillemot (single angle bracket)
    key <AB02> {        [         x, X, VoidSymbol,   VoidSymbol        ]       }; // CHECK similarequal; MISSING: extra-slanted slash
    key <AB03> {        [         c, C,  copyright,         cent        ]       };
    key <AB04> {        [         v, V,    diamond,  leftradical        ]       }; // CHECK diamond, leftradical
    key <AB05> {        [         b, B,     ssharp,   VoidSymbol        ]       }; // CHECK: Greek_beta or ssharp?; MISSING: oblong script s
    key <AB06> {        [         n, N,  dead_tilde,  asciitilde        ]       };
    key <AB07> {        [     comma,  question, VoidSymbol,  questiondown       ]       };
    key <AB08> {        [ semicolon,  period, VoidSymbol,  periodcentered       ]       };
    key <AB09> {        [     colon,  slash,   division,        backslash       ]       };
    key <AB10> {        [     equal,   plus, VoidSymbol,        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, noSymbol ] };
    key <AE01> { [ 0x0100201e, 1 ] };
    key <AE02> { [ 0x01002116, 2 ] };
    key <AE03> { [ percent, 3    ] };
    key <AE04> { [ parenleft, 4  ] };
    key <AE05> { [ colon, 5      ] };
    key <AE06> { [ semicolon, 6  ] };
    key <AE07> { [ question, 7   ] };
    key <AE08> { [ 0x01002116, 8 ] };
    key <AE09> { [ degree, 9     ] };
    key <AE10> { [ parenright, 0 ] };
    key <AE11> { [ minus, underscore, 0x01002014 ] };
    key <AE12> { [ less, greater ] };

    key <AD01> { [ 0x010010d0,  0x010010fa     ] };
    key <AD02> { [ 0x010010d6,  Z              ] };
    key <AD03> { [ 0x010010d4,  E, 0x010010f1  ] };
    key <AD04> { [ 0x010010e0,  0x010000ae     ] };
    key <AD05> { [ 0x010010e2,  T              ] };
    key <AD06> { [ 0x010010e7,  0x010010f8     ] };
    key <AD07> { [ 0x010010e3,  U              ] };
    key <AD08> { [ 0x010010d8,  0x010010f2     ] };
    key <AD09> { [ 0x010010dd,  O              ] };
    key <AD10> { [ 0x010010de,  P              ] };
    key <AD11> { [ 0x010010d7,  T              ] };
    key <AD12> { [ 0x010010eb,  Z              ] };

    key <AC01> { [ 0x010010e5,  Q              ] };
    key <AC02> { [ 0x010010e1,  S              ] };
    key <AC03> { [ 0x010010d3,  D              ] };
    key <AC04> { [ 0x010010e4,  0x010010f6     ] };
    key <AC05> { [ 0x010010d2,  0x010010f9     ] };
    key <AC06> { [ 0x010010f0,  0x010010f5     ] };
    key <AC07> { [ 0x010010ef,  0x010010f7     ] };
    key <AC08> { [ 0x010010d9,  K              ] };
    key <AC09> { [ 0x010010da,  L              ] };
    key <AC10> { [ 0x010010db,  M              ] };
    key <AC11> { [ 0x010010df,  J              ] };
    key <BKSL> { [ 0x010010e9,  0x010000a9     ] };

    key <LSGT> { [ guillemotleft,guillemotright ] };
    key <AB01> { [ 0x010010ec,  W               ] };
    key <AB02> { [ 0x010010ee,  0x010010f4      ] };
    key <AB03> { [ 0x010010ea,  0x010000a9      ] };
    key <AB04> { [ 0x010010d5,  0x010010f3      ] };
    key <AB05> { [ 0x010010d1,  B               ] };
    key <AB06> { [ 0x010010dc,  0x010010fc      ] };
    key <AB07> { [ comma,       0x01002014      ] };
    key <AB08> { [ 0x010010e8,  S               ] };
    key <AB09> { [ 0x010010e6,  noSymbol        ] };
    key <AB10> { [ 0x010010ed,  noSymbol        ] };

};

// EXTRAS:

partial alphanumeric_keys
        xkb_symbols "sun_type6" {
        include "sun_vndr/fr(sun_type6)"
};


partial alphanumeric_keys
xkb_symbols "azerty" {
    name[Group1]="French (AZERTY)";

    include "level3(ralt_switch)"

// French AZERTY-Keyboard layout
// Author : 2015, Mats Blakstad <mats @ globalbility.org>
// Based on the layout at https://en.wikipedia.org/wiki/File:KB_France.svg

// LAYOUT OVERVIEW                              
//  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
// |    | 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 |
//  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯

    // First row
    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              ] };

    // Second row
    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                ] };

    // Third row
    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                                      ] };

    // Fourth row
    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                                 ] };
};
// début ucg "francais modifie" créé le 22/04/19 12:59:39 -- ne pas supprimer cette ligne qui marque le début du clavier
partial alphanumeric_keys alternate_group
xkb_symbols "ucg1" {
name[Group1] = "francais modifie";
include "level3(lalt_switch)"
include "level3(ralt_switch)"
key <TLDE> {   [  U0040, U0023, 0xfe55, 0xfe6d ]  } ; //  "@" "#" brève invertedbreve
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00E9, U0032, 0xfe51, U00C9 ]  } ; //  "é" "2" tonique "É"
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00E8, U0033, 0xfe50, U00C8 ]  } ; //  "è" "3" grave "È"
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00EA, U0034, U0026, U00CA ]  } ; //  "ê" "4" "&" "Ê"
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0028, U0035, U005B, 0xfe59 ]  } ; //  "(" "5" "[" doubleacute
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0029, U0036, U005D, 0xfe66 ]  } ; //  ")" "6" "]" doublegrave
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U2018, U0037, 0xfe54 ]  } ; //  "‘" "7" macron
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0027, U0038, U005F, U2014 ]  } ; //  "'" "8" "_" "—"
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00AB, U0039, U201C, U2039 ]  } ; //  "«" "9" "“" "‹"
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00BB, U0030, U201D, U203A ]  } ; //  "»" "0" "”" "›"
key <AE11> {   [  U0027, U0022, U00B0, 0xfe58 ]  } ; //  "'" """ "°" abovering
key <AE12> {   [  0xfe52, 0xfe57, 0xfe5a ]  } ; //  circonflexe tréma caron
key <AD01> {   [  U0061, U0041, U00E6, U00C6 ]  } ; //  "a" "A" "æ" "Æ"
key <AD02> {   [  U007A, U005A, U00A3 ]  } ; //  "z" "Z" "£"
key <AD03> {   [  U0065, U0045, U20AC ]  } ; //  "e" "E" "€"
key <AD04> {   [  U0072, U0052, U00AE ]  } ; //  "r" "R" "®"
key <AD05> {   [  U0074, U0054, U007B, U2122 ]  } ; //  "t" "T" "{" "™"
key <AD06> {   [  U0079, U0059, U007D ]  } ; //  "y" "Y" "}"
key <AD07> {   [  U0075, U0055, U00F9, U00D9 ]  } ; //  "u" "U" "ù" "Ù"
key <AD08> {   [  U0069, U0049, 0xfe56, 0xfe60 ]  } ; //  "i" "I" abovedot belowdot
key <AD09> {   [  U006F, U004F, U0153, U0152 ]  } ; //  "o" "O" "œ" "Œ"
key <AD10> {   [  U0070, U0050, U0025, U2030 ]  } ; //  "p" "P" "%" "‰"
key <AD11> {   [  U002D, U2013, U2212, U2011 ]  } ; //  "-" "–" "−" "‑"
key <AD12> {   [  U002B, U00B1, U2020, U2021 ]  } ; //  "+" "±" "†" "‡"
key <AC01> {   [  U0071, U0051, U03B8 ]  } ; //  "q" "Q" "θ"
key <AC02> {   [  U0073, U0053, U00DF, U1E9E ]  } ; //  "s" "S" "ß" "ẞ"
key <AC03> {   [  U0064, U0044, U0024 ]  } ; //  "d" "D" "$"
key <AC04> {   [  U0066, U0046, U00A4 ]  } ; //  "f" "F" "¤"
key <AC05> {   [  U0067, U0047, U03BC ]  } ; //  "g" "G" "μ"
key <AC06> {   [  U0068, U0048, Eu, 0xfe54 ]  } ; //  "h" "H" Eu macron
key <AC07> {   [  U006A, U004A ]  } ; //  "j" "J"
key <AC08> {   [  U006B, U004B, 0xfe93 ]  } ; //  "k" "K" longsolidusoverlay
key <AC09> {   [  U006C, U004C, U007C ]  } ; //  "l" "L" "|"
key <AC10> {   [  U006D, U004D, U221E ]  } ; //  "m" "M" "∞"
key <AC11> {   [  U002F, U00F7, U221A ]  } ; //  "/" "÷" "√"
key <BKSL> {   [  U002A, U00BD, U00D7, U00BC ]  } ; //  "*" "½" "×" "¼"
key <LSGT> {   [  U003C, U003E ]  } ; //  "<" ">"
key <AB01> {   [  U0077, U0057, U0292, U01B7 ]  } ; //  "w" "W" "ʒ" "Ʒ"
key <AB02> {   [  U0078, U0058, U00A9 ]  } ; //  "x" "X" "©"
key <AB03> {   [  U0063, U0043, U00E7, U00C7 ]  } ; //  "c" "C" "ç" "Ç"
key <AB04> {   [  U0076, U0056, 0xfe5b, 0xfe5c ]  } ; //  "v" "V" cedilla ogonek
key <AB05> {   [  U0062, U0042, 0xfe91 ]  } ; //  "b" "B" aboveverticalline
key <AB06> {   [  U006E, U004E, 0xfe53 ]  } ; //  "n" "N" tilde
key <AB07> {   [  U002E, U003F, U00BF ]  } ; //  "." "?" "¿"
key <AB08> {   [  U002C, U0021, U00A1, 0xfe6e ]  } ; //  "," "!" "¡" belowcomma
key <AB09> {   [  U003A, U2026, U00B7 ]  } ; //  ":" "…" "·"
key <AB10> {   [  U003B, U003D, U2243, U2260 ]  } ; //  ";" "=" "≃" "≠"
key <SPCE> {   [  U0022, U0022 ]  } ; //  """ """
};
// fin ucg "francais modifie" -- ne pas supprimer cette ligne qui marque la fin du clavier
kubu@kubu:~$ 
kubu@kubu:~$ ls -la /usr/share/X11/xkb/symbols | grep fr
-rw-r--r--  1 root root 76009 oct.  25 13:10 .fr
lrwxrwxrwx  1 root root    17 avril 22 00:23 fr -> /home/.ucg/gnu/fr
drwxr-xr-x  2 root root  4096 mars   9 10:13 xfree68_vndr
kubu@kubu:~$ 
kubu@kubu:~$ xmlstarlet sel -t -c "//layout[./configItem/name  = 'fr']"   /home/.ucg/gnu/evdev.xml 2>/dev/null     
<layout>
   <configItem>
    <name>fr</name>
    <shortDescription>fr</shortDescription>
    <description>French</description>
    <languageList>
     <iso639Id>fra</iso639Id>
    </languageList>
   </configItem>
   <variantList>
    <variant>
     <configItem>
      <name>nodeadkeys</name>
      <description>French (no dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>sundeadkeys</name>
      <description>French (with Sun dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>oss</name>
      <description>French (alt.)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>oss_latin9</name>
      <description>French (alt., Latin-9 only)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>oss_nodeadkeys</name>
      <description>French (alt., no dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>oss_sundeadkeys</name>
      <description>French (alt., with Sun dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>latin9</name>
      <description>French (legacy, alt.)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>latin9_nodeadkeys</name>
      <description>French (legacy, alt., no dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>latin9_sundeadkeys</name>
      <description>French (legacy, alt., with Sun dead keys)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>bepo</name>
      <description>French (Bepo, ergonomic, Dvorak way)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>bepo_latin9</name>
      <description>French (Bepo, ergonomic, Dvorak way, Latin-9 only)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>dvorak</name>
      <description>French (Dvorak)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>mac</name>
      <description>French (Macintosh)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>azerty</name>
      <description>French (AZERTY)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>bre</name>
      <description>French (Breton)</description>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>oci</name>
      <description>Occitan</description>
      <languageList>
       <iso639Id>oci</iso639Id>
      </languageList>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>geo</name>
      <description>Georgian (France, AZERTY Tskapo)</description>
      <languageList>
       <iso639Id>geo</iso639Id>
      </languageList>
     </configItem>
    </variant>
    <variant>
     <configItem>
      <name>ucg1</name>
      <shortDescription>ucg</shortDescription>
      <description>francais modifie</description>
     </configItem>
    </variant>
   </variantList>
  </layout>kubu@kubu:~$ 

Dernière modification par eric63 (Le 22/04/2019, à 21:04)


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#9 Le 22/04/2019, à 14:37

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonjour

Je vais analyser, mais pas tout de suite. Je dois m'absenter, et je suis en train d'introduire les commentaires pour mettre en œuvre la commande "notice"

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#10 Le 22/04/2019, à 19:15

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonsoir

Je ne comprends pas pourquoi le fichier
/home/kubu/.ucg/gnu/fr
n'est pas correct. Pour l'instant, remplace-le par le fichier ci-dessous, ce qui devrait résoudre le problème.

default  partial alphanumeric_keys
xkb_symbols "basic" {

    include "latin"

    name[Group1]="French";

    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 <TLDE>	{ [twosuperior, asciitilde,     notsign,      notsign ]	};

    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, horizconnector,   multiply ]	};
    key <AB09>	{ [     colon,      slash, periodcentered,   division ]	};
    key <AB10>	{ [    exclam,    section, dead_belowdot, dead_abovedot ] };

    include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "olpc" {
    // 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, ssharp ]	};
    key <AD02>	{ [ z,  Z,  guillemotleft, guillemotleft ]	};
};

partial alphanumeric_keys
xkb_symbols "Sundeadkeys" {

    // Modifies the basic French layout to use the Sun dead keys

    include "fr(basic)"

    key <AD11>	{ [dead_circumflex, dead_diaeresis ]	};
    key <AB07>	{ [comma,   question,  dead_acute, dead_doubleacute ]	};
};

partial alphanumeric_keys
xkb_symbols "sundeadkeys" {
    include "fr(Sundeadkeys)"

    name[Group1]="French (with Sun dead keys)";
};

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 ]	};
    key <AD12>	{ [    dollar,   sterling,     currency,       macron ]	};
    key <AC11>	{ [    ugrave,    percent,  asciicircum,        caron ]	};
    key <BKSL>	{ [  asterisk,         mu,        grave,        breve ]	};
    key <AB07>	{ [     comma,   question,        acute,  doubleacute ]	};
    key <AB10>	{ [    exclam,    section, dead_belowdot,    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 "latin"
    include "level3(ralt_switch)"
    include "nbsp(level4n)"
    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,              Ooblique ] }; // $ £ ø Ø

    // 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_Sundeadkeys" {

    // Modifies the basic fr(oss) layout to use the Sun dead keys

    include "fr(oss)"

    key <TLDE>	{ [      twosuperior,    threesuperior,          onesuperior,          dead_cedilla ] }; // ¹ ² ³ ¸

    key <AD11>	{ [  dead_circumflex,   dead_diaeresis,           dead_tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚

    key <AC11>	{ [           ugrave,          percent,           dead_acute,                Ugrave ] }; // ù % ' Ù
    key <BKSL>	{ [         asterisk,               mu,           dead_grave,           dead_macron ] }; // * µ ` ̄
};

partial alphanumeric_keys
xkb_symbols "oss_sundeadkeys" {

    include "fr(oss_Sundeadkeys)"

    name[Group1]="French (alt., with Sun dead keys)";
};

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     | Imprime | Arrêt défil | Pause |
// | s a| s = normal, a = AltGr             |  Exec   |             | Halte |
//  ¯¯¯¯                                     ¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯
//  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
// | œ "| 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,
// Shift+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,             Ooblique ] };
    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                       ] };
    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_Sundeadkeys" {

    // Modifies the basic fr-latin9 layout to use the Sun dead keys

    include "fr(latin9)"

    key <AE01>	{ [       ampersand,               1,         dead_acute,       periodcentered ] };
    key <AE07>	{ [          egrave,               7,         dead_grave,               Egrave ] };
    key <AD11>	{ [ dead_circumflex,  dead_diaeresis,         dead_tilde,           apostrophe ] };
};

partial alphanumeric_keys
xkb_symbols "latin9_sundeadkeys" {

    include "fr(latin9_Sundeadkeys)"

    name[Group1]="French (legacy, alt., with Sun dead keys)";
};

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, ergonomic, Dvorak way)";

    // 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,          U2030,        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 fr(bepo) layout to latin9 symbols

    include "fr(bepo)"
    include "keypad(oss_latin9)"

    name[Group1]="French (Bepo, ergonomic, Dvorak way, 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                 ] }; // 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   ª

    // Note : on a besoin de redéfinir les niveaux 3 et 4,
    // donc nbsp(level2) ne suffit pas !
    key <SPCE> { [           space,  nobreakspace,    underscore,   nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable)
};

// 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]= "French (Breton)";

    // 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 an inputmethod (XIM)
    // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
 // key <AD01> { [    trigraph_c_h,   trigraph_C_h,    trigraph_C_H,    Greek_alpha ] };
    key <AD01> { [           UF8FD,          UF8FE,           UF8FF,    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 an inputmethod (XIM)
    // See https://bugs.freedesktop.org/show_bug.cgi?id=19506
 // key <AB07> { [      digraph_ch,     digraph_Ch,      digraph_CH,  Greek_omicron ] };
    key <AB07> { [           UF8FA,          UF8FB,           UF8FC,  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	]	}; // MISSING: Ydiaeresis; eherlent : ok in Latin9
    key <AE01> {	[   ampersand,    1,   VoidSymbol,    dead_acute	]	}; // MISSING: Apple
    key <AE02> {	[      eacute,    2,   ediaeresis,        Eacute	]	};
    key <AE03> {	[    quotedbl,    3,   VoidSymbol,    VoidSymbol	] 	}; // CHECK all quotemarks
    key <AE04> {	[  apostrophe,    4,   VoidSymbol,    VoidSymbol	] 	};
    key <AE05> {	[   parenleft,    5,    braceleft,   bracketleft	]	};
 // CHECK section
    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,    VoidSymbol	]	}; // MISSING: Oslash
    key <AE11> {	[  parenright, degree, braceright,  bracketright	]	};
    key <AE12> {	[       minus, underscore, emdash,        endash	]	}; // CHECK dashes

    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,   VoidSymbol,  VoidSymbol	]	};
    key <AD06> {	[           y,  Y,       Uacute,  Ydiaeresis	]	}; // MISSING: Ydiaeresis; eherlent : ok in Latin9
    key <AD07> {	[           u,  U,   VoidSymbol, ordfeminine	]	}; // MISSING: ordmasculine?
    key <AD08> {	[           i,  I,  icircumflex,  idiaeresis	]	};
    key <AD09> {	[           o,  O,           oe,          OE	]	}; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9
    key <AD10> {	[           p,  P,   VoidSymbol,  VoidSymbol	]	};
    key <AD11> {	[dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex	]	};
    key <AD12> {	[      dollar, asterisk,   EuroSign, yen	]	}; // eherlent : EuroSign in Latin9

    key <AC01> {	[         q, Q, acircumflex,         Agrave	]	};
    key <AC02> {	[         s, S,      Ograve,     VoidSymbol	]	};
    key <AC03> {	[         d, D,  VoidSymbol,     VoidSymbol	]	};
    key <AC04> {	[         f, F,  VoidSymbol, periodcentered	]	}; // MISSING: oblong script f??
    key <AC05> {	[         g, G,  VoidSymbol,     VoidSymbol	]	}; // MISSING: kerned 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, VoidSymbol, VoidSymbol	]	};
    key <AB01> {	[         w, W, VoidSymbol,   VoidSymbol	]	}; // MISSING: half-guillemot (single angle bracket)
    key <AB02> {	[         x, X, VoidSymbol,   VoidSymbol	]	}; // CHECK similarequal; MISSING: extra-slanted slash
    key <AB03> {	[         c, C,  copyright,         cent	]	};
    key <AB04> {	[         v, V,    diamond,  leftradical	]	}; // CHECK diamond, leftradical
    key <AB05> {	[         b, B,     ssharp,   VoidSymbol	]	}; // CHECK: Greek_beta or ssharp?; MISSING: oblong script s
    key <AB06> {	[         n, N,  dead_tilde,  asciitilde	]	};
    key <AB07> {	[     comma,  question, VoidSymbol,  questiondown	]	};
    key <AB08> {	[ semicolon,  period, VoidSymbol,  periodcentered	]	};
    key <AB09> {	[     colon,  slash,   division,        backslash	]	};
    key <AB10> {	[     equal,   plus, VoidSymbol,        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, noSymbol ] };
    key <AE01> { [ 0x0100201e, 1 ] };
    key <AE02> { [ 0x01002116, 2 ] };
    key <AE03> { [ percent, 3    ] };
    key <AE04> { [ parenleft, 4  ] };
    key <AE05> { [ colon, 5      ] };
    key <AE06> { [ semicolon, 6  ] };
    key <AE07> { [ question, 7   ] };
    key <AE08> { [ 0x01002116, 8 ] };
    key <AE09> { [ degree, 9     ] };
    key <AE10> { [ parenright, 0 ] };
    key <AE11> { [ minus, underscore, 0x01002014 ] };
    key <AE12> { [ less, greater ] };

    key <AD01> { [ 0x010010d0,  0x010010fa     ] };
    key <AD02> { [ 0x010010d6,  Z              ] };
    key <AD03> { [ 0x010010d4,  E, 0x010010f1  ] };
    key <AD04> { [ 0x010010e0,  0x010000ae     ] };
    key <AD05> { [ 0x010010e2,  T              ] };
    key <AD06> { [ 0x010010e7,  0x010010f8     ] };
    key <AD07> { [ 0x010010e3,  U              ] };
    key <AD08> { [ 0x010010d8,  0x010010f2     ] };
    key <AD09> { [ 0x010010dd,  O              ] };
    key <AD10> { [ 0x010010de,  P              ] };
    key <AD11> { [ 0x010010d7,  T              ] };
    key <AD12> { [ 0x010010eb,  Z              ] };

    key <AC01> { [ 0x010010e5,  Q              ] };
    key <AC02> { [ 0x010010e1,  S              ] };
    key <AC03> { [ 0x010010d3,  D              ] };
    key <AC04> { [ 0x010010e4,  0x010010f6     ] };
    key <AC05> { [ 0x010010d2,  0x010010f9     ] };
    key <AC06> { [ 0x010010f0,  0x010010f5     ] };
    key <AC07> { [ 0x010010ef,  0x010010f7     ] };
    key <AC08> { [ 0x010010d9,  K              ] };
    key <AC09> { [ 0x010010da,  L              ] };
    key <AC10> { [ 0x010010db,  M              ] };
    key <AC11> { [ 0x010010df,  J              ] };
    key <BKSL> { [ 0x010010e9,  0x010000a9     ] };

    key <LSGT> { [ guillemotleft,guillemotright ] };
    key <AB01> { [ 0x010010ec,  W               ] };
    key <AB02> { [ 0x010010ee,  0x010010f4      ] };
    key <AB03> { [ 0x010010ea,  0x010000a9      ] };
    key <AB04> { [ 0x010010d5,  0x010010f3      ] };
    key <AB05> { [ 0x010010d1,  B               ] };
    key <AB06> { [ 0x010010dc,  0x010010fc      ] };
    key <AB07> { [ comma,       0x01002014      ] };
    key <AB08> { [ 0x010010e8,  S               ] };
    key <AB09> { [ 0x010010e6,  noSymbol        ] };
    key <AB10> { [ 0x010010ed,  noSymbol        ] };

};

// EXTRAS:

partial alphanumeric_keys
	xkb_symbols "sun_type6" {
	include "sun_vndr/fr(sun_type6)"
};


partial alphanumeric_keys
xkb_symbols "azerty" {
    name[Group1]="French (AZERTY)";

    include "level3(ralt_switch)"

// French AZERTY-Keyboard layout
// Author : 2015, Mats Blakstad <mats @ globalbility.org>
// Based on the layout at https://en.wikipedia.org/wiki/File:KB_France.svg

// LAYOUT OVERVIEW                              
//  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
// |    | 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 |
//  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯

    // First row
    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		] };

    // Second row
    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		] };	

    // Third row
    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					] };

    // Fourth row
    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					] };
};
// début ucg "francais modifie" créé le 22/04/19 12:59:39 -- ne pas supprimer cette ligne qui marque le début du clavier
partial alphanumeric_keys alternate_group
xkb_symbols "ucg1" {
name[Group1] = "francais modifie";
include "level3(lalt_switch)"
include "level3(ralt_switch)"
key <TLDE> {   [  U0040, U0023, 0xfe55, 0xfe6d ]  } ; //  "@" "#" brève invertedbreve
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00E0, U0031, U00A7, U00C0 ]  } ; //  "à" "1" "§" "À"
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00E9, U0032, 0xfe51, U00C9 ]  } ; //  "é" "2" tonique "É"
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00E8, U0033, 0xfe50, U00C8 ]  } ; //  "è" "3" grave "È"
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00EA, U0034, U0026, U00CA ]  } ; //  "ê" "4" "&" "Ê"
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0028, U0035, U005B, 0xfe59 ]  } ; //  "(" "5" "[" doubleacute
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0029, U0036, U005D, 0xfe66 ]  } ; //  ")" "6" "]" doublegrave
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U2018, U0037, 0xfe54 ]  } ; //  "‘" "7" macron
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U0027, U0038, U005F, U2014 ]  } ; //  "'" "8" "_" "—"
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00AB, U0039, U201C, U2039 ]  } ; //  "«" "9" "“" "‹"
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",  [  U00BB, U0030, U201D, U203A ]  } ; //  "»" "0" "”" "›"
key <AE11> {   [  U0027, U0022, U00B0, 0xfe58 ]  } ; //  "'" """ "°" abovering
key <AE12> {   [  0xfe52, 0xfe57, 0xfe5a ]  } ; //  circonflexe tréma caron
key <AD01> {   [  U0061, U0041, U00E6, U00C6 ]  } ; //  "a" "A" "æ" "Æ"
key <AD02> {   [  U007A, U005A, U00A3 ]  } ; //  "z" "Z" "£"
key <AD03> {   [  U0065, U0045, U20AC ]  } ; //  "e" "E" "€"
key <AD04> {   [  U0072, U0052, U00AE ]  } ; //  "r" "R" "®"
key <AD05> {   [  U0074, U0054, U007B, U2122 ]  } ; //  "t" "T" "{" "™"
key <AD06> {   [  U0079, U0059, U007D ]  } ; //  "y" "Y" "}"
key <AD07> {   [  U0075, U0055, U00F9, U00D9 ]  } ; //  "u" "U" "ù" "Ù"
key <AD08> {   [  U0069, U0049, 0xfe56, 0xfe60 ]  } ; //  "i" "I" abovedot belowdot
key <AD09> {   [  U006F, U004F, U0153, U0152 ]  } ; //  "o" "O" "œ" "Œ"
key <AD10> {   [  U0070, U0050, U0025, U2030 ]  } ; //  "p" "P" "%" "‰"
key <AD11> {   [  U002D, U2013, U2212, U2011 ]  } ; //  "-" "–" "−" "‑"
key <AD12> {   [  U002B, U00B1, U2020, U2021 ]  } ; //  "+" "±" "†" "‡"
key <AC01> {   [  U0071, U0051, U03B8 ]  } ; //  "q" "Q" "θ"
key <AC02> {   [  U0073, U0053, U00DF, U1E9E ]  } ; //  "s" "S" "ß" "ẞ"
key <AC03> {   [  U0064, U0044, U0024 ]  } ; //  "d" "D" "$"
key <AC04> {   [  U0066, U0046, U00A4 ]  } ; //  "f" "F" "¤"
key <AC05> {   [  U0067, U0047, U03BC ]  } ; //  "g" "G" "μ"
key <AC06> {   [  U0068, U0048, Eu, 0xfe54 ]  } ; //  "h" "H" Eu macron
key <AC07> {   [  U006A, U004A ]  } ; //  "j" "J"
key <AC08> {   [  U006B, U004B, 0xfe93 ]  } ; //  "k" "K" longsolidusoverlay
key <AC09> {   [  U006C, U004C, U007C ]  } ; //  "l" "L" "|"
key <AC10> {   [  U006D, U004D, U221E ]  } ; //  "m" "M" "∞"
key <AC11> {   [  U002F, U00F7, U221A ]  } ; //  "/" "÷" "√"
key <BKSL> {   [  U002A, U00BD, U00D7, U00BC ]  } ; //  "*" "½" "×" "¼"
key <LSGT> {   [  U003C, U003E ]  } ; //  "<" ">"
key <AB01> {   [  U0077, U0057, U0292, U01B7 ]  } ; //  "w" "W" "ʒ" "Ʒ"
key <AB02> {   [  U0078, U0058, U00A9 ]  } ; //  "x" "X" "©"
key <AB03> {   [  U0063, U0043, U00E7, U00C7 ]  } ; //  "c" "C" "ç" "Ç"
key <AB04> {   [  U0076, U0056, 0xfe5b, 0xfe5c ]  } ; //  "v" "V" cedilla ogonek
key <AB05> {   [  U0062, U0042, 0xfe91 ]  } ; //  "b" "B" aboveverticalline
key <AB06> {   [  U006E, U004E, 0xfe53 ]  } ; //  "n" "N" tilde
key <AB07> {   [  U002E, U003F, U00BF ]  } ; //  "." "?" "¿"
key <AB08> {   [  U002C, U0021, U00A1, 0xfe6e ]  } ; //  "," "!" "¡" belowcomma
key <AB09> {   [  U003A, U2026, U00B7 ]  } ; //  ":" "…" "·"
key <AB10> {   [  U003B, U003D, U2243, U2260 ]  } ; //  ";" "=" "≃" "≠"
key <SPCE> {   [  space ]  } ; //  
};
// fin ucg "francais modifie" -- ne pas supprimer cette ligne qui marque la fin du clavier

J'ai ajouté la touche du "1" qui était absente du fichier que j'ai indiqué au #1, que je mets également à jour.

J'ai introduit ce clavier azerty amélioré dans mon système (je ne l'avais pas encore fait car je suis en bépo), et tout fonctionne bien. La seule différence entre ce qui tu as fait et ce que j'ai fait est le nom du clavier, mais je ne vois pas pourquoi cela devrait avoir un quelconque impact.

J'ai aussi corrigé

pas"de"touche"en"normal"pas"de"touche"space"en"normal

qui provient de la dernière ligne du fichier de discription du clavier

SPCE " "

qui aurait dû être

SPCE space

Dernière modification par Arbiel (Le 22/04/2019, à 19:54)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#11 Le 22/04/2019, à 22:28

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

OK après tes dernières modifications
tout semble correct maintenant j'écris depuis ce clavier normalisé
j'avais pas encore appréhendé les avantages et les défauts de ce clavier mais maintenant je vais pouvoir cerner les choses.
en première approche les touches accessibles immédiatement (niveau1)

@àéèê()‘'«»'^   première ligne les accents sont là; parenthèses et guillemets conjoints; double frappe sur la dernier
azertyuiop-+     deuxième ligne le - et le + conjoints
qsdfghjklm/*      troisième ligne le / et le * conjoints juste sous le - et le + : idéal
<wxcvbn.,:;       quatrième ligne le point et la virgule conjoints : idéal
 
Avec shift (niveau2)
#1234567890"¨ double frappe sur la derniére touche pour avoir le tréma
AZERTYUIOP–±
QSDFGHJKLM÷½
>WXCVBN?!…=

Avec capslock (niveau3)
@1234567890'^
AZERTYUIOP-+
QSDFGHJKLM/*
<WXCVBN.,:;

avec AltGr (niveau4)
˘§´`&[]¯_“”°ˇ         plusieurs touches doubles (première 2 3 7mais pas8 +) 
检®{}ù˙œ%−†  une seule touche double i
θß$¤μj|∞√×          deux touches mortes h et k
|ʒ©ç¸~¿¡·≃           |ʒʒ©ç¸~¿¡·≃ une touche morte b et deux touches doubles v et n

avec ALTGR + shift (niveau5)
ÀÉÈÊ˝—‹›°
Æ™Ụ̀Œ‰‑‡
ẞ¯¼
¦ƷDz,≠

ALTGR ET CAPSLOCK (niveau6)
˘§´`&[]¯_“”°ˇ
Æ£€®{}Ù˙Œ%−†
Θß$¤ΜJ|∞√×
|Ʒ©Ç¸~¿¡·≃

on se fait très vite aux avantages des accents regroupés
je reste dubitatif sur l'accès  aux niveau5 et 6 mais bon tout est question d'habitude

Dernière modification par eric63 (Le 22/04/2019, à 22:31)


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#12 Le 23/04/2019, à 00:46

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonsoir

Donc, si je comprends bien, tout marche. Tu as essuyé les plâtres, ce dont je te remercie.

La nécessité d'appuyer deux fois sur une touche pour produire certains caractères provient du fait qu'est associé à la touche un signe diacritique destiné a être composé avec le caractère produit par la touche appuyée après. Cette composition est décrite dans un autre fichier, le fichier de composition. Et c'est dans ce fichier qu'est indiqué ce qui doit être produit lorsque un signe diacritique se succède à lui-même.

Je ne suis pas vraiment en phase avec toi sur la signification des niveaux.

Dans le fichier qui définit les correspondances entre les touches et les caractères, je n'ai jamais inscrit plus de 4 caractères, par exemple

AD07 u U ù Ù

u est le caractère de niveau 1, touche utilisée seule
U celui de niveau 2, touche utilisée conjointement avec majuscule
ù celui de niveau 3, touche utilisée conjointement avec AltGr
Ù celui de niveau 4, touche utilisée conjointement avec majuscule et AltGr.

La touche verrouillage majuscule ne permet pas de définir des niveaux supplémentaires. Il me semble qu'elle n'a d'effet que sur les touches alphabétiques, ce qui veut dire que ce verrouillage majuscule présent lors de l'utilisation d'une touche non alphabétique produit le caractère de niveau 1, ou celui de niveau 3 si AltGr est utilisée simultanément. Il me semble aussi qu'est considérée comme alphabétique une touche dont le niveau 1 est alphabétique, sauf à être déclarée comme telle.

Sur une touche alphabétique, l'emploi simultané de la touche majuscule et de la touche verrouillage majuscule permet de produire le caractère de niveau 1, ou le niveau 3 si AltGr est utilisée simultanément. Et bien sûr, sur une touche non alphabétique, il produit le caractère niveau 2, ou le caractère de niveau 4 puisque dans ce cas là, verrouillage majuscule n'a aucun effet, c'est-à-dire est totalement ignoré.

Les niveaux 5, 6, 7 et 8 nécessitent la définition d'une touche modificatrice supplémentaire, qui permet la mise en correspondance de chaque touche non plus avec 4 caractères seulement, mais potentiellement avec 8 caractères.

Enfin, la déclaration d'une touche comme à demi alphabétique signifie que verrouillage majuscule n'a d'effet que sur les niveaux 1 et 2.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#13 Le 23/04/2019, à 13:32

eric63

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

merçi pour tes précisions, c‘est vrai que ce que je nomme niveau est inaproprié, je voulais surtout apporter une différenciation par rapport aux touches appuyées
reste plus qu‘à me coller des sticks de touches pour repérer comme il faut

Dernière modification par eric63 (Le 23/04/2019, à 13:33)


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

Hors ligne

#14 Le 23/04/2019, à 14:18

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

reste plus qu‘à me coller des sticks de touches pour repérer comme il faut

.

C'est effectivement indispensable. C'est ce que j'ai fait lorsque j'ai décidé de passer au bépo. Je les ai supprimés depuis, et, je frappe des deux mains en regardant mon écran. Et je me trompe si par malheur je regarde mon clavier.


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#15 Le 13/12/2019, à 02:53

ojinaso

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonjour Arbiel,
Tout d'abord félicitions pour le travail fourni.
Quelques remarques :

  • Pas nécessaire de copier le script ucg dans un répertoire du PATH : "./ucg clavier " suffit.

  • Effectivement les dépendances sont importantes ; il me manquait "yad".

  • J‘ai acheté un clavier respectant la norme NF Z71.

  • Le seul souci est lors de la saisie du mot de passe au démarrage de Ubuntu car le disque est chiffré avec crypsetup.
    Durant le boot la configuration du clavier n‘est pas encore effective.

Encore une fois bravo pour le code.


Le pire est toujours sur, mais il n'est jamais décevant!

Hors ligne

#16 Le 17/12/2019, à 12:17

Arbiel

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Bonjour ojinaso

Je te remercie de ton retour, et je suis satisfait que ce script ait pu te rendre service.

Pour ce qui concerne l'ouverture des partitions chiffrées, je suis surpris que tu aies des difficultés. Le choix du clavier devrait persister au delà des arrêts du PC.

Pour ma part, j'ai enregistré mes clés de chiffrement sur une clé USB, en fait sur plusieurs clés pour parer à la perte ou la destruction toujours possible, ce qui rend mon PC inexploitable lorsqu'aucune de ces clés n'est branchée au démarrage. J'ai poussé le vice jusqu'à utiliser comme clé des fichiers binaires, et je n'ai aucune saisie à effectuer pour démarrer.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#17 Le 13/01/2020, à 10:34

didrocks

Re : Clavier "azerty amélioré", et également grec polytonique, façon bépo

Pour information, je viens de pousser le support official dans la prochaine ubuntu 20.04 pour éviter d'avoir à le faire à la main smile

Hors ligne