Wie ändere ich das aktuell ausgewählte Tastaturlayout über die Befehlszeile?


12

Ich habe meine Tastaturlayouts (zwei davon) und das Umschalten zwischen ihnen über den folgenden Befehl konfiguriert:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

Jetzt möchte ich usmit einem Kommandozeilenbefehl zum Layout wechseln . Ist das möglich?

Antworten:


13

Sie können xkb-switch verwenden ( -nwechselt zum nächsten Layout):

xkb-switch -n

oder xkblayout-state ( set +1in deinem Fall mit umwickeln):

xkblayout-state set +1

oder xtevon xautomation zu simulieren Control_L+ Shift_LTastendruck / -freigabe:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'

xkblayout-state ist super, danke! Ich benutze nur xkblayout-state set 1, und ich bekomme sofort usLayout.
Rogach

2

Suchvorgänge von Stack Exchange nach kbdmap finden diese Seite mit der Nummer dieses Wort zu erwähnen. Zur Verdeutlichung hier eine Antwort (die nicht genau zum X11- Tag der Frage passt , aber jemandem helfen sollte)…

Wenn auf eine virtuelle Konsole beschränkt

- ohne X.

kbdmap (1)

kbdmap, vidfont- Frontend für syscons und vt

… Ermöglicht das einfache Einstellen der verfügbaren Keymaps…

Wirklich, es ist einfach und (für mich, zu einem britischen Tastaturlayout zu wechseln) effektiv.

Bei Verwendung von X

- Zum Beispiel mit FreeBSD-basiertem TrueOS Desktop.

Von Beitrag 5 unter Tastaturlayout ändern? | Die FreeBSD-Foren (03.08.2015):

kbdmapist für die Konsole. setxkbmapist das Dienstprogramm, das Sie für X11 möchten. …

Es gibt eine Warnung, wenn beispielsweise auf sich ändernde U nited Königreich:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 

1

Abhängig von der Distribution für die Tastaturlayouts lautet der Befehl

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

Wenn ich mich richtig erinnere. Überprüfen Sie die Manpage auch auf Loadkeys, wenn Sie einem bestimmten Verhalten bestimmte Schlüssel zuweisen möchten.


Das Problem ist, dass nach dem ich (zum Beispiel) loadkeys us, es die Einstellungen zurücksetzt, die ich mit setxkbmap erstellt habe (zwei Layouts und zwischen ihnen wechseln)
Rogach

Soweit ich weiß, ist dies der Befehl zum Ändern von Layouts. Wenn Sie einen bestimmten haben, ist es meines Erachtens am besten, einen Alias ​​in Ihrer Shell zu haben, der die Loadkeys mit Ihren Einstellungen aufruft. Beispiel: load_us würde die US-Tastatur laden und tatsächlich den loadkey /lib/kbd/keymaps/i386/qwerty/us.map.gz oder ähnliches aufrufen. Und das Gleiche gilt für das andere Layout.
BitsOfNix

Aber wie würde ich die Tastatureinstellungen danach ändern? Derzeit ändere ich Layouts, indem ich Strg-Umschalt drücke und es mit Loadkeys verschraube.
Rogach

Machen wir hier einen Schritt zurück, von der Kommandozeile aus gehe ich davon aus, dass Sie ein tty-Terminal erwähnen. Das bedeutet, dass Sie nicht xterm / terminology / gnome-terminal oder einen anderen Emulator verwenden, sondern sich in einer Umgebung ohne X-Server befinden. Wenn Sie dies nehmen, müssen Sie loadkeys verwenden, gemäß Ihrer Frage habe ich Ihnen die Befehlszeile gegeben, was Sie tatsächlich wollen, scheint eine Tastenkombination zu sein. Wenn Sie bestimmte Schlüssel zuordnen müssen, müssen Sie Ihre eigenen Layouts erstellen und dann auf Anfrage mit Ladeschlüsseln aus Sicht des Kunden laden. Wenn Sie stattdessen eine Verknüpfung wünschen, aktualisieren Sie Ihre Frage.
BitsOfNix

Nein, ich benutze in der Tat die grafische Umgebung und insbesondere das Gnome-Terminal. Es ist nur so, dass ich das X-Layout programmatisch ändern muss, um auf einige Ereignisse zu reagieren - daher wird so einiges nicht funktionieren.
Rogach

0

In diesem Artikel mit dem Titel: Ändern der Sprache und des Tastaturlayouts in verschiedenen Distributionen finden Sie Informationen zu den verschiedenen Befehlen zum Ändern des Tastaturlayouts in verschiedenen Distributionen.

Die meisten dieser Befehle sind als GUIs verfügbar. Wenn Sie jedoch so aussehen, können die meisten von ihnen auch über die Befehlszeile ausgeführt werden. Zum Beispiel verwende ich Fedora (eine Red Hat-basierte Distribution). system-config-keyboardWenn der Befehl ohne Argumente ausgeführt wird, wird mir eine grafische Benutzeroberfläche angezeigt.

Aber wenn ich es laufen system-config-keyboard --helplasse, kann es auch von der Kommandozeile ausgeführt werden:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

Um mein Tastaturlayout auf Russisch zu ändern, könnte ich den folgenden Befehl ausführen:

$ system-config-keyboard ru
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.