Welche Schritte sind erforderlich, um ein neues Tastaturlayout auf Ubuntu zu erstellen?

43

Die Tastatur, die ich zu erstellen versuche, hat viel Unicode und sieht folgendermaßen aus: Die Tastatur versuche ich zu erstellen

Mit dem folgenden Tutorial nicht erfolgreich sein:

Ich habe mich gefragt, ob jemand so freundlich sein könnte, ein besseres Tutorial mit schrittweisen Anleitungen zu erstellen.

Akiva
quelle
2
Mmh, das sieht für mich nach einem Duplikat aus . Schade, dass Sie Ihre Frage bereits mit einem Kopfgeld belegt haben: /.
Glutanimate
@Glutanimate Oh ordentlich; habe das nicht gesehen. Ich hätte trotzdem für eine bessere Antwort gerechnet.
Akiva
Sie können diesen Link verwenden. help.ubuntu.com/community/ComposeKey
Anandu M Das
Siehe auch
alfC

Antworten:

69

In Ubuntu 14.04 werden Tastaturlayouts beibehalten

/usr/share/X11/xkb/symbols/


Jede der Dateien in diesem Verzeichnis enthält eine Reihe von Einträgen des folgenden Typs:

    Schlüssel <AC01> {[a, A, aacute, Aacute]};

Dieser Eintrag ordnet eine Taste auf der Tastatur unter Verwendung der folgenden Konventionen einer Reihe von bestimmten Zeichen zu:

  1. < A C01> Der erste Buchstabe Azeigt , dass wir in dem alphanumerischen Tastenblock suchen (andere Optionen sind KP [for keypad]und FK [for Function Key]);

  2. <A C 01> Der zweite Buchstabe Cgibt die Zeile an, die von der Unterseite an gezählt wird, in der sich der Schlüssel befindet. (Bei einer Standardtastatur in den USA befindet sich die Leertaste in einer Reihe AAund die Zehnertastatur in einer Reihe AE).

  3. <AC 01 > Die Zahlen 01geben die Position des Schlüssels an, zählen von links und ignorieren speziell benannte Schlüssel wie TABoder ~(Tilde): Befindet AC01sich in der dritten Zeile oben, erste Taste von links (ignorieren Caps Lock, falls vorhanden); Auf einer Standard-US-Tastatur ist dies die mit „a“ gekennzeichnete Taste.

  4. Die Klammern enthalten die Liste der Zeichen, die jeder Taste zugewiesen sind. Dieser enthält bis zu vier durch Kommas getrennte Einträge:

    1. a - Der unveränderte Schlüssel.
    2. A - Der ShiftCharakter.
    3. á - Der Alt GrCharakter. ( aakut )
    4. Á - Das Zeichen Shift+ Alt Gr. ( Aacute )

Das Erstellen einer benutzerdefinierten Tastaturbelegung ist so einfach wie das Ersetzen der Zeichen, die Sie in einer bestimmten Zeile nicht benötigen, durch die von Ihnen gewünschten Zeichen!

Zum Beispiel:

Als Angelsächsiker tippe ich áund Áviel seltener als ich æund Æ.

Um die angelsächsischen Zeichen zu meiner Liste hinzuzufügen, ersetze ich einfach aacuteund Aacutedurch die Entitätsnamen oder Unicode-Codepunkte für æund Æ("aelig" oder U00E6 bzw. "AElig" oder U00C6 ):

    Schlüssel {[a, A, aelig, AElig]};

oder

    Schlüssel {[a, A, U00E6, U00C6]};

Wenn ich mit dem Ändern meines Tastaturlayouts fertig bin, speichere ich die Datei unter einem neuen Namen, "oe", im selben Verzeichnis.

Hinzufügen eines neuen Tastaturlayouts zur evdev.xmlDatei.

Um ein neues Tastaturlayout zu verwenden, müssen wir sagen, X11dass es existiert. In Ubuntu 14.04 werden X11die installierten Tastaturen in einer /usr/share/X11/xkb/rules/evdev.xmlDatei gespeichert. Fügen wir dann das neue Layout hinzu.

  1. X11/xkb/rules/evdev.xmlIn einem Editor öffnen
  2. Gehe zum Ende des <layoutList>Abschnitts (suche nach </layoutList>). Fügen Sie nach dem letzten </layout>Tag Folgendes ein , in dem Xsich der Dateiname Ihres Tastaturlayouts befindet /usr/share/X11/xkb/symbols(in meinem Fall oe). Yein passender Kurzname; und Zein geeigneter langer Name in einer oder mehreren Sprachen und aaaein Recht drei Buchstaben (ISO 639-2) Sprachcode (zB eng für Englisch):

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

