// Copyright (c) 1997, 1998 Guylhem Aznar <guylhem @ oeil.qc.ca> : GPL
// Copyright (c) 2002, 2003 Jean-Philippe Guérard <jean-philippe.guerard @ tigreraye.org> : GPL
//
// $Revision: 1.3.1.2 $
// $Date: 2003/12/23 21:24:07 $
//
// Ce fichier est destiné aux versions 4.1 et 4.2 de XFree86.
// Il permet d'obtenir sur un clavier français des caractères
// conformes au standard ISO-8859-15.
//
// Pour utiliser ce fichier, copiez-le dans /etc/X11/xkb/symbols/
// puis modifiez l'option "XkbLayout" du fichier /etc/X11/XF86Config-4
// en lui donnant la valeur "fr_latin0" (ie le nom du fichier).
//
// This file is made for XFree86 version 4.1 and 4.2. 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.
//
// To use this file, please copy it to /etc/X11/xkb/symbols/
// then change the "XkbLayout" option in file /etc/X11/XF86Config-4
// to the value "fr_latin0" (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)
// ----------------------------------------------------------------------
//
// Guide d'utilisation
// -------------------
//
// 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 | Meta | Alt  | Space    Nobreakspace | AltGr | Multi|Menu | Ctrl |
//  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯
//
// 1. Control & Alt
//
// Les définitions de Alt & Control (touche) sont implicites ; n'ont donc
// été redéfinis qu'Alt (nombre) & Alt + Shift (nombre) pour inverser le
// comportement par défaut :
//
//              touche = signe
//              touche + Shift = nombre
//
// La correspondance devient donc :
//
//              Alt touche = Meta_nombre
//              Alt + Shift touche = Meta_signe
//
// 2. Hexadécimal : PAS SOUS X11
//
// Shift (touche du pavé numérique) permet de taper de l'héxadécimal.
//
// 3. Fonctions :   PAS SOUS X11
//
// Redémarrer ou arrêter l'ordinateur, sont disponibles directement au clavier
//
//              Control Alt Delete/Backspace : redémarrer
//              Control AltGr Delete/Backspace : arrêter
//
// Ajouter pour ces deux fonctions les lignes suivantes à /etc/inittab :
//
//              ca:12345:ctrlaltdel:/sbin/shutdown -t1 -r now
//              kb:12345:kbrequest:/sbin/halt
//
// 4. Accentuations :
//
// Les touches é, è, ç, à et ù, présentes en mode minuscule (i.e. sans 
// shift) ne sont pas disponibles en mode majuscule : elles sont 
// respectivement remplacées par 2, 7, 9, 0 et % ; donc pour obtenir les 
// majuscules accentuées É, È, Ç, À & Ù:
//
//              * Si les touches mortes ne fonctionnaient pas (certains
//              programmes les refusent), vous pouvez toujours utiliser
//              AltGr + Shift (minuscule accentuée) pour obtenir la
//              majuscule ; pour l'accent circonflexe et le tréma :
//
// AltGr (voyelle) : voyelle-minuscule à accent circonflexe
// AltGr + Shift (voyelle) : voyelle-minuscule à tréma
// AltGr (en dessous de la voyelle) : voyelle-majuscule à accent circonflexe
// AltGr + Shift (en dessous de la voyelle) : voyelle majuscule à tréma
//
// Seule exception : AltGr (e) donnant l'euro €, AltGr + Shift ($) donne ê 
//
//              * Si les touches mortes fonctionnent, utiliser les
//              accents dits « morts », i.e. fonctionnant comme l'accent
//              circonflexe & le tréma des machines à écrire ; sont
//              disponibles :
//
// (^) : accent circonflexe,
// Shift+(^) : tréma,
// AltGr (^) : tilde,
// AltGr (1) : accent aigu,
// AltGr (7) : accent grave
//
// Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma
// sur les vielles machines à écrire :
//
// AltGr (1) puis e : é
// Shift+AltGr (1) puis e : É ...

partial hidden alphanumeric_keys modifier_keys 
xkb_symbols "basic" {
// Description *TOTALE* d'un clavier français, sans le comparer à un
// clavier américain par défaut : on y gagne plus de flexibilité, ce
// modèle devient plus personnalisable ...

    name[Group1]= "French";

    key <ESC>   {       [          Escape                       ]       };

    key <TLDE>  {       [              oe,              OE      ],
                        [   guillemotleft,  guillemotright      ]       };
    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 <BKSP>  {       [       BackSpace                       ]       };

    key  <TAB>  {       [             Tab,    ISO_Left_Tab      ]       };

    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 <RTRN>  {       [          Return                       ]       };

    key <CAPS>  {       [       Caps_Lock                       ]       };

    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 <LFSH>  {       [          Shift_L                      ]       };

    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                       ]       };
    key <BKSL>  {       [        asterisk,              mu      ],
                        [   threesuperior,             yen      ]       };
    key <LCTL>  {       [       Control_L                       ]       };
    key <SPCE>  {       [           space,           space      ],
                        [    nobreakspace,    nobreakspace      ]       };
