Ich habe eine benutzerdefinierte xmodmapDatei, die ich verwende, einschließlich nützlicher mehrsprachiger diakritischer Zeichen, englischer Zitate, Bindestriche usw. Ich möchte diese Karte mit verwenden kmscon, daher muss ich daraus eine xkbKonfiguration erstellen . Gibt es eine automatisierte Methode dafür? Oder sogar ein unkomplizierter manueller Vorgang, da ich dies nicht häufig tun muss?
Die Idee ist, die aktuelle Tastaturkonfiguration zu "lesen" (nicht aufrufen xmodmap) und darauf basierend eine eigene Symboldatei zu schreiben. Zuerst:
xkbcomp -xkb $DISPLAY
Dies schafft server-0_0.xkb. Nehmen Sie in dieser Datei den folgenden Block:
default xkb_symbols "my_symbols" {
include "pc+inet(evdev)"
include "compose(menu)+whatever(option)"
(Ich denke, Sie können Optionen in so viele "Include" -Zeilen aufteilen, wie Sie möchten). Ändern Sie die Schlüssel, die Sie ändern möchten, und stellen Sie sie voran override:
override key <AE10> { [ 0, parenright, degree ]};
Entfernen Sie alle unveränderten Schlüssel.
Systemweite Installation
Setzen Sie das alles in /usr/share/X11/xkb/symbols/my_terrific_kb. Jetzt können Benutzer es mit setxkbmap my_terrific_kb(in .xinitrcoder .xsessionrc) laden . Wahrscheinlich können Sie setzen Option "XkbLayout" "my_terrific_kb"in xorg.confeine systemweite Änderung.
Einzelbenutzerinstallation
Setzen Sie das alles in ~/anywhere/my_terrific_kb. Finden Sie die XInput-ID Ihrer Tastatur mit xinput list. Dann renne xkbcomp -i <XInput_id> ~/anywhere/my_terrific_kb $DISPLAY.
Ok, aber was soll ich auf einem System tun, auf dem ich nicht root bin?
Frank Breitling
Antwort bearbeitet. Ich bin mir für den letzten Abschnitt nicht 100% sicher: Ich habe in meinen Archiven festgestellt, dass ich xkbcomp verwendet habe, um meine benutzerdefinierte xkb-Konfiguration anzuwenden. Ich habe diese Methode jedoch zugunsten einer systemweiten Installation eingestellt und kann mich nicht erinnern, warum. Möglicherweise benötigen Sie eine vollständige Tastaturdefinition, nicht nur Überschreibungen. Bitte testen. Bereiten Sie die Befehlszeile setxkbmap dein einem Terminal vor, falls etwas schief gehen sollte (kopieren Sie eine neue Zeile und fügen Sie sie ein, um die Zeile zu überprüfen, wenn Return ebenfalls fehlerhaft ist)
L. Levrel
Vielen Dank. Sieht kompliziert aus. Ich werde es versuchen, sobald ich die Zeit für diese Art von Experimenten gefunden habe. Leider erfordert auch die Einzelbenutzerinstallation, dass root oder xinput bereits installiert sind. Ich hoffe, dass sich die XInput_id nicht von einer X-Sitzung zur nächsten ändert. Wenn es keine einfachere Lösung gibt, ist xkb ein wirklich verkrüppelter Bastard und ich werde bei Xmodmap bleiben.
Frank Breitling
Wenn die Datei lesbar ist, können Siegrep XINPUT /var/log/Xorg.0.log
L. Levrel
Beachten Sie, dass während dieser beginnt mit „nicht nennen xmodmap“, wenn Sie diesen Befehl ignorieren und tun rufen Sie es mit der Konfiguration , die Sie importieren möchten, und dann von dort aus weiter auf, erhalten Sie eine Datei erhalten , die Ihre zuvor definierten Zuordnungen enthält Dies ist ein praktischer Ausgangspunkt.
Mattdm
2
Die von erstellte Map-Datei xkbcomp :0 custom-xkb-keymapbesteht aus vielen Komponenten, die Sie durch einfaches Austauschen der Argumente laden können xkbcomp custom-xkb-keymap :0. Es zeigt hier einige Warnungen, scheint aber zu funktionieren, wenn ich das Layout in der Datei ändere.
Das xkb-Layout wird im symbolsVerzeichnis gespeichert , z /usr/local/share/X11/xkb/symbols. Der Pfad kann je nach System variieren. Wenn Sie das Layout benötigen, müssen Sie das Teil wie folgt ausschneiden:
und speichern Sie es im symbolsVerzeichnis. Bitte stellen Sie sicher, dass Sie dort keine Datei überschreiben! Sobald es dort gespeichert ist (zum Beispiel als mylayout), können Sie es durch Eingabe laden setxkbmap mylayout. Und dies entspricht der xorg.confEinstellung Option "XkbLayout" "mylayout"im Abschnitt InputDevice(siehe Manpage für kbd für weitere Details).
Es scheint, dass die anderen Teile in der xkcompAusgabe den Dateien in den anderen Verzeichnissen entsprechen. Wenn also etwas nicht funktioniert, müssen Sie das wahrscheinlich custom-xkb-keymapin seine Komponenten aufteilen und in die entsprechenden Verzeichnisse unter kopieren /usr/local/share/X11/xkb. Aber das habe ich noch nie getan.
Bessere Layouts
Anstatt Raw-Dumps zu verwenden, die wie dekompilierter Code aussehen, können Sie auch eine eigene symbolsDatei erstellen, die besser lesbar ist. Ich habe mein eigenes benutzerdefiniertes Layout, das für die meisten von Ihnen wahrscheinlich nicht verwendbar sein wird, aber Sie können sich trotzdem diese kurze Datei ansehen, die ich zum Programmieren auf deutschen Tastaturen verwende (nur um eine Vorstellung davon zu bekommen, wie dies aussehen kann und was Sie mit einer symbolsDatei machen können).
Ich habe gerade das Problem gelöst. Nachdem ich meine xmodmapKonfiguration angewendet habe , habe ich xkbcomp :0 custom-xkb-keymapdie aktuelle xkbKeymap (von der Anzeige :0) in eine Datei mit dem Namen kopiert custom-xkb-keymap.
Diese Datei kann von xkbcomp auf andere Systeme angewendet werden:
xkbcomp mykeymap :0
Dieser Befehl kann im Autostart von Gnome oder anderen DEs erfolgen. Ich weiß nicht, ob alle manuellen Änderungen übernommen werden, aber ich denke, es ist einen Versuch wert. Wo diese Datei ohne xkbcomp automatisch geladen werden soll, weiß ich nicht.
setxkbmap de
in einem Terminal vor, falls etwas schief gehen sollte (kopieren Sie eine neue Zeile und fügen Sie sie ein, um die Zeile zu überprüfen, wenn Return ebenfalls fehlerhaft ist)grep XINPUT /var/log/Xorg.0.log
Die von erstellte Map-Datei
xkbcomp :0 custom-xkb-keymap
besteht aus vielen Komponenten, die Sie durch einfaches Austauschen der Argumente laden könnenxkbcomp custom-xkb-keymap :0
. Es zeigt hier einige Warnungen, scheint aber zu funktionieren, wenn ich das Layout in der Datei ändere.Das xkb-Layout wird im
symbols
Verzeichnis gespeichert , z/usr/local/share/X11/xkb/symbols
. Der Pfad kann je nach System variieren. Wenn Sie das Layout benötigen, müssen Sie das Teil wie folgt ausschneiden:und speichern Sie es im
symbols
Verzeichnis. Bitte stellen Sie sicher, dass Sie dort keine Datei überschreiben! Sobald es dort gespeichert ist (zum Beispiel alsmylayout
), können Sie es durch Eingabe ladensetxkbmap mylayout
. Und dies entspricht derxorg.conf
EinstellungOption "XkbLayout" "mylayout"
im AbschnittInputDevice
(siehe Manpage für kbd für weitere Details).Es scheint, dass die anderen Teile in der
xkcomp
Ausgabe den Dateien in den anderen Verzeichnissen entsprechen. Wenn also etwas nicht funktioniert, müssen Sie das wahrscheinlichcustom-xkb-keymap
in seine Komponenten aufteilen und in die entsprechenden Verzeichnisse unter kopieren/usr/local/share/X11/xkb
. Aber das habe ich noch nie getan.Bessere Layouts
Anstatt Raw-Dumps zu verwenden, die wie dekompilierter Code aussehen, können Sie auch eine eigene
symbols
Datei erstellen, die besser lesbar ist. Ich habe mein eigenes benutzerdefiniertes Layout, das für die meisten von Ihnen wahrscheinlich nicht verwendbar sein wird, aber Sie können sich trotzdem diese kurze Datei ansehen, die ich zum Programmieren auf deutschen Tastaturen verwende (nur um eine Vorstellung davon zu bekommen, wie dies aussehen kann und was Sie mit einersymbols
Datei machen können).quelle
Ich habe gerade das Problem gelöst. Nachdem ich meine
xmodmap
Konfiguration angewendet habe , habe ichxkbcomp :0 custom-xkb-keymap
die aktuellexkb
Keymap (von der Anzeige:0
) in eine Datei mit dem Namen kopiertcustom-xkb-keymap
.quelle
In diesem Thread gibt es ein ähnliches Problem: Xephyr: Tastaturzuordnung funktioniert nicht ordnungsgemäß Ähnlich wie bei der bereitgestellten Lösung können Sie Ihre Tastatureinstellungen speichern
Diese Datei kann von xkbcomp auf andere Systeme angewendet werden:
Dieser Befehl kann im Autostart von Gnome oder anderen DEs erfolgen. Ich weiß nicht, ob alle manuellen Änderungen übernommen werden, aber ich denke, es ist einen Versuch wert. Wo diese Datei ohne xkbcomp automatisch geladen werden soll, weiß ich nicht.
quelle