web-dev-qa-db-fra.com

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

Le clavier que j'essaie de créer contient beaucoup d'Unicode et ressemble à ceci: The keyboard I am trying to create

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?

42
Akiva

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

Remarque : 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 Modificateurs actifs (Maj, Contrôle, 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 considèrent la barre d'espace comme étant 57. Nous l'écrivons cependant sous la forme <SPCE>
  5. symbols- Quelles valeurs sont attribuées à quels codes-clés .
    C'est ici que nous allons définir notre mise en page personnalisée.
  6. compat - Abréviation de Compatibilité .
    Comportement interne de Modificateurs (Maj, Contrôle, Alt ...)

Flux de travail

keycodes > symbols > compat

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


Cartes symboliques

/symbols/usTous 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_keys Section du clavier en cours de mappage. Plusieurs peuvent être utilisés
Remarque: Si aucun *_keys n'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_map Pour éditer touches modificatrices . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R }; Pas habituellement nécessaire. Il mappe les deux décalages au modificateur de décalage, niveau 2.

key <TLDE> The Tilde Key - Généralement, la touche en haut à gauche au dessus de l'onglet

key <AE01> Illustration - Composé de trois parties, AE01

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

  2. E = Ligne sur le clavier.
    Space Key = A rangée
    Shift Key = B rangée
    Caps Lock = C rangée
    Tab Key = D rangé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 par ,. 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 plus que le 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 ] }
  • Backspace devrait être BackSpace: Faites très attention à l'orthographe.
  • Une entrée vide doit ê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. Créez 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 de chmod +x pour permettre 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 visuel cesseront de fonctionner avec le 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 racine. (Accessible depuis bash)
  • Vous pouvez toujours utiliser un environnement en direct pour réparer les fichiers.

Solution rapide et sale

  1. allez 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 pris en charge!
    • Les chaînes ne sont pas traduites et sont traitées telles quelles. VÉRIFIEZ QU'IL N'Y A PAS D'ERREURS ni d'orthographe !.
    • Les carrés vides sont automatiquement remplis avec VoidSymbol.
  4. XKB-Sort  La feuille contient des groupes de clés, 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. XKB Onglet 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 de colemak en laissant la structure intacte et j'ai 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
18
Akiva

Dans buntu 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:

Touche 
 <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 A indique que nous cherchons dans le bloc de touches alphanumériques (les autres options incluent KP [for keypad] et FK [for Function Key]);

  2. <A C 01> La deuxième lettre C indique la ligne, en partant du bas, dans laquelle la clé est trouvée. (Dans un clavier américain standard, la barre d'espace est dans la rangée AA et les touches numériques sont dans la rangée AE).

  3. <AC 1> Les chiffres 01 indiquent la position de la clé, en partant de la gauche et en ignorant les clés spécialement nommées, telles que TAB ou ~ (tilde): AC01 est dans la troisième rangée vers le haut, la première touche en partant de la gauche (en ignorant Caps Lock, si présent); 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. Ceci contient jusqu'à quatre entrées, séparées par des virgules:

    1. a - La clé non modifiée.
    2. A - Le Shift personnage.
    3. á - Le Alt Gr personnage. (aacute)
    4. Á - Le Shift+Alt Gr personnage. (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 faites!

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 aacute et Aacute par les noms d'entité ou points de code Unicode pour æ et Æ ("aelig" ou 0E6 et “AElig” ou 0C6 , respectivement):

 touche {[a, A, aelig, AElig]};

ou

 touche {[a, A, U00E6, U00C6]}; 

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

Ajout d'une nouvelle disposition de clavier au fichier evdev.xml.

Pour utiliser la nouvelle disposition du clavier, nous devons indiquer à X11 son existence. Dans Ubuntu 14.04, X11 garde une trace des claviers installés dans le fichier /usr/share/X11/xkb/rules/evdev.xml. Ajoutons ensuite la nouvelle mise en page.

  1. Ouvrez X11/xkb/rules/evdev.xml dans un éditeur
  2. Accédez à la fin de la section <layoutList> (recherchez </layoutList>). Ajoutez ce qui suit après la dernière balise </layout>, où X est le nom de fichier de votre configuration de clavier dans /usr/share/X11/xkb/symbols (dans mon cas, oe); Y un nom court approprié; et Z un nom long approprié dans une ou plusieurs langues et aaa a code de langue à trois lettres (ISO 639-2) (par exemple eng pour l'anglais):

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

Le voici, suivez l'introduction complète

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

68
αғsнιη