Hier ist es, folgen Sie der vollständigen Einführung

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

αғsнιη
quelle
Ich habe ein bisschen an diesem Beitrag gearbeitet; Der von Ihnen bereitgestellte Inhalt war von sehr hoher Qualität, muss aber meiner Meinung nach noch bearbeitet werden. Die Tutorials, mit denen Sie verlinkt haben, sind sehr alt und veraltet und enthalten die Informationen "Wenn Sie 8.04 verwenden, tun Sie xy und z". Ich möchte eine vollständige Tutorial-Antwort sehen (ich wünschte nur, ich könnte das Kopfgeld erhöhen)
Akiva
@Akiva Hat dir diese Antwort nicht geholfen? Wo hast du das problem
αғsнιη
3
Die Antwort half; Das AC01 zu erklären war wirklich gut geschrieben, aber ich wollte eine vollständige Antwort mit allen Schritten. Wenn Sie mit den anderen Tutorials verlinkt haben; Sie sind alt und es gibt drei von ihnen. Aus Gründen anderer Benutzer hätte ich hier lieber eine vollständige Antwort. Also zum Beispiel; Die Textdatei enthält mehr Elemente als der Schlüssel <ac01> {[a, b, c, d]}. Außerdem muss eine XML-Datei bearbeitet werden. Es stellt sich auch die Frage, wie dies getestet werden kann. Wie gesagt; Ich hätte eine Prämie von 500 Wiederholungen setzen sollen, weil es eine ziemlich große Aufgabe ist, ein gutes Tutorial zu erstellen.
Akiva
2
Ich werde mich bemühen, diese Frage zu beantworten, da ich sowieso mein Tastaturlayout definieren muss. Wenn ich dazu komme, werde ich es richtig beantworten.
Akiva
Funktioniert es nur für Xorg oder auch für ttys?
Narcolessico
18

Hinweis : Wayland verwendet xkb, aber viele xTools funktionieren nicht mehr ordnungsgemäß (z. B. xdotool).

Hinweis : Dies ist ein nicht erschöpfendes Tutorial. Es ist am nützlichsten für eine Person, die ein neues Layout mit acht Ebenen erstellen und die Syntax verstehen möchte.

Hinweis: Es wird eine schnelle und schmutzige Lösung bereitgestellt. Es enthält eine Tabelle, die den benötigten Code automatisch generiert.


Grundlegendes zum XKB-Verzeichnis

cd /usr/share/X11/xkb/ && ls
  1. types- Wie produzierte Schlüssel von Active Modifiers geändert werden . (Umschalt, Strg, Alt ~)
    Wichtig, wenn Sie die Modifikatortasten anpassen möchten.
  2. geometry- Zum Zeichnen von Tastaturgrafiken.
    Wichtig, wenn Sie eine nicht standardmäßige Tastaturhardware entwerfen.
  3. rules- Holen Sie sich die entsprechende Konfiguration für Ihr aktuelles Setup.
    Sie müssen dies definieren
  4. keycodes- Der Interpreter der Tastencodes für die Tastaturhardware.
    Beispiel: Macintosh-Tastaturen verstehen die Leertaste als 57. Wir schreiben es aber als<SPCE>
  5. symbols- Welche Werte sind welchen Keycodes zugeordnet .
    Hier definieren wir unser benutzerdefiniertes Layout.
  6. compat- Kurzform für Kompatibilität .
    Internes Verhalten von Modifikatoren (Shift, Control, Alt ...)

Arbeitsablauf

keycodes > symbols > compat

Ich berühre nur symbols: Siehe unten für die schnelle und schmutzige Lösung.


Symbolkarten

/symbols/us Jede Datei in diesem Verzeichnis folgt der gleichen Struktur.

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 - Keine vollständige Tastaturbelegung

alphanumeric_keysAbschnitt der Tastatur, die zugeordnet wird. Es können mehrere Tastaturen verwendet werden.
Hinweis: Wenn keine *_keysangegeben sind, wird eine vollständige Tastatur vorausgesetzt.

"basic" - Der Name der Symbolkarte

name[Group1]= "US/ASCII";Verleiht dieser Tastaturgruppe einen eindeutigen Namen.

modifier_mapZum Bearbeiten von Modifikatortasten . (Strg, Umschalt, Alt ~)

Shift { Shift_L, Shift_R };Normalerweise nicht notwendig. Es ordnet beide Schichten dem Shift-Modifikator zu, auch bekannt als Level 2.

key <TLDE> Der Tilde-Schlüssel - Normalerweise oben links rechts über Tab

