// Copyright (c) 1997, 1998 Guylhem Aznar <guylhem @ oeil.qc.ca> : GPL
// Copyright (c) 2002, 2003 Jean-Philippe Guérard <jean-philippe.guerard @ laposte.net> : GPL
//
// $Revision: 1.13 $
// $Date: 2003/12/23 21:19:39 $
//
// (An English version of this text is provided below)
//
// Ce fichier est destiné à la version 4.3 de XFree86, et aux versions
// ultérieures. Il permet d'obtenir sur un clavier français des
// caractères conformes au standard ISO-8859-15.
//
// La dernière version de ce fichier est disponible sur :
// http://corbeaunoir.org/fr_latin9
//
// La version destinée à XFree86 v4.1 et v4.2 est disponible sur : 
// http://corbeaunoir.org/fr_latin0
//
// Pour utiliser ce fichier, copiez-le dans /etc/X11/xkb/symbols/pc/
// puis modifiez l'option "XkbLayout" du fichier /etc/X11/XF86Config-4
// en lui donnant la valeur "fr_latin9" (ie le nom du fichier).
//
// ----
//
// This file is made for XFree86 version 4.3 and up. It enables 
// the use of the ISO-8859-15 encoding with a French keyboard.
// It offers a keyboard mapping close to the console keyboard mapping.
// Thus, users do not need to learn a keyboard mapping for X11 and a 
// different one for the console.
//
// The latest revision of this file is available at:
// http://corbeaunoir.org/fr_latin9
//
// A version of this file for XFree86 v4.1 and v4.2 is available at: 
// http://corbeaunoir.org/fr_latin0
//
// To use this file, please copy it to /etc/X11/xkb/symbols/pc/
// then change the "XkbLayout" option in file /etc/X11/XF86Config-4
// to the value "fr_latin9" (ie this file name).
//
// ----------------------------------------------------------------------
// Le texte des commentaires de ce fichier utilise le codage ISO-8859-15.
//
// Vous pouvez vous assurer que la police de caractère que vous utilisez
// est adaptée en vérifiant que les 2 caractères affichés ci-dessous
// correspondent bien à leur description.
//
// € -> symbole Euro
// œ -> e dans l'o (minuscule)
//
// ----------------------------------------------------------------------
// The comments below uses the ISO-8859-15 character coding.
//
// To check that you are using an appropriate character set, please
// check that the 2 characters below correspond to their respective
// description:
//
// € -> Euro currency symbol
// œ -> Lower-case oe character
// ----------------------------------------------------------------------
//
// Guide d'utilisation
// -------------------
//  ____                                     _________ _____________ _______
// | M A| M = Maj.,   A = AltGr + Maj.      | Imprime | Arrêt défil | Pause |
// | n a| n = 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 ¶| ^ ~| $ ¢| <-' |
//  ===================================================================¬    |
// | Verr. | 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  | ?  | .  | /  | §  |         |
// |  Maj. | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡|   Maj.  |
//  ========================================================================
// |      |      |     |                        |       |      |     |      |
// | Ctrl | Méta | Alt | Espace EspaceInsécable | AltGr | Multi|Menu | Ctrl |
//  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯
//
// Comment obtenir les caractères accentués ?
// ------------------------------------------
//
// Il est possible d'obtenir les caractères accentués de différentes 
// façons :
//
// 1) Les caractères accentués présents au clavier (é, è, ç, à et ù) 
//    sont disponibles en majuscule via :
//    [AltGr] +  [Maj.] + [minuscule accentuée]
//
// 2) Il est possible d'obtenir les accents via des touches mortes.
//    Ces touches n'entraînent pas l'affichage d'un caractère, mais
//    vont modifier le prochain caractère entré :
//
//              [^] : accent circonflexe,
//     [Maj.] + [^] : tréma,
//    [AltGr] + [^] : tilde,
//    [AltGr] + [1] : accent aigu,
//    [AltGr] + [7] : accent grave
//
//    Par exemple :
//
//    [AltGr] + [1] puis       [e]      ->  é
//    [AltGr] + [1] puis  [Maj.] + [e]  ->  É
//
// 3) Touche [composer]
//
// La touche [composer] est une touche spéciale, servant à combiner les 
// 2 caractères qui la suivent.
//
// La touche Windows de droite est utiliser comme touche [composer].
//
// Par exemple :
//
// [composer] puis      [']      puis      [e]       ->  é
// [composer] puis      [']      puis  [Maj.] + [e]  ->  É
// [composer] puis      [,]      puis      [c]       ->  ç
// [composer] puis      [o]      puis      [e]       ->  œ
// [composer] puis  [Maj.] + [O] puis  [Maj.] + [E]  ->  Œ
//
// 4) Les trémas et accents circonflexes peuvent être obtenus via :
//
//  [AltGr] +          [voyelle] : minuscule circonflexe
//  [AltGr] + [Maj.] + [voyelle] : minuscule tréma
//  [AltGr] +          [caractère sous la voyelle] : majuscule circonflexe
//  [AltGr] + [Maj.] + [caractère sous la voyelle] : majuscule tréma
//
//  Il y a deux exceptions :
//  [AltGr] + [e] donne l'euro €
//  [AltGr] + [$] donne ê 
//