//    key <RALT> {        [       Alt_R,  Meta_R                ]       };
    key <RALT> {        [ Mode_switch,  Multi_key               ]       };

    modifier_map Shift  { Shift_L };
    modifier_map Lock   { Caps_Lock };
    modifier_map Control{ Control_L };
    modifier_map Mod3   { Mode_switch };
};

default
xkb_symbols "pc102" {
    include "fr_latin0(basic)"
    key <RTSH> {        [        Shift_R             ]       };
    key <LALT> {        [       Alt_L,  Meta_L       ]       };
    key <RCTL> {        [        Control_R           ]       };

    key <FK01> {        [        F1, F11             ]       };
    key <FK02> {        [        F2, F12             ]       };
    key <FK03> {        [        F3, F13             ]       };
    key <FK04> {        [        F4, F14             ]       };
    key <FK05> {        [        F5, F15             ]       };
    key <FK06> {        [        F6, F16             ]       };
    key <FK07> {        [        F7, F17             ]       };
    key <FK08> {        [        F8, F18             ]       };
    key <FK09> {        [        F9, F19             ]       };
    key <FK10> {        [       F10, F20             ]       };
    key <FK11> {        [       F11, F21             ]       };
    key <FK12> {        [       F12, F22             ]       };

    // Begin "Editing" section
    key <PRSC> {
        type= "PC_SYSRQ",
        symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SYRQ> {
        type= "PC_SYSRQ",
        symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SCLK> {  [  Scroll_Lock        ]       };
    key <PAUS> {
        type= "PC_BREAK",
        symbols[Group1]= [ Pause, Break ]
    };
    key <BRK> {
        type= "PC_BREAK",
        symbols[Group1]= [ Pause, Break ]
    };
    key  <INS> {        [  Insert               ]       };
    key <HOME> {        [  Home                 ]       };
    key <PGUP> {        [  Prior                ]       };
    key <DELE> {        [ Delete                ]       };
    key  <END> {        [  End                  ]       };
    key <PGDN> {        [  Next                 ]       };

    key   <UP> {        [  Up                   ]       };
    key <LEFT> {        [  Left                 ]       };
    key <DOWN> {        [  Down                 ]       };
    key <RGHT> {        [  Right                ]       };

    // End "Editing" section, begin "Keypad"
    key <NMLK> {        [  Num_Lock, Pointer_EnableKeys         ]       };
    key <KPDV> {        [  KP_Divide            ]       };
    key <KPMU> {        [  KP_Multiply          ]       };
    key <KPSU> {        [  KP_Subtract          ]       };

    key  <KP7> {        [  KP_Home,     KP_7    ]       };
    key  <KP8> {        [  KP_Up,       KP_8    ]       };
    key  <KP9> {        [  KP_Prior,    KP_9    ]       };
    key <KPAD> {        [       KP_Add          ]       };

    key  <KP4> {        [  KP_Left,     KP_4    ]       };
    key  <KP5> {        [  KP_Begin,    KP_5    ]       };
    key  <KP6> {        [  KP_Right,    KP_6    ]       };

    key  <KP1> {        [  KP_End,      KP_1    ]       };
    key  <KP2> {        [  KP_Down,     KP_2    ]       };
    key  <KP3> {        [  KP_Next,     KP_3    ]       };
    key <KPEN> {        [       KP_Enter        ]       };

    key  <KP0> {        [  KP_Insert,   KP_0    ]       };
    key <KPDL> {        [ KP_Delete, KP_Decimal ]       };
    // End "Keypad" section

    modifier_map Shift  { Shift_R };
    modifier_map Control{ Control_R };
    modifier_map Mod1   { Alt_L, Alt_R };
    modifier_map Mod2   { Num_Lock };
    modifier_map Mod5   { Scroll_Lock };
};

xkb_symbols "pc105" {
include "fr_latin0(pc102)"
    key <LWIN> {        [       Meta_L, Meta_R  ]       };
    key <RWIN> {        [       Multi_key       ]       };
    key <MENU> {        [       Menu            ]       };

    modifier_map Mod1   { Alt_L, Alt_R };
    modifier_map Mod4   { Meta_L, Meta_R };
};

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