Activation du clavier dans X.org

De Disposition de clavier francophone et ergonomique bépo.


Cette page vous indique comment paramétrer X.Org pour utiliser la disposition de clavier de votre choix dès l'écran de connexion.

Sommaire


Configuration directe de X.org

Tous les réglages se font dans le fichier de configuration de X.org : /etc/X11/xorg.conf. (Depuis la version 1.8, il est également possible de mettre cette configuration dans un fichier /etc/X11/xorg.conf.d/20-keymap.conf) En tant qu'administrateur (ou root), faites une sauvegarde du fichier de configuration, puis éditez-le :

cd /etc/X11
cp xorg.conf xorg.conf.backup
gedit xorg.conf

Recherchez la section ressemblant à :

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "pc105"
        Option          "XkbLayout"     "fr"
        Option          "XkbVariant"    "oss"
EndSection

Remplacez la valeur définie pour l’option XkbVariant par celle définie pour xkb_symbols (fichier fr). Par exemple :

       Option          "XkbVariant"    "bepo"

Basculer le layout à la volée

Il est possible de configurer deux layouts claviers dans X.Org, et de passer d'une disposition à l'autre en appuyant simultanément sur les deux touches Majuscules. De plus, le voyant Scroll Lock (ou « Arrêt defil ») du clavier s'allume lorsque la seconde disposition clavier est active. Cette configuration est très pratique lorsqu'on souhaite passer le clavier à une personne qui ne connait pas le BÉPO.

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "pc105"
        Option          "XkbLayout"     "fr,fr"
        Option          "XkbVariant"    "oss,bepo"
        Option          "XkbOptions"    "grp:shift_toggle,grp_led:scroll"
EndSection

Activer les touches mortes

Les touches mortes devraient fonctionner simplement avec l'installation (manuelle ou avec les paquets) des touches mortes.

Il est quand même possible d'avoir des problèmes avec certaines applications, en particulier les applications basées sur gtk. Si c'est le cas, référez-vous à la page « Que faire si ~/.XCompose n'est pas reconnu ? ».

Avec hal (déprécié depuis xorg-server 1.8) , X.org à partir de la version 7.4

Attention : pour Debian et Ubuntu, cette technique ne fonctionne pas directement. Voir la section ci-dessous.

Depuis la version 7.4 de X.Org (version 1.5.3 de xorg-server), la détection du matériel de saisie, et donc du clavier, se fait par l'intermédiaire de hal. Le choix de la disposition du clavier se fait dans le fichier /etc/hal/fdi/policy/10osvendor/10-keymap.fdi.

À l'aide de votre éditeur de texte préféré, modifiez les deux lignes suivantes :

<merge key="input.xkb.layout" type="string">fr</merge>
<merge key="input.xkb.variant" type="string" />

en :

<merge key="input.xkb.layout" type="string">fr</merge>
<merge key="input.xkb.variant" type="string">bepo</merge>

Disposition différente par clavier

Attention : pour Debian et Ubuntu, cette technique ne fonctionne pas directement. Voir la section ci-dessous.

L'utilisation de hal permet facilement de configurer une disposition différente par clavier. Par exemple, pour avoir un clavier Logitech en azerty, et un Typematrix en bépo, il suffit de créer un fichier dans /etc/hal/fdi/policy/ (appelé 10-keymap.fdi par exemple) qui contiendra :

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
 <device>
   <match key="info.capabilities" contains="input.keymap">
     <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
   </match>
 
    <match key="info.capabilities" contains="input.keys">
     <merge key="input.xkb.rules" type="string">base</merge>
 
     <!-- If we're using Linux, we use evdev by default (falling back to
          keyboard otherwise). -->
     <merge key="input.xkb.model" type="string">keyboard</merge>
     <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
            string="Linux">  
       <merge key="input.xkb.model" type="string">evdev</merge>
     </match>
 
     <match key="info.product" string="TypeMatrix.com USB Keyboard">
             <merge key="input.xkb.layout" type="string">fr</merge>
             <merge key="input.xkb.variant" type="string">bepo</merge>
     </match>
     <match key="info.product" string="Logitech USB Receiver">
             <merge key="input.xkb.layout" type="string">fr</merge>
             <merge key="input.xkb.variant" type="string">oss</merge>
     </match>
   </match>
 </device>
</deviceinfo>

Note importante pour les utilisateurs Debian et Ubuntu

