Créer et utiliser un agencement de clavier personnalisé

Cette page décrit la méthode à appliquer pour ajouter un agencement de clavier personnalisé à ceux déjà fournis par défaut, et le faire prendre en compte par le système pour qu'il puisse être utilisé de la même manière que les autres, y compris par les outils graphiques.

Elle ne présente néanmoins que les grandes lignes de la méthode et la page « Exemple de création d'un agencement de clavier personnalisé » illustre plus profondément et concrètement les détails de la démarche à suivre.

La lecture de cette page ainsi que celle de l'exemple nécessite la compréhension d'un certain nombre de concepts qui sont présentés sur la page « Comprendre la configuration du clavier ».

A qui s'adresse cette page ?

Cette page s'adresse prioritairement aux personnes qui doivent revoir en profondeur l'affectation des touches de leur clavier. Ce peut être le cas des linguistes, qui doivent rédiger des textes multilingues ou des textes dans des langues anciennes ou exotiques, mais aussi le cas de scientifiques qui doivent faire appel à des symboles spécialisés qui reviennent souvent.
Cette façon de procéder est de nature à leur éviter le recours à des combinaisons de touches compliquées et qu'il leur faut mémoriser.

Néanmoins, ceci peut aussi intéresser des utilisateurs ayant des besoins plus limités comme la simple affectation ou réaffectation de quelques touches (claviers multimédia spéciaux par exemple). Dans ce dernier cas, avant d'aller plus loin, ces utilisateurs devraient s'assurer qu'un moyen plus simple n'existe pas, comme les options de l'interface graphique par exemple. Cela peut aussi s’avérer parfait pour des développeurs.

Existe-t-il des méthodes alternatives ?

Oui, il existe une autre méthode qui ressort plus de la programmation et qui consiste à ajouter des scripts de démarrage qui compilent une table de configuration que l'on a pris soin de mettre à un emplacement ad hoc.
Une information très détaillée sur la façon de mettre en oeuvre cette méthode est fournie sur cettepage de la communauté Mandriva. Cette méthode requiert néanmoins d'être adaptée à la distribution Ubuntu et présente l'inconvénient d'introduire un certain décalage entre la configuration qui est perçu par les outils graphiques et la réalité.

Pré-requis

Créer un agencement ordinaire sur quatre niveaux

La méthode pour personnaliser un agencement de clavier se décompose en deux étapes:

  1. Écrire un fichier de description de l'agencement du clavier,
  2. Faire prendre en compte votre nouvel agencement par le système afin qu'il soit sélectionnable dans la boite de dialogue visible par le menu Système → Préférences → Clavier.

Décrire l'agencement du clavier

L'agencement de clavier que vous souhaitez mettre en place sera à placer avec les droits d'administration dans le dossier /usr/share/X11/xkb/symbols.

Si vous décidez d'intervenir directement sur les fichiers standards qui sont fournis avec la distribution, avant toute manipulation, sauvegardez les fichiers que vous serez amené à modifier.

Prise en compte par le système du nouvel agencement

Ouvrez avec les droits d'administration le fichier /usr/share/X11/xkb/rules/evdev.xml et juste avant la ligne </layoutList> ajoutez le bloc suivant:

<layout>
 <configItem>
           <name>NAME</name>
          <shortDescription>DC</shortDescription>  
	    <description>DESCRIPTION</description>
           <languageList><iso639Id>LANG</iso639Id></languageList>
</configItem>
<variantList/>
</layout>

dans lequel,

  • NAME est à remplacer par le nom du fichier par exemple my_kb
  • DC est à remplacer par une courte description textuelle par exemple Bil (pour bilingue). C'est cette courte description qui apparaît à droite de l'indicateur de clavier dans l'applet de notification.
  • DESCRIPTION est à remplacer par une description plus explicite comme Bilingue français suédois. Ce texte apparaît dans les listes de variantes dans le dialogue de sélection des agencements et lorsque l'on clique sur l'indicateur de clavier de l'applet de notification.
  • LANG est à remplacer par le code de la lange dans le format de la norme ISO639.2.
Si vous vous êtes contenté de modifier un fichier de base fourni par la distribution, vous n'avez bien-sûr pas à faire ce qui précède.

Pour finir, sauvegardez le fichier avant de quitter votre session et de vous y reconnecter pour que les changements soient pris en compte.

A partir de la version 13.10 d'Ubuntu il est nécessaire d'effacer l'ensemble des fichiers *.xkm du répertoire /var/lib/xkb puis de redémarrer le système pour que les modifications de clavier soient prises en compte

Utilisez votre nouvel agencement

Pour utiliser votre nouvel agencement de clavier, rendez-vous dans le dialogue des préférences de clavier depuis le menu Système → Préférences → Clavier → onglet Agencements.
Choisissez Ajouter, puis l'onglet de sélection par langue. Rechercher la langue sous laquelle vous avez déclaré le fichier et éventuellement la variante si la langue comprend plusieurs fichiers.
Vous devriez maintenant apercevoir votre agencement dans la liste accessible par l'indicateur de clavier dans l'applet de notification général du tableau de bord.

Si votre fichier est multilingue, vous pouvez le placer sous l'une des langues ou choisir pour le paramètre LANG un code neutre tel que und pour Indéterminé

Vous devriez maintenant apercevoir votre agencement dans la liste accessible par l'indicateur de clavier dans l'applet de notification général du tableau de bord.

