Jak zmienić aktualnie wybrany układ klawiatury z wiersza poleceń?


12

Mam układ klawiatury (dwa z nich) i przełączam się między nimi za pomocą następującego polecenia:

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

Teraz chcę przejść do usukładu za pomocą polecenia z wiersza poleceń. Czy to jest możliwe?

Odpowiedzi:


13

Możesz użyć przełącznika xkb ( -nprzechodzi do następnego układu):

xkb-switch -n

lub xkblayout-state ( set +1w twoim przypadku, aby się obejść):

xkblayout-state set +1

lub xtez xautomation w celu symulacji Control_L+ Shift_Lnaciśnięcie / zwolnienie klawisza:

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

Stan xkblayout jest świetny, dzięki! Po prostu używam xkblayout-state set 1i natychmiast otrzymuję usukład.
Rogach,

2

Wyszukiwania Stack Exchange dla kbdmap znajdują tę stronę bez wzmianki o tym słowie. Dla jasności, oto odpowiedź (nie do końca pasująca do tagu X11 pytania, ale powinna komuś pomóc)…

Gdy ogranicza się do wirtualnej konsoli

- bez X.

kbdmap (1)

kbdmap, vidfont- frontend dla syscons i vt

… Umożliwia łatwe ustawienie dostępnych map klawiszy…

Naprawdę jest to łatwe i (dla mnie przejście na układ klawiatury w Wielkiej Brytanii) skuteczne.

Podczas korzystania z X

- na przykład z TrueOS Desktop opartym na FreeBSD.

Od postu 5 w sekcji Zmień układ klawiatury? | Fora FreeBSD (2015-08-03):

kbdmapjest na konsolę. setxkbmapto narzędzie, które chcesz dla X11. …

Jest to ostrzeżenie, na przykład przy zmianie na U nited Brytanii:

$ 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

W zależności od dystrybucji układów klawiatury polecenie to

loadkeys <path/to/file>

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

Jeżeli dobrze pamiętam. Sprawdź także stronę podręczną dla loadkeys, jeśli chcesz przypisać określone klucze do określonego zachowania.


Problem polega na tym, że po tym (na przykład) loadkeys usresetuje ustawienia, które utworzyłem za pomocą setxkbmap (dwa układy i przełączanie między nimi)
Rogach

o ile wiem, jest to polecenie zmiany układów, jeśli masz konkretny, to chyba najlepszy sposób to mieć w swojej powłoce alias, który wywoływałby klawisze loadload z ustawieniami yout. np. load_us załadowałby klawiaturę us i faktycznie wywołałby loadload /lib/kbd/keymaps/i386/qwerty/us.map.gz lub podobny. To samo dotyczy drugiego układu.
BitsOfNix,

Ale jak mam później zmienić ustawienia klawiatury? Obecnie zmieniam układy, naciskając Ctrl-Shift, używając śrub loadkeys.
Rogach,

cofnijmy się tutaj, z linii poleceń Zakładam, że mówisz o terminalu tty. Oznacza to, że nie używasz xterm / terminology / gnome-terminal ani żadnego innego emulatora, ale w rzeczywistości jesteś w środowisku bez serwera X. Biorąc to pod uwagę, musisz użyć loadkeys, jak na twoje pytanie, podałem ci linię poleceń, to, czego naprawdę chcesz, wydaje się skrótem klawiszowym. Jeśli masz określone klucze do zmapowania, musisz utworzyć własne układy i załadować następnie na żądanie za pomocą kluczy ładowania z punktu widzenia kliki. Jeśli zamiast tego chcesz skorzystać ze skrótu, zaktualizuj swoje pytanie.
BitsOfNix

Nie, w rzeczywistości używam środowiska graficznego, w szczególności terminala gnome. Po prostu muszę programowo zmienić układ X w reakcji na niektóre zdarzenia - dlatego tty rzeczy nie będą działać.
Rogach,

0

Rzuć okiem na ten artykuł zatytułowany: Zmiana układu języka i klawiatury w różnych dystrybucjach , aby różne polecenia zmieniły układ klawiatury w różnych dystrybucjach.

Większość z tych poleceń występuje jako GUI, ale jeśli spojrzysz, większość z nich można uruchomić również z wiersza poleceń. Na przykład używam Fedory (dystrybucja oparta na Red Hat). Polecenie system-config-keyboardpo uruchomieniu bez argumentów pokazuje mi GUI.

Ale jeśli uruchomię system-config-keyboard --help, można go również uruchomić z wiersza poleceń:

$ 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

Aby zmienić układ klawiatury na rosyjski, mógłbym uruchomić następujące polecenie:

$ system-config-keyboard ru
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.