Quelles sont les étapes nécessaires pour créer une nouvelle disposition de clavier sur Ubuntu?

43

Le clavier que j'essaie de créer contient beaucoup d'Unicode et ressemble à ceci: Le clavier que j'essaie de créer

Ne pas réussir avec le tutoriel suivant:

Je me demandais si quelqu'un serait si gentil de fournir un meilleur tutoriel avec des instructions étape par étape?

Akiva
la source
2
Mmh, cela ressemble à un duplicata pour moi . Dommage que vous mettiez déjà une prime sur votre question: /.
Glutanimate
@ Glutanimate Oh soignée; n'a pas vu ça. J'aurais quand même bountied pour une meilleure réponse cependant.
Akiva
Vous pouvez utiliser ce lien. help.ubuntu.com/community/ComposeKey
Anandu M Das

Réponses:

69

Dans Ubuntu 14.04 , les dispositions de clavier sont conservées dans

/usr/share/X11/xkb/symbols/


Chacun des fichiers de ce répertoire contient une série d'entrées du type suivant:

    clé <AC01> {[a, A, aacute, Aacute]};

Cette entrée mappe une touche du clavier sur un nombre de caractères spécifique en appliquant les conventions suivantes:

  1. < A C01> La première lettre Aindique que nous sommes à la recherche dans le bloc clé alphanumérique (autres options comprennent KP [for keypad]et FK [for Function Key]);

  2. <A C 01> La deuxième lettre Cindique la ligne, en partant du bas, dans laquelle se trouve la clé. (Sur un clavier américain standard, la barre d'espace est alignée AAet les touches numériques sont alignées AE).

  3. <AC 01 > Les chiffres 01indiquent la position de la clé, en comptant à partir de la gauche et en ignorant toute clé spécialement nommée telle que TABou ~(tilde): se AC01trouve dans la troisième rangée vers le haut, la première clé en partant de la gauche (en ignorant Caps Lock, le cas échéant); sur un clavier américain standard, il s’agit de la touche marquée «a».

  4. Les crochets encadrent la liste des caractères attribués à chaque touche. Il contient jusqu'à quatre entrées, séparées par des virgules:

    1. a - La clé non modifiée.
    2. A - Le Shiftpersonnage.
    3. á - Le Alt Grpersonnage. ( aacute )
    4. Á - Le personnage Shift+ Alt Gr. ( Aacute )

Créer une carte de clavier personnalisée est aussi simple que de remplacer les caractères que vous ne voulez pas dans une ligne donnée par ceux que vous créez!

Par exemple:

En tant qu’Anglo-Saxoniste, je tape áet Ábeaucoup moins souvent que je tape æet Æ.

Pour ajouter les caractères anglo-saxons à ma liste, je remplace simplement aacuteet Aacutepar les noms d'entité ou les points de code Unicode pour æet Æ(«aelig» ou U00E6 et «AElig» ou U00C6 , respectivement):

    clé {[a, A, aelig, AElig]};

ou

    clé {[a, A, U00E6, U00C6]};

Lorsque j'ai fini de modifier la disposition de mon clavier, j'enregistre le fichier sous un nouveau nom, "oe", dans le même répertoire.

Ajouter une nouvelle disposition de clavier au evdev.xmlfichier.

Pour utiliser la nouvelle disposition du clavier, nous devons dire X11qu'elle existe. Dans Ubuntu 14.04 X11garde une trace des claviers installés dans un /usr/share/X11/xkb/rules/evdev.xmlfichier. Ajoutons ensuite la nouvelle mise en page.

  1. Ouvrir X11/xkb/rules/evdev.xmldans un éditeur
  2. Aller à la fin de la <layoutList>section (rechercher </layoutList>). Ajoutez ce qui suit après la dernière </layout>balise, où Xest le nom du fichier de votre disposition de clavier dans /usr/share/X11/xkb/symbols(dans mon cas oe); Yun nom court approprié; et Zun nom long approprié dans une ou plusieurs langues et aaaun code de langue à trois lettres (ISO 639-2) (par exemple, eng pour anglais):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

La voici, suivez l'introduction complète

Autres liens connexes:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html

αғsнιη
la source
J'ai travaillé un peu sur ce post; le contenu que vous avez fourni était de très haute qualité, mais il reste encore du travail à mon avis. Les tutoriels auxquels vous avez accédé sont très anciens, obsolètes et remplis de "Si vous utilisez 8.04, faites xy et z". Je voudrais voir une réponse complète du didacticiel (j'aimerais seulement pouvoir augmenter la prime)
Akiva
@ Akiva N'a pas aidé cette réponse à vous? Où avez-vous le problème?
αsнιη
3
La réponse a aidé; Expliquer le AC01 était très bien écrit, mais je voulais une réponse complète avec toutes les étapes. Lorsque vous avez créé un lien vers les autres tutoriels; ils sont vieux et ils sont trois. Pour le bénéfice des autres utilisateurs, je préférerais une réponse complète fournie ici. Donc par exemple; il y a plus d'éléments trouvés dans le fichier texte au-delà de la clé <ac01> {[a, b, c, d]}, et il existe également un fichier XML qui doit être édité. Il y a aussi la question de savoir comment tester cela. Comme dit; J'aurais dû mettre une prime de 500 reps à ce sujet, car la création d'un bon tutoriel est une tâche assez lourde.
Akiva
2
Je vais répondre à cette question à part entière car je dois quand même définir la disposition de mon clavier. quand j'y arriverai, je répondrai correctement.
Akiva
Est-ce que ça marche seulement pour Xorg, ou aussi pour ttys?
Narcolessico
18

