Wie ändere ich Tastaturen über die Befehlszeile?

65

Wie ändere ich das Tastaturlayout über die Befehlszeile? Zum Beispiel möchte ich von Englisch nach Hebräisch wechseln. Ich kann es von LightDM aus mit dem kleinen Symbol in der Ecke meines Bildschirms machen.

Eyal
quelle

Antworten:

43

Vom Terminal

Englisch nach Hebräisch und umgekehrt mit Alt+Shift

setxkbmap -option grp:alt_shift_toggle us,il

Mit diesem Befehl können Sie alle Gebietsschema-Aliasnamen anzeigen

cat /etc/locale.alias

Mehr Infos zu setxkbmap im Handbuch

man setxkbmap
NickTux
quelle
Informationen, wie man es beim Booten einstellt
Adriano P
52

Sie finden die verschiedenen Keymaps an folgenden Orten:

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

Geben Sie den folgenden Befehl ein, um das Tastaturlayout (z. B. auf Spanisch) in der Linux-Befehlszeile zu ändern:

loadkeys es

Für X:

setxkbmap es

Um diese Änderungen systemweit vorzunehmen, können Sie unter der Annahme, dass Sie Ubuntu verwenden, Folgendes verwenden:

sudo dpkg-reconfigure console-setup
Dr_Bunsen
quelle
Dies hat Auswirkungen auf tty1, tty2 usw., aber keine Auswirkungen in X. Ich möchte dies in X tun, genauso wie der Tastaturumschalter in lightdm funktioniert.
Eyal
Ich habe der Antwort einen Befehl hinzugefügt. War dies das, wonach Sie gesucht haben?
Dr_Bunsen
JA! Vielen Dank. Können Sie auch Ihre Antwort aktualisieren, um Loadkeys zu erwähnen, die mit einem 's' geschrieben sind?
Eyal
2
Ja, das werde ich, und nein, danke. Einfach als gelöst markieren, damit jeder Bescheid weiß.
Dr_Bunsen
Für RedHat-Benutzer sind die folgenden wertvollen Stücke: /usr/share/X11/xkb/symbols/undsetxkbmap es
Peter Butkovic
13

Ubuntu 13.10 oder neuer

Dies funktioniert besser als setxkbmap mit Gnome / Unity-Tastaturlayoutanzeige.

gsettings set org.gnome.desktop.input-sources current 0

0 ist der Layoutindex (0 Standard- oder oberstes Layout). Layouts indiziert ab 0.

Erstellen Sie zur einfachen Verwendung einen Alias.

user.dz
quelle
2
Diese Antwort ist überlegen, weil sie den Indikator tatsächlich ändert. Genau das, wonach ich gesucht habe.
Ainar-G
1
Vielen Dank. habe deine antwort
Alexey
3
Dies funktioniert unter GNOME 3.26 nicht. Es heißt "Dieser Schlüssel ist veraltet und wird ignoriert".
Hugomg
@hugomg, im Moment habe ich noch keinen Zugang zu neueren Gnomen. aber Sie können versuchen, dconf-editorWerkzeug zu verwenden und zu überprüfen /org/gnome/desktop/. Sie können es einfach umbenennen.
user.dz
12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

Mit diesem Befehl können Sie nur durch , indem sie zwischen Englisch und Hebräisch wechseln right alt+ shiftund Sie retten left alt+ shift.

ansar313
quelle
3

Es scheint kein Standard-CLI-Tool zu geben, aber xkb-switch ist ein kleines Open-Source-Tool, um diese Aufgabe zu erledigen. Habe es gerade mit Ubuntu 16.04.4 LTS getestet und es funktioniert einwandfrei.

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

Dies sieht besser aus als die anderen Lösungen, da setxkbmap <name>alle Optionen ruiniert werden und setxkbmap -layout <name>die Optionen zwar beibehalten werden, jedoch weder der Taskleistenindikator noch das grp_ledIf-Set geändert werden können .


Vorbehalt

Wenn Ihre ~/.config/kxkbrcVerwendung LayoutLoopCount(z. B. auf weniger als die Gesamtanzahl der in aufgeführten Layouts festgelegt LayoutList) wie folgt lautet :

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

Dann können Sie xkb-switchnur zwischen den Layouts in der aktuellen Gruppe wechseln.


Bei Bildschirmsperre aufrufen

Ihr Kommentar ist mir aufgefallen:

Kurz bevor sich mein Bildschirmschoner einschaltet, möchte ich auf Englisch umschalten, damit es einfach ist, mein Passwort einzugeben, wenn ich zurückkomme.

Dies war genau mein Ziel, daher hier die Antwort:
Um dies zu tun, musst du es nur in ein Skript einbinden, das sich an dbus-monitordie hier diskutierten Punkte anhängt .

Bytebuster
quelle
3

Wenn Sie gsettings in Version 18.04+ mit Gnome verwenden, können Sie sowohl Tastaturlayouts hinzufügen als auch über die Befehlszeile oder den Tastaturlayout-Umschalter auf dem Desktop zwischen diesen wechseln .

1. Präsentieren Sie Tastaturlayouts und -optionen:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2. Hinzufügen von Tastaturlayouts:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3.Ändern des aktuellen Tastaturlayouts über die Befehlszeile:

$ gsettings set org.gnome.desktop.input-sources current 1

Da wir jetzt 3 verschiedene Sprachen haben, haben wir drei Auswahlmöglichkeiten von 0 bis 2, wobei 1 Spanisch, 2 Norwegisch und 3 Griechisch ist. Wenn Sie also die aktuelle Einstellung auf 1 setzen, wird Norwegisch zur aktuellen Tastaturbelegung.

4. Auflisten aller möglichen Tastaturlayouts:

cat //usr/share/X11/xkb/rules/base.lst

5.Ändern des Tastaturlayouts mit einer Tastenkombination:

Zum Ändern des Tastaturlayouts ist eine Tastenkombination vorkonfiguriert. Die vorliegende Abkürzung:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

Eine neue Verknüpfung kann mithilfe von gsetting set festgelegt werden. Achten Sie jedoch darauf, keine bereits verwendete Verknüpfung zu verwenden. So listen Sie alle verwendeten Verknüpfungen auf:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...
ElToro1966
quelle
Dies ist die umfassendste Antwort, ein großes Lob dafür.
Julien Chappuis
1

Für Ubuntu 18.04 + Gnome haben die anderen Antworten bei mir nicht funktioniert, aber das hat funktioniert:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

Das Argument in "inputSources [0]" ist der Index des Tastaturlayouts, genau wie bei der gsettings-Lösung.

Fand es auf Linux StackExchange .

1mi
quelle
-1

Nur aus Neugier, warum würdest du das tun? Warum sollten Sie ein Terminal öffnen und einen Befehl eingeben, um Ihr Tastaturlayout zu ändern, wenn Sie dies über eine einfache Tastenkombination tun können? Angenommen, Sie verwenden Ubuntu, dann heißt es Windows+Space

EetSandhu
quelle
2
Dies scheint eher ein Kommentar und weniger eine Antwort zu sein.
WinEunuuchs2Unix
Kurz bevor sich mein Bildschirmschoner einschaltet, möchte ich auf Englisch umschalten, damit es einfach ist, mein Passwort einzugeben, wenn ich zurückkomme.
Eyal
es ist auch nützlich, um benutzerdefinierte Tastaturkürzel zu erstellen
Vassilis
Dies funktioniert in Ubuntu 16.04 auf einer Virtualbox nicht.
Juha Untinen