
Mir ist klar, dass durch das Hinzufügen
setxkbmap xxx
Wir können das Tastaturlayout im X-Server ändern. Es kann Logout/Neustart nicht überstehen, also können wir diese Zeile hinzufügen, $HOME/.profile
um es verfügbar zu machen, wenn wir uns anmelden, wiediese Fragebeschreibt.
Aber wenn wir das tun, ist das Tastaturlayout vor der Anmeldung immer noch nicht verfügbar. Wenn wir es jetzt verwenden möchten, wie gehen wir vor? Ich verwende GDM auf Centos7.
Was ich versucht habe:
Definieren Sie ein neues Tastaturlayout mit dem Namen
symmetri
und legen Sie es unter ab/usr/share/X11/xkb/symbols/
. Zum Testen können Sie es herunterladenHier.HINWEIS: Ich habe nur das Layout für den X11-Server definiert, noch nicht für die virtuelle Konsole.Vielleicht kann ich es deshalb nicht mit auflistenlocatectl list-keymaps
, weder mitloadkeys
, noch mit Berühren/etc/vconsole.conf
.setxkbmap symmetri
um es zu verwenden. Änderungen angewendet. Fügen Sie es ein,/etc/profile.d/symmetri.sh
um es im Benutzerprofil zu verwenden.Wenn ich mich abmelde, funktioniert es nicht mehr und ich erhalte die Meldung „QWERTY“.
Ich melde mich mit QWERTY an und verwende danach jetzt Symmetrich, da das Skript bei erfolgreicher Anmeldung ausgelagert wird.
Öffne das Terminal, wechsle zurück zu
us
bysetxkbmap us
,
Und dann,
localectl set-x11-keymap symmetri
Diesmal wird das Layout localectl set-keymap symmetri
auch nicht geändert.
Antwort1
Sie können verwenden
localectl set-x11-keymap ***
Dies ist dauerhaft für die Konsole und den Desktop, eine detailliertere Konfiguration finden Sie auf der Manpagehttps://www.unix.com/man-page/centos/1/LOCALECTL/
Antwort2
@terdon, Ihre Lösung funktioniert nicht, aber danke für Ihre Hilfe, ich habe mehr gelernt; zuerst habe ich auch vermutet, dass es etwas mit Gnome zu tun hat, aber es stellte sich heraus, dass es nur X11 ist. Und @TimBrandrick, Ihre Lösung sollte in den meisten Fällen funktionieren, aber in meinem Fall nicht, bevor ich mein Tastaturlayout in hinzugefügt habe .../X11/xkb/rules/evdev.xml
(und nur für den Fall, .../X11/xkb/rules/evdev.lst
, denn laut einigen Quellen lst
ist die Datei die kompilierte Version von xml
, aber ich bezweifle, dass alle Prozesse, die von diesen Dateien abhängen, nur Dateien lesen xml
; also füge ich beides hinzu. Tatsächlich xml
enthält mehr Informationen als lst
, ist aber lst
leichter zu verstehen.)
So habe ich es gemacht:
1. Öffnen Sie .../X11/xkb/rules/evdev.xml
.
(Ich lasse den ersten Teil weg, weil er sich zwischen den Distributionen unterscheidet. In CentOS 7 liegt er unter /usr/share/
; in Ubuntu <= 8.08 liegt er unter /etc/
. 1 Seltsam. )
2. Fügen Sie am Ende der untergeordneten Knoten <layoutList>
diesen Teil hinzu:
(ändern Sie es nach Bedarf, es ist nur eine Vorlage)
<layout>
<configItem>
<name>symmetri</name>
<shortDescription>symmetri</shortDescription>
<description>Symmetri (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>non-prog</name>
<shortDescription>non-prog</shortDescription>
<description>Symmetri for non-programmer (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
</variant>
</variantList>
</layout>
Wenn Ihr Tastaturlayout keine Variante hat, <variantList>
kann ein Teil selbstschließend sein, wie: <variantList />
.
Hinweis: iso639Id
Der Wert sollte mit dem ISO-Standard 639-1 oder 639-2 kompatibel sein. 1 Die vollständige Tabelle finden Sie auch in Referenz 1. Außerdem muss sie Ihren lokalen Einstellungen entsprechen. Ich habe sie English(U.S)
als meine Systemsprache festgelegt und trage sie daher us
hier ein.
3. Speichern Sie es und öffnen Sie es .../X11/xkb/rules/evdev.lst
.
4. Fügen Sie am Ende ! layout
den Namen Ihres Layouts hinzu. Etwa:
symmetri Symmetri layout (CN, EN and ES)
5. Wenn Ihr Tastaturlayout eine Variante hat, ! variant
fügen Sie diese am Ende ebenfalls hinzu.
non-prog symmetri: non-programmer
Der Name der Variante sollte mit den obigen Informationen in der XML-Datei übereinstimmen. (Während ich teste, localectl list-x11-keymap-variants
wirdnurdiese Datei lesen, anstatt die XML zu lesen, sollte ein Fehler/Bug sein.)
6. Sie können dasselbe mit base.xml
und machen base.lst
, aber ich habe es zuerst gemacht und es funktioniert nicht.
7. Stellen Sie Ihr Tastaturlayout ein mit:
setxkbmap symmetri
oder verwenden Sie zum Festlegen der Variante:
setxkbmap symmetri -variant non-prog
localectl
können list-x11-keymap-layouts
und list-x11-keymap-variants
, aber Sie können damit keine Variante festlegen; nur setxkbmap
können.
Mit dieser Einstellungnach dem Neustart und vor der ersten Anmeldung, Sie haben Ihr neues Tastaturlayout(allerdings wird die Variante nicht bestehen bleiben!! Nur das Grundlayout wird bleiben!) Aber nach erfolgreicher Anmeldung übernimmt der Desktop-Manager, und wenn Sie das neue Tastaturlayout nicht in der Datei $HOME/.bashrc
/ $HOME/.profile
(für Einzelbenutzer)/ /etc/profile.d/xxx.sh
/ /etc/profile
(für alle Benutzer) konfigurieren, werden Sienichterhalten Sie Ihr neues Tastaturlayout, sobald Sie sich abmelden und wieder anmelden!!!! Diese Änderungen werden alsonurbestehen bleiben, bevor die erste erfolgreiche Anmeldung erfolgt ... Sie müssen .bashrc
Profilskripte verwenden, um dem X-Server mitzuteilen: „Nicht nur vor der Anmeldung, sondern auch nach der Anmeldung möchte ich es für alle Benutzer!“ Vorsicht: Mit dieser Änderung bleibt das Layout das geänderte, nicht, auch wenn Sie sich abmelden und den Benutzer ändern qwerty(us)
.
Wirklich frustrierend … es muss einen einfacheren Weg geben, aber ich kann ihn nicht finden.
Referenzen: (unbedingt lesen)