Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:creer_et_utiliser_un_agencement_de_clavier_personnalise [Le 03/11/2019, 00:36]
zococo [Un script si vous avez à répéter l'opération]
tutoriel:creer_et_utiliser_un_agencement_de_clavier_personnalise [Le 12/12/2022, 13:37] (Version actuelle)
L'Africain [Utilisez votre nouvel agencement]
Ligne 4: Ligne 4:
 ====== Créer et utiliser un agencement de clavier personnalisé ====== ====== 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. ​+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 << [[tutoriel:​exemple_de_creation_d_un_agencement_clavier_personnalise|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. Elle ne présente néanmoins que les grandes lignes de la méthode et la page << [[tutoriel:​exemple_de_creation_d_un_agencement_clavier_personnalise|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.
Ligne 14: Ligne 14:
 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. 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. ​+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. Cela peut aussi s’avérer parfait pour des développeurs.
 ===== Existe-t-il des méthodes alternatives ? ===== ===== Existe-t-il des méthodes alternatives ? =====
Ligne 55: Ligne 55:
   * **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.   * **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.   * **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 [[http://​www.loc.gov/​standards/​iso639-2/​php/​English_list.php|norme ISO639.2]].+  * **LANG** est à remplacer par le code de la langue ​dans le format de la [[http://​www.loc.gov/​standards/​iso639-2/​php/​English_list.php|norme ISO639.2]].
  
 Pour finir, [[:​tutoriel:​comment_modifier_un_fichier|sauvegardez le fichier]] avant de quitter votre session et de vous y reconnecter pour que les changements soient pris en compte. Pour finir, [[:​tutoriel:​comment_modifier_un_fichier|sauvegardez le fichier]] avant de quitter votre session et de vous y reconnecter pour que les changements soient pris en compte.
Ligne 61: Ligne 61:
 Il est nécessaire ensuite d'​effacer l'​ensemble des fichiers *.xkm du répertoire ///​var/​lib/​xkb//​ puis de redémarrer le système pour que les modifications qui précèdent soient prises en compte. Il est nécessaire ensuite d'​effacer l'​ensemble des fichiers *.xkm du répertoire ///​var/​lib/​xkb//​ puis de redémarrer le système pour que les modifications qui précèdent soient prises en compte.
  
-<note important>​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.</​note>​+<note important>​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.</​note>​
  
  
Ligne 71: Ligne 71:
 <note tip>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é</​note>​ <note tip>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é</​note>​
  
-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.+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. Un redémarrage peut être nécessaire.
  
 ===== Créer un agencement enrichi jusqu'​à huit niveaux ===== ===== Créer un agencement enrichi jusqu'​à huit niveaux =====
Ligne 102: Ligne 102:
 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». 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 [[tutoriel:​comprendre_la_configuration_du_clavier|page explicative]]. ​+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 [[tutoriel:​comprendre_la_configuration_du_clavier|page explicative]].
  
 === Créer l'​option de réaffectation des touches === === Créer l'​option de réaffectation des touches ===
 [[:​tutoriel:​comment_modifier_un_fichier|Ouvrez avec les droits d'​administration]] le fichier **/​usr/​share/​X11/​xkb/​symbols/​altwin** et ajoutez à la fin le bloc suivant: [[:​tutoriel:​comment_modifier_un_fichier|Ouvrez avec les droits d'​administration]] le fichier **/​usr/​share/​X11/​xkb/​symbols/​altwin** et ajoutez à la fin le bloc suivant:
 <​file>​ <​file>​
-partial modifier_keys ​+partial modifier_keys
 xkb_symbols "​my_swap_lalt_lwin"​ { xkb_symbols "​my_swap_lalt_lwin"​ {
     key <​LALT>​ { type[Group1] = "​ONE_LEVEL",​     key <​LALT>​ { type[Group1] = "​ONE_LEVEL",​
Ligne 141: Ligne 141:
 ===== Exemples de modification d'une configuration de clavier ===== ===== Exemples de modification d'une configuration de clavier =====
 ==== Un clavier « à la windows » ==== ==== Un clavier « à la windows » ====
-(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 » sur ce [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=15694341#​p15694341|fil de discussion]]. ​+(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 » sur ce [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=15694341#​p15694341|fil de discussion]].
  
 ==== Un script si vous avez à répéter l'​opération ==== ==== Un script si vous avez à répéter l'​opération ====
-Si vous avez à répéter l'​opération, ​le script ci-dessous permet ​de créer une variante de clavier ​français selon un agencement très particulier (au cas d'​espèce,​ décalage des touches de la rangée du bas du clavier pour récupérer < et > qui avaient migré ​sur un tout petit clavier).+Si vous avez à répéter l'​opération, ​il peut être intéressant ​de créer une variante de clavier ​qui correspond à vos besoins. Vous trouverez ​un exemple ​sur le [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2045333|forum]].
  
-Le script ​+Il est ainsi possible d' ​
-  * intègre ​une variante à l’intérieur du fichier des claviers français /​usr/​share/​X11/​xkb/​symbols/​fr (ajout en fin de fichier). +  * intégrer ​une variante à l’intérieur du fichier des claviers français /​usr/​share/​X11/​xkb/​symbols/​fr (ajout en fin de fichier). 
-  * insère ​le renvoi à cette variante dans le fichier /​usr/​share/​X11/​xkb/​rules/​evdev.xml,​ en fin de section <​variantList>​ du groupe des claviers français.+  * insérer ​le renvoi à cette variante dans le fichier /​usr/​share/​X11/​xkb/​rules/​evdev.xml,​ en fin de section <​variantList>​ du groupe des claviers français.
  
 Après redémarrage du système, la variante est disponible dans les paramètres de clavier. Après redémarrage du système, la variante est disponible dans les paramètres de clavier.
-<​code>​ 
-#!/bin/bash 
- 
-# Copie de sauvegarde & initialisation (avec un test pour être certain de en pas perdre le tout premier fichier issu de l'​installation) 
-   ​FichierClavierAModifier="/​usr/​share/​X11/​xkb/​symbols/​fr"​ 
-   ​FichierListeDesClaviersAModifier="/​usr/​share/​X11/​xkb/​rules/​evdev.xml"​ 
-   ​ext="​.anc"​ 
- 
- i=0; while [[ -f "​$FichierClavierAModifier""​$ext""​$i"​ ]]; do let "​i++";​ done 
- if [[ -f "​$FichierClavierAModifier""​$ext"​ ]]; then 
- sudo cp "​$FichierClavierAModifier"​ "​$FichierClavierAModifier""​$ext""​$i"​ 
- else 
- sudo cp "​$FichierClavierAModifier"​ "​$FichierClavierAModifier""​$ext"​ 
- fi 
- 
- 
- i=0; while [[ -f "​$FichierListeDesClaviersAModifier""​$ext""​$i"​ ]]; do let "​i++";​ done 
- if [[ -f "​$FichierListeDesClaviersAModifier""​$ext"​ ]]; then 
- sudo cp "​$FichierListeDesClaviersAModifier"​ "​$FichierListeDesClaviersAModifier""​$ext""​$i"​ 
- else 
- sudo cp "​$FichierListeDesClaviersAModifier"​ "​$FichierListeDesClaviersAModifier""​$ext"​ 
- fi 
- 
-# ------------------------------------------------------ 
- 
-usage () { #​ Information sur le script, utilisation et résultats attendus 
- local status=${1} 
- echo ""​ 
- echo "​ $(basename $0)" 
- echo ""​ 
- echo "​ Modifie les paramètres des fichiers $FichierClavierAModifier et $FichierListeDesClaviersAModifier pour ajouter une variante de clavier adaptée à l'​appareil."​ 
- echo ""​ 
- echo "​ Version 0.0 - 02/​11/​2019"​ 
- echo ""​ 
- echo "​ "​ 
- echo ""​ 
- echo " Exemple :" 
- echo " ----------"​ 
- echo " ​ $(basename $0) " 
- 
- exit "​${1}"​ 
-} 
- 
-# ------------------------------------------------------ 
- 
- if [[ "​${1}"​ == "​-h"​ ]] || [[ "​${1}"​ == "​-help"​ ]] || [[ "​${1}"​ == "​--help"​ ]] || [[ "​${1}"​ == "​--aide"​ ]] || [[ "​${1}"​ == "​-a"​ ]]; then  
- usage 
- fi 
- 
-# Insertion de la nouvelle variante en fin de fichier clavier FichierClavierAModifier 
-# ----------------------------------------------------------------------------------- 
- 
- NvFichierClavier=$(mktemp) 
- cp "​$FichierClavierAModifier"​ "​$NvFichierClavier"​ 
- 
-   sudo echo " 
-partial alphanumeric_keys 
-xkb_symbols \"​Clavier_personnalise\"​ { 
-    include \"​fr(basic)\"​ 
- 
-    name[Group1]=\"​French\";​ 
- 
-        key <​AB01>​ { [         less, greater, guillemotleft,​ guillemotright ] }; 
-        key <​AB02>​ { [         w, W, lstroke, ​  ​Lstroke  ​                   ] }; 
-        key <​AB03>​ { [         x, X, dead_acute, dead_doubleacute  ​       ] }; 
-        key <​AB04>​ { [         c, C,  copyright, ​        ​cent  ​           ] }; 
-        key <​AB05>​ { [         v, V,    diamond, ​ leftradical  ​           ] }; 
-        key <​AB06>​ { [         b, B,     ​ssharp, ​  ​horizconnector  ​       ] }; 
-        key <​AB07>​ { [         n, N,  dead_tilde, ​ asciitilde  ​           ] }; 
-        key <​AB08>​ { [     ​comma, ​ question, exclamdown, ​ questiondown  ​   ] }; 
-        key <​AB09>​ { [ semicolon, ​ period, VoidSymbol, ​ periodcentered  ​   ] }; 
-        key <​AB10>​ { [     ​colon, ​ slash, ​   exclam, ​   section  ​           ] }; 
-};" >> "​$NvFichierClavier"​ 
- 
-# Remplacement de l'​ancien fichier 
- sudo mv "​$NvFichierClavier"​ "​$FichierClavierAModifier"​ 
- sudo chmod ga+r "​$FichierClavierAModifier"​ 
- sudo chmod u+rw "​$FichierClavierAModifier"​ 
- sudo chown root:root "​$FichierClavierAModifier"​ 
- 
-# Modification de la liste des variantes dans FichierListeDesClaviersAModifier 
-# ---------------------------------------------------------------------------- 
- 
-# Trouve le numéro de ligne de la 1ere occurence de <​name>​fr</​name>​ 
-   ​NumLigneBlocFr=$(grep -ne "<​name>​fr</​name>"​ -m 1 "​$FichierListeDesClaviersAModifier"​ | cut -d: -f1) 
- 
-# Compte le nb de lignes 
-   ​NbLignesFichier=$(wc -l "​$FichierListeDesClaviersAModifier"​ | cut -d' ' -f1) 
-   let "​NbLignesApresDebutBlocFr=$NbLignesFichier-$NumLigneBlocFr"​ 
- 
-# Repère la fin de la liste des variantes 
-   ​NumLigneFinVariantes=$(tail -n "​$NbLignesApresDebutBlocFr"​ "​$FichierListeDesClaviersAModifier"​ | grep -ne "</​variantList>"​ -m 1 | cut -d: -f1) 
-   let "​NumLigneFinVariantes=$NumLigneBlocFr+$NumLigneFinVariantes+1"​ 
- 
-# Création du nouveau fichier par insertion de la nouvelle variante 
-   let "​NbLignesQuiPrecedent=$NumLigneFinVariantes-1"​ 
-   let "​NbLignesQuiSuivent=$NbLignesFichier-$NbLignesQuiPrecedent+1"​ 
- 
-   ​fichierTEMP=$(mktemp) 
- 
-   head -n "​$NbLignesQuiPrecedent"​ "​$FichierListeDesClaviersAModifier"​ > "​$fichierTEMP" ​  # ​ début inchangé 
-   echo " ​       <​variant>​ 
-          <​configItem>​ 
-            <​name>​Clavier_personnalise</​name>​ 
-            <​description>​Français disposition spécifique personnalisée</​description>​ 
-            <​languageList>​ 
-               <​iso639Id>​fra</​iso639Id>​ 
-            </​languageList>​ 
-          </​configItem>​ 
-        </​variant>"​ >> "​$fichierTEMP" ​             #  nouvelle variante 
-   tail -n "​$NbLignesQuiSuivent"​ "​$FichierListeDesClaviersAModifier"​ >> "​$fichierTEMP" ​   #  fin inchangée 
- 
-# Remplacement de l'​ancien par le nouveau 
-   sudo mv "​$fichierTEMP"​ "​$FichierListeDesClaviersAModifier"​ 
- sudo chmod ga+r "​$FichierListeDesClaviersAModifier"​ 
- sudo chmod u+rw "​$FichierListeDesClaviersAModifier"​ 
- sudo chown root:root "​$FichierListeDesClaviersAModifier"​ 
- 
-# réinitialisation claviers -> j'ai laissé la ligne (cf discussion) mais l'​opération ne semble plus nécessaire 
-# ------------------------- 
-# sudo rm /​var/​lib/​xkb/​*.xkm 
- 
-# Information 
-# ----------- 
- 
- zenity --info --text="​Nouveau clavier intégré dans la liste des variantes.\nVeuillez redémarrer le système puis vous reconnecter pour que le nouveau clavier soit pris en compte.\nLe changement de clavier se fait ensuite dans le dialogue des préférences de clavier.\nEn cas de problème, essayer de désactiver le pavé numérique (Fn+Insert)"​ 
- echo -e "​Nouveau clavier intégré dans la liste des variantes.\nVeuillez redémarrer le système puis vous reconnecter pour que le nouveau clavier soit pris en compte.\nLe changement de clavier se fait ensuite dans le dialogue des préférences de clavier.\nEn cas de problème, essayer de désactiver le pavé numérique (Fn+Insert)"​ 
- 
-exit 0; 
-</​code>​ 
- 
-Ce script a été testé avec succès en 2019 sur une installation Xenial Xerus 16.04. 
  
 <​note>​ <​note>​
-  * Le nom de la variante ​(dans l'​exemple « Clavier_personnalise ») doit être identique dans les 2 fichiers et dépourvu d'​espaces et d'​accents. +  * Le nom de la variante ​ doit être identique dans les 2 fichiers et dépourvu d'​espaces et d'​accents. 
-  * Dans la liste des claviers, c'est la description (<​description>​Français disposition spécifique personnalisée</​description>​) du fichier evdev.xml qui sera mentionnée et triée par ordre alphabétique, ​d'où l'​importance ​de commencer celle-ci ​par le mot « Français ». Dans le fichier les autres variantes sont identifiées « French » puis traduites automatiquement mais cela n'est pas le cas des variantes personnalisées,​ sauf probablement à intervenir dans les locales ce qui est probablement très « pur » mais pas très utile (sauf peut-être pour un constructeur de clavier).+  * Dans la liste des claviers, c'est la description (<​description>​Français disposition spécifique personnalisée</​description>​) du fichier evdev.xml qui sera mentionnée et triée par ordre alphabétique. Si vous souhaitez repérer votre variante dans la liste des claviers françaisil est important ​de débuter sa description ​par le mot « Français ». Dans le fichier ​fourni par la distribution ​les autres variantes sont identifiées « French » puis traduites automatiquement mais cela n'est pas le cas des variantes personnalisées,​ sauf probablement à intervenir ​ailleurs (dans les locales ​?) ce qui est probablement très « pur » mais pas très utile (sauf peut-être pour un constructeur de clavier).
   * Il est très utile de mentionner le groupe pour le classement dans la liste des nombreux claviers.   * Il est très utile de mentionner le groupe pour le classement dans la liste des nombreux claviers.
   * La ligne « include \"​fr(basic)\"​ » en début de fichier des claviers est absolument nécessaire,​ au risque de se retrouver avec un clavier dont seules les touches modifiées sont affectées.   * La ligne « include \"​fr(basic)\"​ » en début de fichier des claviers est absolument nécessaire,​ au risque de se retrouver avec un clavier dont seules les touches modifiées sont affectées.
Ligne 293: Ligne 161:
 === === === ===
 ---- ----
-//​Contributeurs:​ [[:​utilisateurs:​jaaf64]],​ [[:​utilisateurs:​fabux]], [[:​utilisateurs:​zococo]]//+//​Contributeurs:​ [[:​utilisateurs:​jaaf64]],​ [[:​utilisateurs:​fabux]]//​
  • tutoriel/creer_et_utiliser_un_agencement_de_clavier_personnalise.1572737813.txt.gz
  • Dernière modification: Le 03/11/2019, 00:36
  • par zococo