Debian et Ubuntu ont unifié la gestion du clavier de X11 et de la console. Il n'est donc plus nécessaire de configurer hal, le clavier se configurant dans le fichier /etc/default/keyboard. L'exemple ci-dessous montre comment faire.

# Si vous changez une des variables suivantes, et si HAL et X sont
# configurés pour utiliser ce fichier, alors les modifications ne
# seront visibles pour X que si HAL est redémarré.  Avec Debian vous
# devez exécuter /etc/init.d/hal restart
 
# Les variables suivantes décrivent votre clavier et peuvent avoir les
# mêmes valeurs que les options XkbModel, XkbLayout, XkbVariant et
# XkbOptions du /etc/X11/xorg.conf.
 
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="bepo"
XKBOPTIONS=""
 
# Si vous ne voulez pas utiliser la configuration XKB sur la console,
# vous pouvez utilisez une keymap alternative. Assurez vous quel soit
# accessible avant que /usr soit monté.
# KMAP=/etc/console-setup/defkeymap.kmap.gz


Vous pouvez aussi désactiver console-setup explicitement. L'exemple ci-dessous montre comment faire (/etc/hal/fdi/policy/preferences.fdi).

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
 <device>
    <!-- prevent console-setup automagic -->
    <match key="input.xkb.layout" exists="true">
      <remove key="info.callouts.add" type="strlist">debian-setup-keyboard</remove>
    </match>
    <!-- set layout for TypeMatrix -->
    <match key="info.capabilities" contains="input.keys">
      <match key="info.product" contains="TypeMatrix">
        <merge key="input.xkb.layout" type="string">fr</merge>
        <merge key="input.xkb.variant" type="string">bepo</merge>
      </match>
    </match>
    <!-- use console-setup automagic for the other keyboard -->
    <match key="info.product" contains_not="TypeMatrix">
      <append key="info.callouts.add" type="strlist">debian-setup-keyboard</append>
    </match>
  </device>
</deviceinfo>

Dispositions différentes par clavier depuis xorg-server 1.8 (sans HAL)

Xorg depuis la version 7.4 n'utilise plus HAL pour configurer les périphériques d'entrée (souris, clavier, etc.). À la place, Xorg utilise les paramètres du fichier xorg.conf, ou bien dans les fichiers d'un répertoire xorg.conf.d.

Sous Debian (Squeeze), Ubuntu (Karmic, Lucid) ou Fedora, les fichiers de configuration fournis par la distribution se trouvent dans le répertoire /usr/share/X11/xorg.conf.d/. On peut remplacer ces paramètres par défaut en plaçant des fichiers de configuration dans /etc/X11/xorg.conf.d/.

Pour avoir deux claviers avec deux dispositions différentes, on va simplement indiquer des paramètres particuliers pour le clavier Bépo dans /etc/X11/xorg.conf.d/.

Changer le nom de périphérique du clavier Bépo avec udev

Créer un fichier /etc/udev/rules.d/typematrix.rules dont le contenu est (pour un clavier Typematrix USB) :

ATTRS{name}=="TypeMatrix.com USB Keyboard", NAME="input/typematrix"

En branchant le clavier, ce dernier apparaîtra en tant que /dev/input/typematrix au lieu de /dev/input/eventXX.

Configuration de Xorg

Créer si nécessaire le répertoire /etc/X11/xorg.conf.d/ et écrire dans le fichier /etc/X11/xorg.conf.d/typematrix.conf :

Section "InputClass"
        # Identifiant que l'on peut choisir soi-même
        Identifier "Typematrix Bepo"
 
        MatchIsKeyboard "on"
 
        # Le nom de périphérique correspond au nom que l'on a donné via udev
        MatchDevicePath "/dev/input/typematrix"
 
        Driver "evdev"
 
        # On choisit la disposition fr-bépo
        Option "XkbRules"  "xorg"
        Option "XkbModel"  "pc105"
        Option "XkbLayout" "fr"
        Option "XkbVariant" "bepo"
EndSection

Plugin de configuration du clavier sous Gnome

Le programme gnome-settings-daemon possède un plugin qui configure lui-même la disposition du clavier, sans respecter la configuration donnée par Xorg. Pour l'empêcher de réduire vos efforts à néant, il faut désactiver ce plugin via gconf-editor, en modifiant la clef /apps/gnome_settings_daemon/plugins/keyboard.