Créer un agencement enrichi jusqu'à huit niveaux

Introduire des touches à plus de quatre niveaux

Il existe dans le répertoire /usr/share/X11/xkb/types, un fichier level5 qui prédéfinit des types de touches à huit niveaux. Vous pourriez, bien-sûr redéfinir vos propres types de touche, mais ceux qui sont présentés là devraient suffire dans la majorité des cas.

Si par exemple, vous vouliez créer une touche E avec les niveaux suivants :

eEêÊëË

Il suffira d'écrire dans votre agencement personnalisé :

key <AD03> {
        type="EIGHT_LEVEL_ALPHABETIC",
        symbols[Group1]= [e, E, ê, Ê, €, €, ë, Ë ]
    };

Dans le cas d'une série de touches du même type, la syntaxe est la suivante :

key.type[Group1]="EIGHT_LEVEL_ALPHABETIC" ;
     key <AD03> { [e, E, ê, Ê, €, €, ë, Ë ] }; 
     key <AD04> {[r, R, paragraph, registered, , ₹, ₹ ]}; 
     key …
     
Le dernier symbole utilisé avec la touche R représente la roupie indienne :₹. Son emploi dans cet exemple, vise à présenter un moyen mnémotechnique qui consiste à utiliser la lettre initiale de la monnaie pour se souvenir de son emplacement. Un spécialiste de finances pourrait de la même manière se créer un accès facile aux différentes monnaies qu'il utilise souvent.
On notera également qu'il n'est pas nécessaire de renseigner les huit niveaux. Il est néanmoins recommandé de le faire, quitte à avoir des redondances ou à utiliser le symbole nosymbol, pour éviter toute surprise quant à l'interprétation qui en sera faite par le système

Utiliser les options graphiques pour accéder aux niveaux supérieurs

Le menu Système → Préférences → Clavier vous permet , en cliquant sur le bouton Options, d'accéder à l'option Touche(s) pour choisir le cinquième niveau 1). Vous pouvez par exemple choisir la touche logo de gauche et l'utiliser alors de la même manière que la touche Alt gr mais cette fois pour accéder au niveau 5 et non plus 3.

Créer un accès personnalisé aux niveaux hauts

Pour des raisons liées à vos critères personnels d'ergonomie ou à des singularités de votre clavier, vous pouvez vouloir utiliser une touche autre que celles proposées dans les options. Il peut vous sembler logique d'utiliser la touche Alt de gauche, car cette dernière est en position symétrique de son équivalent de droite. Cependant celle-ci ne peut être réaffectée facilement à cause du rôle qu'elle joue dans le système. Une solution serait d'utiliser l'option graphique qui consiste à la permuter avec la touche logo de gauche, puis d'affecter le changement de niveau à la touche logo (nouvelle). Malheureusement, les combinaisons d'options ne donnent pas toujours le résultat escompté, aussi serez vous amené à créer vous même cette «substitution-affectation».

L'exemple qui suit permet d' illustrer cette méthode de la «substitution-affectation» évoquée ci-dessus. Pour des explications plus détaillées, en particulier sur la démarche à suivre pour le cas général, vous devez vous reporter à cette page explicative.

Créer l'option de réaffectation des touches

Ouvrez avec les droits d'administration le fichier /usr/share/X11/xkb/symbols/altwin et ajoutez à la fin le bloc suivant:

partial modifier_keys 
xkb_symbols "my_swap_lalt_lwin" {
    key <LALT> { type[Group1] = "ONE_LEVEL",
    
                 symbols[Group1] = [ ISO_Level5_Shift ] };
    key <LWIN> {	[	Alt_L,	Meta_L		]	};
    modifier_map Mod3 {ISO_Level5_Shift  };
};
 

Utiliser l'option

Maintenant, en fin de votre agencement personnalisé, derrière la ligne :

include "level3(ralt_switch)"
 

placez la ligne suivante

include "altwin(my_swap_lalt_lwin)"
 

puis déconnectez vous pour vous re-connecter aussitôt.

Pour Ubuntu 13.10 (et suivants ?) ne pas oublier d'effacer les fichiers *.xkm

Vous devriez maintenant avoir accès aux niveaux des touches selon le tableau suivant :

Niveau 1 pas de touche modificatrice
Niveau 2
Niveau 3 Alt gr
Niveau 4 Alt gr + ⇧
Niveau 5 Alt
Niveau 6 Alt + ⇧
Niveau 7 Alt gr + Alt
Niveau 8 Alt gr + Alt + ⇧
L'option créée précédemment peut bien-sûr être placée dans un fichier séparé plutôt que dans le fichier /usr/share/X11/xkb/symbols/altwin. Dans les deux cas, pensez à les sauvegarder car, en cas de réinstallation, ils seraient irrémédiablement écrasés.

Exemple de modification d'une configuration de clavier

(Janvier 2014) Voir « Comment obtenir un clavier "à la windows", de manière à ce que la touche "CAPS-LOCK" permette d'accéder directement aux chiffres » : http://forum.ubuntu-fr.org/viewtopic.php?pid=15694341#p15694341


Contributeurs: jaaf64, fabux

1)
En anglais : "key to chose the 5th level" si votre interface n'assure pas la traduction.
  • tutoriel/creer_et_utiliser_un_agencement_de_clavier_personnalise.txt
  • Dernière modification: Le 28/04/2018, 11:24
  • (modification externe)