129 lines
7.8 KiB
Plaintext
129 lines
7.8 KiB
Plaintext
//------------------------------------------------------------------------------
|
||
// XKB Custom french keyboard (flawless)
|
||
// 2012-10-30
|
||
//------------------------------------------------------------------------------
|
||
|
||
// Installation: copy this file to '/usr/{local/,}share/X11/xkb/symbols'. You
|
||
// can use it by selecting the "frex" layout from Xorg configuration file, or by
|
||
// using the following command:
|
||
|
||
// setxkbmap frex
|
||
|
||
// This is used to fix the conflicts generated by chain-includes from original
|
||
// files.
|
||
|
||
// List of common issues
|
||
// * Right-Ctrl does not behave like Left-Ctrl.
|
||
// * A lot of warning are reported by setxkbmap (you can see them in the TTY).
|
||
// * Ctrl+Space generates a space instead of ^@ (which is used by Emacs).
|
||
|
||
partial default alphanumeric_keys
|
||
xkb_symbols "basic" {
|
||
|
||
// Default for latin languages.
|
||
include "latin"
|
||
|
||
// Original "level3(ralt_switch)" is messy, so we use our own one (see below).
|
||
include "frex(ralt_switch)"
|
||
|
||
// Not very useful?
|
||
include "nbsp(level4n)"
|
||
|
||
// Useless if you do not have level5 keys.
|
||
// include "level5(rctrl_switch)"
|
||
|
||
// Not so common keypad. Might be messy.
|
||
// include "keypad(oss)"
|
||
|
||
// Here follows the Xorg "oss" variant of the french keyboard.
|
||
name[Group1]="French (alternative)";
|
||
|
||
// 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 ] }; // ! § ¡ −
|
||
|
||
};
|
||
|
||
|
||
|
||
// RALT (a.k.a. Alt_Gr) modifier.
|
||
//
|
||
// The Xorg issue comes from 'symbol/pc(pc104)' where RALT is defined as a
|
||
//
|
||
// type[Group1]="TWO_LEVEL"
|
||
//
|
||
// whereas it is defined as a
|
||
//
|
||
// type[Group1]="ONE_LEVEL"
|
||
//
|
||
// in 'level3'. Since we do not want to change the original file, there is two
|
||
// possible fixes:
|
||
//
|
||
// * Instead of using 'level3', we use our own TWO_LEVEL definition.
|
||
//
|
||
// * We use our own reimplementation of pc104. The user needs to specify the new
|
||
// geometry explicitely, either in Xorg config or with setxkbmap.
|
||
//
|
||
// TODO: if the next section is put before the alphabetical section, it messes up. Why?
|
||
|
||
partial modifier_keys
|
||
xkb_symbols "ralt_switch" {
|
||
key <RALT> {
|
||
type[Group1]="TWO_LEVEL",
|
||
symbols[Group1] = [ ISO_Level3_Shift , ISO_Level3_Shift ]
|
||
};
|
||
modifier_map Mod5 { ISO_Level3_Shift };
|
||
};
|