key <AE01> Illustration - Bestehend aus drei Teilen,AE01

  1. A= alphanumerischer Schlüsselblock.
    KP= Tastatur
    FK= Funktionstaste

  2. E= Zeile auf der Tastatur.
    Space Key= Arow
    Shift Key= Brow
    Caps Lock= Crow
    Tab Key= Drow

  3. 01= Position des Schlüssels in der Reihe.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- In C-Sprachen; Eckige Klammern kennzeichnen eine Liste, nach der die Elemente aufgeteilt werden ,. Die Länge der Liste bestimmt die Anzahl der Ebenen. Zum Beispiel:

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

Normalerweise bezeichnen die Ebenen den folgenden Tastendruck mit:

  1. Keine Änderungstasten
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - Es ist unwahrscheinlich, dass etwas anderes als Level 4 zu sehen ist.

Kurz gesagt, wenn Sie eine Taste Shift + Altgr zuordnen möchten, müsste Ihre Liste mindestens vier Elemente lang sein.


WARNUNG - Häufige Fehler

Jede dieser Zeilen verursacht einen kritischen Fehler und lässt Sie ohne verwendbare Tastatur zurück:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspacesollte sein BackSpace: Achten Sie besonders auf die Rechtschreibung.
  • Ein leerer Eintrag sollte sein VoidSymbol.

Beste Sicherheitsmaßnahme!

  1. Sichern Sie Ihre Datei, die Sie bearbeiten:

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

  2. Erstellen Sie ein Skript, das Sie ohne root-Passwort ausführen können

So etwas wie:

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

Wenn etwas schief geht, verwenden Sie Ihre Maus, um diese Codezeile auszuführen (enthalten in dem Bash-Skript, für das Sie sudoers die Berechtigung erteilt haben. Denken Sie daran chmod +x, die Ausführung als ausführbare Datei zuzulassen.)


Sicherungsstrategien zur Wiederherstellung eines defekten Systems

  • WARNUNG: Tastatur und Bildschirmtastatur funktionieren nicht mehr mit dem geringsten Fehler.
  • Die Maus wird funktionieren . Die Eingabe kann durch Markieren und Einfügen von Zeichen mit einem mittleren Mausklick erfolgen. In Bash können Sie return(Drücken der Eingabetaste) einen Zeilenumbruch einfügen.
  • Die Tastatur funktioniert im Wiederherstellungsmodus in der Root-Shell. (Zugriff von der Bash)
  • Sie können jederzeit eine Live-Umgebung zum Reparieren von Dateien verwenden.

Schnelle und schmutzige Lösung

  1. Gehe hier hin
  2. Datei> Kopie erstellen
  3. Mapper In Sheet definieren Sie Ihr Layout.
    • Einzelzeicheneinträge werden in Code übersetzt, der vom Programm verstanden wird.
      ( !Wird U0021). Unicode unterstützt!
    • Zeichenfolgen werden nicht übersetzt und unverändert behandelt. Stellen Sie sicher, dass es keine Rechtschreib- oder Groß- / Kleinschreibfehler gibt !.
    • Leere Felder werden automatisch mit gefüllt VoidSymbol.
  4. XKB-Sort Blatt enthält Schlüsselgruppen, zum Beispiel:
    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] };
    
    Ändert dies auf allen 8 Ebenen:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBTab hat auch Linien. Jede andere Registerkarte kann ignoriert werden (ihr Code).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Ersetzen Sie den Inhalt eines Layouts. Wählen Sie eine, die Sie nicht verwenden. Zum Beispiel: Ich habe den Colemak-Eintrag geändert, ohne die Struktur zu verändern, und die Schlüssel ersetzt.

Interessante Linien:

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
quelle
In der obersten Zeile Ihrer Antwort steht: "(WIP - Nicht abstimmen.)". Die Antwort scheint mir relativ vollständig zu sein - vielleicht sollte diese Notiz entfernt werden?
MattKelly
1
@MattKelly Ahh, ich bin gerade nicht dazu gekommen, es zu aktualisieren. Tatsächlich habe ich eine Tabelle erstellt, die basierend auf den Zeichen, die Sie in ein falsches Tastaturlayout eingegeben haben, automatisch Code generiert.
Akiva
Das klingt nach einer nützlichen Tabelle - ist sie öffentlich verfügbar?
MattKelly
@MattKelly Hier ist eine Kopie. Es muss viel Cruft herausgenommen und vielleicht ein paar Lenker hinzugefügt werden, aber wie Sie sehen, generiert es Code: docs.google.com/spreadsheets/d/…
Akiva
Dieser Ansatz ermöglicht es nicht, RALT als eine andere Rücktaste oder die Einfügetaste als Backquote / Tilde festzulegen.
Craig Hicks