Bonsoir,
C'est fait.
J'ai fait comme ça
#!/bin/bash
###################################################
# Ce fichier est à utiliser avec la commande sudo #
###################################################
# Définition des fichiers #
evdev="/usr/share/X11/xkb/rules/evdev.xml"
mykbd="/usr/share/X11/xkb/symbols/fr"
# Sauvegarde des fichiers #
[ ! -f $evdev.sauv ] && cp $evdev $evdev.sauv
[ ! -f $mykbd.sauv ] && cp $mykbd $mykbd.sauv
# Traitement du fichier evdev.xml #
# Recherche le ligne précédant le bloc à insérer #
((ligne_temp=$(grep -n -m1 '<description>French<\/description>' $evdev | cut -d: -f1)+1))
((ligne=$(tail -n+$ligne_temp $evdev | grep -n -m1 '<\/variantList>' | cut -d: -f1)+$ligne_temp-1))
# Insertion du bloc #
sed -i "$ligne"i"\ \ \ \ \ \ \ \ <variant>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ <configItem>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ \ \ <name>win_fr<\/name>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ \ \ <description>Français (style Windows)<\/description>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ \ \ <languageList>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ \ \ \ \ <iso639Id>fr<\/iso639Id>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ \ \ <\/languageList>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ \ \ <\/configItem>" $evdev
((ligne=$ligne+1))
sed -i "$ligne"i"\ \ \ \ \ \ \ \ <\/variant>" $evdev
# Ajout du bloc à la fin du fichier fr #
echo >>$mykbd
echo "// For windows style behavior" >>$mykbd
echo >>$mykbd
echo "partial default alphanumeric_keys" >>$mykbd
echo "xkb_symbols \"win_fr\" {" >>$mykbd
echo >>$mykbd
echo " include \"latin\"" >>$mykbd
echo >>$mykbd
echo " name[Group1]=\"Français (style Windows)\";" >>$mykbd
echo >>$mykbd
echo " key <AE01> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ ampersand, 1, onesuperior, exclamdown ] };" >>$mykbd
echo " key <AE02> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ eacute, 2, asciitilde, oneeighth ] };" >>$mykbd
echo " key <AE03> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ quotedbl, 3, numbersign, sterling ] };" >>$mykbd
echo " key <AE04> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [apostrophe, 4, braceleft, dollar ] };" >>$mykbd
echo " key <AE05> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ parenleft, 5, bracketleft, threeeighths ] };" >>$mykbd
echo " key <AE06> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ minus, 6, bar, fiveeighths ] };" >>$mykbd
echo " key <AE07> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ egrave, 7, grave, seveneighths ] };" >>$mykbd
echo " key <AE08> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [underscore, 8, backslash, trademark ] };" >>$mykbd
echo " key <AE09> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ ccedilla, 9, asciicircum, plusminus ] };" >>$mykbd
echo " key <AE10> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ agrave, 0, at, degree ] };" >>$mykbd
echo " key <AE11> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [parenright, degree, bracketright, questiondown ] };" >>$mykbd
echo " key <AE12> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ equal, plus, braceright, dead_ogonek ] };" >>$mykbd
echo >>$mykbd
echo " key <AD01> { [ a, A, ae, AE ]};" >>$mykbd
echo " key <AD02> { [ z, Z, guillemotleft, less ]};" >>$mykbd
echo " key <AD03> { [ e, E, EuroSign, cent ]};" >>$mykbd
echo " key <AD11> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] };" >>$mykbd
echo " key <AD12> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ dollar, sterling, currency, dead_macron ] };" >>$mykbd
echo >>$mykbd
echo " key <AC01> { [ q, Q, at, Greek_OMEGA ]};" >>$mykbd
echo " key <AC10> { [ m, M, mu, masculine ]};" >>$mykbd
echo " key <AC11> { [ ugrave, percent, dead_circumflex, dead_caron]};" >>$mykbd
echo " key <TLDE> { [twosuperior, asciitilde, notsign, notsign ]};" >>$mykbd
echo >>$mykbd
echo " key <BKSL> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ asterisk, mu, dead_grave, dead_breve ] };" >>$mykbd
echo " key <AB01> { [ w, W, lstroke, Lstroke ]};" >>$mykbd
echo " key <AB07> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ comma, question, dead_acute, dead_doubleacute ] };" >>$mykbd
echo " key <AB08> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ semicolon, period, horizconnector, multiply ] };" >>$mykbd
echo " key <AB09> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ colon, slash, periodcentered, division ] };" >>$mykbd
echo " key <AB10> { type[group1] = \"FOUR_LEVEL_SEMIALPHABETIC\", [ exclam, section, dead_belowdot, dead_abovedot ] };" >>$mykbd
echo >>$mykbd
echo " include \"level3(ralt_switch)\"" >>$mykbd
echo "};" >>$mykbd
exit 0
C'est pas la peine de commenter la "qualité" du code, c'est du "one shot". 😉 🙂
Amicalement.
Jean-Marie