partial default alphanumeric_keys
xkb_symbols "basic" {

    name[Group1]= "French";

    key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";

    key <TLDE> { [              oe,             OE, leftdoublequotemark, rightdoublequotemark ] };
    key <AE01> { [       ampersand,              1,          dead_acute,       periodcentered ] };
    key <AE02> { [          eacute,              2,          asciitilde,               Eacute ] };
    key <AE03> { [        quotedbl,              3,          numbersign,               zcaron ] };
    key <AE04> { [      apostrophe,              4,           braceleft,               Zcaron ] };
    key <AE05> { [       parenleft,              5,         bracketleft,               scaron ] };
    key <AE06> { [           minus,              6,                 bar,               Scaron ] };
    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,           Ydiaeresis ] };
 
    key <AD01> { [               a,              A,         acircumflex,           adiaeresis ] };
    key <AD02> { [               z,              Z,               aring,                Aring ] };
    key <AD03> { [               e,              E,            EuroSign,           ediaeresis ] };
    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,            quoteleft ] };
    key <AD11> { [ dead_circumflex, dead_diaeresis,          dead_tilde,           quoteright ] };
    key <AD12> { [          dollar,       sterling,                cent,          ecircumflex ] };

    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 <LSGT> { [           less,         greater,                 bar,             NoSymbol ] };
    key <AB01> { [               w,              W,       guillemotleft,             NoSymbol ] };
    key <AB02> { [               x,              X,      guillemotright,             NoSymbol ] };
    key <AB03> { [               c,              C,           copyright,             NoSymbol ] };
    key <AB04> { [               v,              V,          registered,             NoSymbol ] };
    key <AB05> { [               b,              B,              ssharp,             NoSymbol ] };
    key <AB06> { [               n,              N,             notsign,             NoSymbol ] };
    key <AB07> { [           comma,       question,        questiondown,             NoSymbol ] };
    key <AB08> { [       semicolon,         period,            multiply,             NoSymbol ] };
    key <AB09> { [           colon,          slash,            division,             NoSymbol ] };
    key <AB10> { [          exclam,        section,          exclamdown,             NoSymbol ] };
    key <BKSL> { [        asterisk,             mu,       threesuperior,                  yen ] };

    key <SPCE> { type[Group1]="FOUR_LEVEL",
                 [           space,          space,        nobreakspace,         nobreakspace ] };

// Nous inhibons volontairement le second sens de AltGr (touche composition « Multi_Key »).
// En effet, ce choix de touche n'est pas très heureux, le résultat 
// variant selon l'ordre précis des touches.

    key <RALT> { type[Group1]="ONE_LEVEL",
                 [ ISO_Level3_Shift                                                           ] };

    modifier_map Mod5 { ISO_Level3_Shift };


// Du fait de cette modification, X devrait produire l'avertissement suivant au démarrage :
//
// The XKEYBOARD keymap compiler (xkbcomp) reports:
// > Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
// >                   Ignoring extra symbols
//

    key <RWIN> { type[Group1]="TWO_LEVEL",
                 [       Multi_key,  ISO_Next_Group                                           ] };

};

partial alphanumeric_keys 
xkb_symbols "nodeadkeys" {
    include "fr_latin9(basic)"
    key <AE01>  { [       ampersand,             1,          apostrophe,       periodcentered ] };
    key <AE07>  { [          egrave,             7,               grave,               Egrave ] };
    key <AD11>  { [     asciicircum,     diaeresis,          asciitilde,           quoteright ] };
};