web-dev-qa-db-fra.com

La variante de clavier personnalisée (pour la translittération de l'arabe) ne fonctionne pas

J'ai essayé de configurer une configuration de clavier personnalisée dans Ubuntu 18.04.1 LTS pour pouvoir écrire une translittération en arabe à des fins scientifiques (voir: https://en.wikipedia.org/wiki/Romanization_of_Arabic ; - https://en.wikipedia.org/wiki/DIN_31635 ) Par conséquent, je dois être capable de taper des caractères spéciaux.

J'ai plus ou moins suivi ces instructions:

Ce que j'ai fait:

  1. Quand je parle allemand, j'ai ouvert "de" dans/usr/share/X11/xkb/symboles/avec les privilèges gedit et root.

  2. Dans ce fichier, j'ai inséré le texte suivant à la fin et enregistré (effectué une sauvegarde de l'original auparavant):

    // Deutsch mit orientalistischer Umschrift
    partial alphanumeric_keys
    xkb_symbols "german_orient" {
    
        include "de(basic)"
    
        name[Group1]="Deutsch (Orientalistische Umschrift)";
    
        key <BKSL> { [numbersign, apostrophe, U+02BE,   dead_breve ]    };
        key <AE12>  { [dead_acute, dead_Grave, U+02BF,  dead_ogonek ]   };
        key <AC11>  { [adiaeresis, Adiaeresis, U+0304, dead_caron ] };
        key <AB10>  { [minus, underscore, U+0331, emdash ] };
        key <AC10>  { [odiaeresis, Odiaeresis, U+0307, dead_belowdot ] };
        key <AB09>  { [period, colon, U+0323, division ] };
        key <AB08>  { [comma, semicolon, U+030C, multiply   ] };
        key <AC06>  { [h, H, U+032E, NoSymbol ] };
    };
    

    En comparaison avec la configuration de clavier standard en allemand pour chaque touche répertoriée ici, la troisième entrée (= en appuyant sur la touche avec AltGr) a été modifiée en fonction de mes besoins. BTW j'ai obtenu les codes Unicode en recherchant les caractères spéciaux sur Internet.

  3. Puis j'ai ouvert evdev.xml dans /usr/share/X11/xkb/rules/ de la même manière

  4. Dans ce fichier, j'ai recherché l'entrée de (allemand) modèle et ai inséré à sa fin (c'est-à-dire avant </layout>) ce qui suit et a sauvegardé le fichier:

    <variant>
     <configItem>
     <name>german_orient</name>
     <description>Deutsch (Orientalistische Umschrift)</description>
     </configItem>
    </variant>
    
  5. Ensuite, j'ai tapé la commande suivante dans le terminal et appuyé sur Entrée Sudo dpkg-reconfigure xkb-data parce que dans de nombreux tutoriels sur le sujet, il est conseillé de le faire

  6. Ensuite, j'ai redémarré.

  7. Ensuite, j'ai ajouté le nouveau clavier "Deutsch (Orientalistische Umschrift)" (qui signifie: allemand (translittération orientaliste) dans Ubuntu Preferences

Le résultat n'était pas comme je l'avais espéré:

Non seulement je n’ai pas pu écrire les caractères spéciaux avec les clés que j’avais assignées. J'imagine que j'ai en quelque sorte "cassé" la disposition du clavier "de" car peu importe si j'ai activé la disposition allemande standard ou la "Deutsch (Orientalistische Umschrift)" - disposition via super + espace, le système semblait être retombé sur le clavier anglais par défaut disposition. Ainsi, même si l'une des mises en page allemandes était activée, les lettres que j'avais écrites étaient conformes à la présentation anglaise (par exemple, les lettres "z" et "y" étaient remplacées).

Donc, à la fin, j'ai annulé mes modifications en utilisant les sauvegardes des deux fichiers que j'avais faits et maintenant tout est rentré dans l'ordre.

Mais comme je dois être capable d'écrire rapidement la translittération de l'arabe à des fins professionnelles et qu'il existe - du moins à ma connaissance - aucune disposition de clavier à cette fin disponible pour le téléchargement (car le nombre de spécialistes dans ce domaine utilisant Linux est assez petit ) J'ai besoin de l'aide de quelqu'un ici pour me dire ce qu'il faut changer pour que ma disposition de clavier personnalisée fonctionne.

Je suis toujours un noob sous Linux, donc désolé d'avoir manqué quelque chose d'évident. Quoi qu'il en soit, merci d'avance pour votre aide!

Mise à jour: J'ai trouvé une solution moi-même

J'ai moi-même trouvé une solution et je vais la poster ici car quelqu'un d'autre pourrait en profiter

Installez KeyboardLayoutEditor et éditez le fichier de disposition de clavier

  1. J'ai téléchargé et installé KeyboardLayoutEditor depuis https://github.com/simos/keyboardlayouteditor

    • Lorsque j'ai essayé de l'exécuter, j'ai remarqué qu'il manquait certains paquets que je devais installer en premier et qui ne figuraient pas parmi les exigences.
  2. Exécutez KeyboardLayoutEditor et chargez un fichier de disposition de langage approprié (de dans mon cas)

    • Ensuite, choisissez la variante que vous voulez éditer (dans mon cas, "basique" car je pensais avoir commis une erreur en ajoutant ma propre variante)
  3. Cliquez ensuite sur le bouton "Démarrer la carte" qui chargera Gucharmap (je devais d'abord l'installer via Ubuntu Software Center pour que cela fonctionne)

  4. Choisissez maintenant le caractère que vous souhaitez ajouter à une certaine clé (vous pouvez également rechercher des signes dans Gucharmap en saisissant des codes Unicode).

  5. Et faites-le glisser vers l'une des 4 positions d'une clé appropriée dans KeyboardLayoutEditor (voir ci-dessous pour le code final)

    • BTW je pense que l'application fait quelques erreurs ici. En faisant glisser certains caractères sur une certaine clé, le code unicode correct n'a pas été écrit dans le fichier de retrait mais un nom du caractère de touche morte correspondant. (Par exemple, il a écrit "dead_belowdot" au lieu de U0323, bien que j'ai choisi ce dernier caractère dans Gucharmap et que je l'ai fait glisser. Je suppose que c'est un bogue.
    • Le résultat était
      • qu'avec ces caractères spéciaux de touche morte, je devais les taper EN PREMIER, PUIS la lettre que je voulais leur faire apparaître en haut ou en bas.
      • les autres caractères insérés avec le code unicode correct pourraient être saisis en tapant EN PREMIER la lettre puis PUIS le caractère spécial que je voulais ajouter au-dessus ou au-dessous. C'est le comportement auquel je suis habitué, alors j'ai essayé de corriger les versions de touche morte:
    • Ma solution a été d'éditer manuellement le fichier de remplacement en remplaçant toutes les versions de clé morte insérées à tort par le code unicode correct pour la version de caractère combinée. Maintenant, je peux taper une lettre puis ajouter le caractère spécial.
  6. Lorsque vous avez inséré tous les caractères dont vous avez besoin, vous pouvez enregistrer le fichier.

    • Dans mon cas, KeyboardLayoutEditor n'a pas simplement sauvegardé les modifications apportées à la variante "de base" à l'intérieur du "fichier", mais a écrasé l'ensemble du "fichier", supprimant ainsi toutes les autres variantes.
    • Bien que je pense que je n'ai pas besoin des autres variantes, je n'aimais pas ça. J'ai donc copié le code que KeyboardLayoutEditor a écrit dans le de-fichier dans mon de_backup en remplaçant la section "basic", puis enregistré de_backup en tant que "de" en remplaçant l'ancien "de".
    • le fichier evdev.xml ne doit pas être modifié cette fois, car une variante existante a été modifiée; aucune nouvelle variante/mise en page ne doit donc être ajoutée au fichier.
  7. Puis j'ai utilisé la commande Sudo dpkg-reconfigure xkb-data dans la console

  8. Enfin j'ai fait un redémarrage

Résultat: tout fonctionne comme un charme maintenant! :)

Quelques idées

Je ne sais pas pourquoi cela a fonctionné cette fois en utilisant KeyboardLayoutEditor.

  1. Ma première hypothèse est que cela a fonctionné parce que je n'ai pas essayé d'ajouter une nouvelle variante au clavier-Layout-file (de), mais en ai modifié une existante, évitant ainsi certaines erreurs éventuelles lors de la modification du de-fichier et du evdev-xml.

  2. Ma deuxième hypothèse est que cela a fonctionné, car l'éditeur KeyboardLayout a écrit des codes Unicode différents de ceux que j'avais lors de la première modification manuelle du fichier de suppression.

    • Par exemple, le code unicode que j'ai inséré ressemblait à ceci: U + 02BE
    • Le code unicode écrit par l'application ressemble à ceci: U02BE
    • Peut-être en laissant de côté le "+" cela a fonctionné? Comme je suis un noob, je ne sais pas.
    • Certaines personnes bien informées pourraient voir une cause différente dans le code ci-dessous.

Le code qui a fonctionné que j'ai inséré dans le fichier de disposition du clavier (de dans mon cas)

(Ceci est la version finale où les erreurs faites par l'application sont déjà corrigées manuellement par moi)

//////////////////////////////////////////////////////////////////////////////    ///
//
// Generated keyboard layout file with the Keyboard Layout Editor.
// For more about the software, see http://code.google.com    /p/keyboardlayouteditor
//

xkb_symbols "basic"
{
    name[Group1] = "German";
    include "latin(type4)"
    include "level3(ralt_switch)"
    include "kpdl(comma)"
key <AB01> { [              y,              Y, guillemotright,          U203A ] }; // y Y » › 
key <AB02> { [              x,              X,  guillemotleft,          U2039 ] }; // x X « ‹ 
key <AB04> { [              v,              V, doublelowquotemark, singlelowquotemark ] }; // v V „ ‚ 
key <AB05> { [              b,              B, leftdoublequotemark, leftsinglequotemark ] }; // b B “ ‘ 
key <AB06> { [              n,              N, rightdoublequotemark, rightsinglequotemark ] }; // n N ” ’ 
key <AB08> { [          comma,      semicolon,     U030C,       multiply ] }; // , ; Dˇ × 
key <AB09> { [         period,          colon,  U0323,       division ] }; // . : D? ÷ 
key <AB10> { [          minus,     underscore,          U0331,         emdash ] }; // - _ ̱ — 
key <AC02> { [              s,              S,          U017F,          U1E9E ] }; // s S ſ ẞ 
key <AC06> { [       h,       H,          U032E                 ] }; //   ̮ 
key <AC07> { [              j,              J,  dead_belowdot,  dead_abovedot ] }; // j J D? D˙ 
key <AC10> { [     odiaeresis,     Odiaeresis,  U0307,  dead_belowdot ] }; // ö Ö D˙ D? 
key <AC11> { [     adiaeresis,     Adiaeresis,    U0304,     dead_caron ] }; // ä Ä Dˉ Dˇ 
key <AD03> { [              e,              E,       EuroSign,       EuroSign ] }; // e E € € 
key <AD06> { [              z,              Z,      leftarrow,            yen ] }; // z Z ← ¥ 
key <AD11> { [     udiaeresis,       Udiaeresis, dead_diaeresis, dead_abovering ] }; // ü  D¨ D˚ 
key <AD12> { [           plus,       asterisk,     asciitilde,         macron ] }; // + * ~ ¯ 
key <AE02> { [           KP_2,       quotedbl,    twosuperior,      oneeighth ] }; // 2 " ² ⅛ 
key <AE03> { [           KP_3,        section,  threesuperior,       sterling ] }; // 3 § ³ £ 
key <AE04> { [           KP_4,         dollar,     onequarter,       currency ] }; // 4 $ ¼ ¤ 
key <AE11> { [         ssharp,       question,      backslash,   questiondown ] }; // ß ? \ ¿ 
key <AE12> { [     dead_acute,     dead_Grave,          U02BF,    dead_ogonek ] }; // D´ D` ʿ D˛ 
key <BKSL> { [     numbersign,     apostrophe,          U02BE,     dead_breve ] }; // # ' ʾ D˘ 
key <LSGT> { [           less,        greater,            bar, dead_belowmacron ] }; // < > | Dˍ 
key <TLDE> { [ dead_circumflex,         degree,          U2032,          U2033 ] }; // D^ ° ′ ″ 
};
1
Poldi

Mise à jour: J'ai trouvé une solution moi-même

J'ai moi-même trouvé une solution et je vais la poster ici car quelqu'un d'autre pourrait en profiter

Installez KeyboardLayoutEditor et éditez le fichier de disposition de clavier

  1. J'ai téléchargé et installé KeyboardLayoutEditor depuis https://github.com/simos/keyboardlayouteditor

    • Lorsque j'ai essayé de l'exécuter, j'ai remarqué qu'il manquait certains paquets que je devais installer en premier et qui ne figuraient pas parmi les exigences.
  2. Exécutez KeyboardLayoutEditor et chargez un fichier de disposition de langage approprié (de dans mon cas)

    • Ensuite, choisissez la variante que vous voulez éditer (dans mon cas, "basique" car je pensais avoir commis une erreur en ajoutant ma propre variante)
  3. Cliquez ensuite sur le bouton "Démarrer la carte" qui chargera Gucharmap (je devais d'abord l'installer via Ubuntu Software Center pour que cela fonctionne)

  4. Choisissez maintenant le caractère que vous souhaitez ajouter à une certaine clé (vous pouvez également rechercher des signes dans Gucharmap en saisissant des codes Unicode).

  5. Et faites-le glisser vers l'une des 4 positions d'une clé appropriée dans KeyboardLayoutEditor (voir ci-dessous pour le code final)

    • BTW je pense que l'application fait quelques erreurs ici. En faisant glisser certains caractères sur une certaine clé, le code unicode correct n'a pas été écrit dans le fichier de retrait mais un nom du caractère de touche morte correspondant. (Par exemple, il a écrit "dead_belowdot" au lieu de U0323, bien que j'ai choisi ce dernier caractère dans Gucharmap et que je l'ai fait glisser. Je suppose que c'est un bogue.
    • Le résultat était
      • qu'avec ces caractères spéciaux de touche morte, je devais les taper EN PREMIER, PUIS la lettre que je voulais leur faire apparaître en haut ou en bas.
      • les autres caractères insérés avec le code unicode correct pourraient être saisis en tapant EN PREMIER la lettre puis PUIS le caractère spécial que je voulais ajouter au-dessus ou au-dessous. C'est le comportement auquel je suis habitué, alors j'ai essayé de corriger les versions de touche morte:
    • Ma solution a été d'éditer manuellement le fichier de remplacement en remplaçant toutes les versions de clé morte insérées à tort par le code unicode correct pour la version de caractère combinée. Maintenant, je peux taper une lettre puis ajouter le caractère spécial.
  6. Lorsque vous avez inséré tous les caractères dont vous avez besoin, vous pouvez enregistrer le fichier.

    • Dans mon cas, KeyboardLayoutEditor n'a pas simplement sauvegardé les modifications apportées à la variante "de base" à l'intérieur du "fichier", mais a écrasé l'ensemble du "fichier", supprimant ainsi toutes les autres variantes.
    • Bien que je pense que je n'ai pas besoin des autres variantes, je n'aimais pas ça. J'ai donc copié le code que KeyboardLayoutEditor a écrit dans le de-fichier dans mon de_backup en remplaçant la section "basic", puis enregistré de_backup en tant que "de" en remplaçant l'ancien "de".
    • le fichier evdev.xml ne doit pas être modifié cette fois, car une variante existante a été modifiée; aucune nouvelle variante/mise en page ne doit donc être ajoutée au fichier.
  7. Puis j'ai utilisé la commande Sudo dpkg-reconfigure xkb-data dans la console

  8. Enfin j'ai fait un redémarrage

Résultat: tout fonctionne comme un charme maintenant! :)

Quelques idées

Je ne sais pas pourquoi cela a fonctionné cette fois en utilisant KeyboardLayoutEditor.

  1. Ma première hypothèse est que cela a fonctionné parce que je n'ai pas essayé d'ajouter une nouvelle variante au clavier-Layout-file (de), mais en ai modifié une existante, évitant ainsi certaines erreurs éventuelles lors de la modification du de-fichier et du evdev-xml.

  2. Ma deuxième hypothèse est que cela a fonctionné, car l'éditeur KeyboardLayout a écrit des codes Unicode différents de ceux que j'avais lors de la première modification manuelle du fichier de suppression.

    • Par exemple, le code unicode que j'ai inséré ressemblait à ceci: U + 02BE
    • Le code unicode écrit par l'application ressemble à ceci: U02BE
    • Peut-être en laissant de côté le "+" cela a fonctionné? Comme je suis un noob, je ne sais pas.
    • Certaines personnes bien informées pourraient voir une cause différente dans le code ci-dessous.

Mise à jour: Selon Gunnar Hjalmarsson, ma deuxième hypothèse pourrait probablement être correcte, le problème étant les signes +

Le code qui a fonctionné que j'ai inséré dans le fichier de disposition du clavier (de dans mon cas)

(Ceci est la version finale où les erreurs faites par l'application sont déjà corrigées manuellement par moi)

//////////////////////////////////////////////////////////////////////////////    ///
//
// Generated keyboard layout file with the Keyboard Layout Editor.
// For more about the software, see http://code.google.com    /p/keyboardlayouteditor
//

xkb_symbols "basic"
{
    name[Group1] = "German";
    include "latin(type4)"
    include "level3(ralt_switch)"
    include "kpdl(comma)"
key <AB01> { [              y,              Y, guillemotright,          U203A ] }; // y Y » › 
key <AB02> { [              x,              X,  guillemotleft,          U2039 ] }; // x X « ‹ 
key <AB04> { [              v,              V, doublelowquotemark, singlelowquotemark ] }; // v V „ ‚ 
key <AB05> { [              b,              B, leftdoublequotemark, leftsinglequotemark ] }; // b B “ ‘ 
key <AB06> { [              n,              N, rightdoublequotemark, rightsinglequotemark ] }; // n N ” ’ 
key <AB08> { [          comma,      semicolon,     U030C,       multiply ] }; // , ; Dˇ × 
key <AB09> { [         period,          colon,  U0323,       division ] }; // . : D? ÷ 
key <AB10> { [          minus,     underscore,          U0331,         emdash ] }; // - _ ̱ — 
key <AC02> { [              s,              S,          U017F,          U1E9E ] }; // s S ſ ẞ 
key <AC06> { [       h,       H,          U032E                 ] }; //   ̮ 
key <AC07> { [              j,              J,  dead_belowdot,  dead_abovedot ] }; // j J D? D˙ 
key <AC10> { [     odiaeresis,     Odiaeresis,  U0307,  dead_belowdot ] }; // ö Ö D˙ D? 
key <AC11> { [     adiaeresis,     Adiaeresis,    U0304,     dead_caron ] }; // ä Ä Dˉ Dˇ 
key <AD03> { [              e,              E,       EuroSign,       EuroSign ] }; // e E € € 
key <AD06> { [              z,              Z,      leftarrow,            yen ] }; // z Z ← ¥ 
key <AD11> { [     udiaeresis,       Udiaeresis, dead_diaeresis, dead_abovering ] }; // ü  D¨ D˚ 
key <AD12> { [           plus,       asterisk,     asciitilde,         macron ] }; // + * ~ ¯ 
key <AE02> { [           KP_2,       quotedbl,    twosuperior,      oneeighth ] }; // 2 " ² ⅛ 
key <AE03> { [           KP_3,        section,  threesuperior,       sterling ] }; // 3 § ³ £ 
key <AE04> { [           KP_4,         dollar,     onequarter,       currency ] }; // 4 $ ¼ ¤ 
key <AE11> { [         ssharp,       question,      backslash,   questiondown ] }; // ß ? \ ¿ 
key <AE12> { [     dead_acute,     dead_Grave,          U02BF,    dead_ogonek ] }; // D´ D` ʿ D˛ 
key <BKSL> { [     numbersign,     apostrophe,          U02BE,     dead_breve ] }; // # ' ʾ D˘ 
key <LSGT> { [           less,        greater,            bar, dead_belowmacron ] }; // < > | Dˍ 
key <TLDE> { [ dead_circumflex,         degree,          U2032,          U2033 ] }; // D^ ° ′ ″ 
};
1
Poldi