// Copyright (c) 1997, 1998 Guylhem Aznar <guylhem @ oeil.qc.ca> : GPL
//
// Les accents circonflexes des principales voyelles sont obtenus avec
// la touche Alt_Gr, les trmas sont obtenus par Alt_Gr + Shift.
//
//  ____                                     _________ _____________ _______
// | S A| S = Shift,  A = AltGr + Shift     | Imprime | Arrt dfil | 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 dfinitions de Alt & Control (touche) sont implicites ; n'ont donc
// t redfinis qu'Alt (nombre) & Alt + Shift (nombre) pour inverser le
// comportement par dfaut :
//
// 		touche = signe
//		touche + Shift = nombre
//
// La correspondance devient donc :
//
// 		Alt touche = Meta_nombre
//		Alt + Shift touche = Meta_signe
//
// 2. Hexadcimal : PAS SOUS X11
//
// Shift (touche du pav numrique) permet de taper de l'hxadcimal.
//
// 3. Fonctions :   PAS SOUS X11
//
// Redmarrer ou arrter l'ordinateur, sont disponibles directement au clavier
//
//		Control Alt Delete/Backspace : redmarrer
//		Control AltGr Delete/Backspace : arrter
//
// Ajouter pour ces deux fonction les lignes suivantes  /etc/inittab :
//
//		ca:12345:ctrlaltdel:/sbin/shutdown -t1 -r now
//		kb:12345:kbrequest:/sbin/halt
//
// 4. Accentuations :
//
// Les touches , , ,  & , prsentes en mode minuscule (i.e. sans shift)
// ne sont pas disponibles en mode majuscule : elles sont respectivement
// remplaces par 2, 7, 9, 0 & % ; donc pour obtenir les majuscules
// accentues , , ,  & :
//
//		* Si les dead_keys ne fonctionnaient pas (certains programmes
//		les refusent), vous pouvez toujours utiliser AltGr + Shift
//		(minuscule accentue) pour obtenir la majuscule ; pour
//		l'accent circonflexe & le trma :
//
// AltGr (voyelle) : voyelle-minuscule  accent circonflexe
// AltGr + Shift (voyelle) : voyelle-minuscule  trma
// AltGr (en dessous de la voyelle) : voyelle-majuscule  accent circonflexe
// AltGr + Shift (en dessous de la voyelle) : voyelle majuscule  trma
//
//
//		* Si les dead_keys fonctionnent, utiliser les accent dits
//		morts, i.e. fonctionnant comme l'accent circonflexe & le
//		trma des machines  crire ; sont disponibles :
//
// (^) : accent circonflexe,
// Shift+(^) : trma,
// Shift+AltGr (^) : tilde,
// AltGr (1) : accent aig,
// AltGr (7) : accent grave
//
// Pour s'en servir, procder comme avec l'accent circonflexe & le trma
// 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 franais, sans le comparer  un
// clavier amricain par dfaut : on y gagne plus de flexibilit, ce
// modle devient plus personalisable ...

    name[Group1]= "French";

    key <ESC>	{	[          Escape			]	};

    key <TLDE>	{	[         onehalf,       onequarter	],
			[   guillemotleft,  guillemotright	]	};
    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,   threequarters	]	};
    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	],
			[     ecircumflex,      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>	{	[        currency,	      cent	],
			[          dollar,	  sterling	]	};
    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			]	};
//    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 "french(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             ]       };

    key <PRSC> { type= "PC_SYSRQ", symbols[Group1]= [ Print, Execute ] };
    key <SCLK> {  [  Scroll_Lock        ]       };
    key <PAUS> { 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           ]       };

    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]       };

    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 "french(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 "french(basic)"
    key <AE12> {	[           equal,            plus	]	};
    key <AD11> {	[     asciicircum,       diaeresis	]	};
    key <AD12> {	[          dollar,        sterling	]	};
    key <AB07> {	[           comma,        question	]	};
};