Remarque : Wayland utilise xkb, mais de nombreux xTools ont cessé de fonctionner correctement (xdotool par exemple).

Note : Ceci est un tutoriel non exhaustif. Il est très utile pour une personne cherchant à créer une nouvelle disposition sur huit niveaux et à comprendre la syntaxe.

Remarque: Une solution rapide et sale est fournie. Il comprend une feuille de calcul qui génère automatiquement le code dont vous avez besoin.


Comprendre le répertoire XKB

cd /usr/share/X11/xkb/ && ls
  1. types- Comment les clés produites sont modifiées par les modificateurs actifs . (Maj, Ctrl, Alt ~)
    Important si vous souhaitez personnaliser les touches de modification.
  2. geometry- Utilisé pour dessiner des graphiques de clavier.
    Important si vous concevez un composant de clavier non standard.
  3. rules- Récupération de la configuration appropriée pour votre configuration actuelle.
    Vous devrez définir ceci
  4. keycodes- L'interprète des codes de clé pour le matériel du clavier.
    Exemple: Les claviers Macintosh comprennent la barre d'espace comme 57. Nous l'écrivons cependant comme<SPCE>
  5. symbols- Quelles valeurs sont assignées à quels codes clés .
    C'est ici que nous définirons notre mise en page personnalisée.
  6. compat- Abréviation de compatibilité .
    Comportement interne des modificateurs (Shift, Control, Alt ...)

Flux de travail

keycodes > symbols > compat

Je touche seulement symbols: Voir ci-dessous pour la solution rapide et sale .


Cartes symboliques

/symbols/us Tous les fichiers de ce répertoire suivent la même structure.

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial - Pas une carte de clavier complète

alphanumeric_keysSection du clavier en cours de mappage. Plusieurs peuvent être utilisés.
Remarque: Si aucun *_keysn'est spécifié, un clavier complet est utilisé .

"basic" - le nom de la carte des symboles

name[Group1]= "US/ASCII";Donne un nom unique à ce groupe de claviers.

modifier_mapPour éditer les touches de modification . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };Ce n'est généralement pas nécessaire. Il mappe les deux décalages au modificateur de décalage, niveau 2.

key <TLDE> La clé tilde - touche généralement en haut à gauche, au dessus de l'onglet

key <AE01> Illustration composée de trois partiesAE01

  1. A= bloc clé alphanumérique.
    KP= Clavier
    FK= touche de fonction

  2. E= Ligne sur le clavier.
    Space Key= Arangée
    Shift Key= Brangée
    Caps Lock= Crangée
    Tab Key= Drangée

  3. 01= Position de la clé sur la ligne.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- en langues C; Les crochets indiquent une liste par laquelle les éléments sont divisés ,. La longueur de la liste détermine la quantité de niveaux. Par exemple:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

En général, les niveaux désignent les touches suivantes:

  1. Pas de touches de modification
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - Peu de chances de voir quelque chose au-delà du niveau 4.

En bref, si vous souhaitez mapper une touche pour déplacer + alt, votre liste devrait comporter au moins quatre éléments.


AVERTISSEMENT - Erreurs communes

Chacune de ces lignes provoquera une erreur critique et vous laissera sans clavier utilisable:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspacedevrait être BackSpace: Faites très attention à l’orthographe.
  • Une entrée vide devrait être VoidSymbol.

Meilleure mesure de sécurité!

  1. Sauvegardez votre fichier que vous éditez:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Faites un script que vous pouvez exécuter sans mot de passe root

Quelque chose comme:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

Si quelque chose ne va pas, utilisez votre souris pour exécuter cette ligne de code (contenue dans le script bash pour lequel vous avez donné l'autorisation à sudoers. N'oubliez pas chmod +xd'autoriser l'exécution en tant qu'exécutable.)


Stratégies de sauvegarde pour récupérer un système en panne

  • AVERTISSEMENT: Le clavier et le clavier à l'écran cesseront de fonctionner avec la moindre erreur.
  • La souris fonctionnera . La saisie peut être effectuée en mettant en surbrillance des caractères et en les collant avec un clic du milieu. Dans Bash, vous pouvez return(appuyer sur Entrée) en collant un saut de ligne.
  • Le clavier fonctionnera en mode de récupération dans le shell root. (Accessible depuis bash)
  • Vous pouvez toujours utiliser un environnement en direct pour réparer les fichiers.

Solution rapide et sale

  1. Va ici
  2. Fichier> Faire une copie
  3. Mapper La feuille est l'endroit où vous définissez votre mise en page.
    • Les entrées de caractère unique sont traduites en code compris par le programme.
      ( !devient U0021). Unicode supporté!
    • Les chaînes ne sont pas traduites et sont traitées telles quelles. VÉRIFIEZ QU'IL N'Y A AUCUNE ERREUR D'ORCEAU OU DE CASE !.
    • Les cases vides sont automatiquement remplies VoidSymbol.
  4. XKB-Sort La feuille contient des groupes de touches, par exemple:
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    Cela change à tous les 8 niveaux:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBOnglet a aussi des lignes. Tout autre onglet peut être ignoré (son code).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Remplacer un contenu de mises en page. Choisissez celui que vous n'utiliserez pas. Par exemple: j'ai modifié l'entrée colemak en laissant la structure intacte et remplacé les clés.

Lignes d'intérêt:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5

Akiva
la source
La ligne du haut de votre réponse dit: "(WIP - Ne votez pas.)". La réponse me semble assez complète. Peut-être faudrait-il supprimer cette note?
MattKelly
1
@ MattKelly Ahh Je n'ai juste pas réussi à le mettre à jour. J'ai en fait créé un tableur qui génère automatiquement du code en fonction des caractères que vous avez mis dans une disposition de clavier fictive.
Akiva
Cela ressemble à un tableur utile - est-il disponible publiquement?
MattKelly
@ MattKelly Voici une copie. Il faut beaucoup de manipulations cruelles, et peut-être un guidon ajouté, mais comme vous pouvez le voir, il génère du code: docs.google.com/spreadsheets/d/…
Akiva
Cette approche ne permet pas de définir RALT pour qu’il agisse comme un autre retour arrière ou de définir la touche d’insertion pour qu’elle agisse comme citation arrière / tilde.
Craig Hicks