Aby użyć skryptu bash, muszę uzyskać układ klawiatury gnome, z którego aktualnie korzysta użytkownik. Na przykład, jeśli użytkownik ustawi układ klawiatury na en-us
, potrzebuję polecenia bash, które mi to wydrukuje.
Jak mogę uzyskać te informacje?
Aktualizacja:
setxkbmap -query
niestety nie działa. Poniżej znajduje się wyjście z aktywowanym układem en
(pierwsze polecenie) i de
(drugie polecenie). Wygląda na to, że zmiana układu klawiatury ma pewien związek z konfiguracją sesji gnome
setxkbmap -query
rules: evdev
model: pc105
layout: us,de
variant: ,
options: terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle
setxkbmap -query
rules: evdev
model: pc105
layout: us,de
variant: ,
options: terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle
Aktualizacja 2:
setxkbmap -print #with en-us layout
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
setxkbmap -print #after switching to german layout
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
command-line
keyboard-layout
ftiaronsem
źródło
źródło
Odpowiedzi:
Zgodnie z podobnym pytaniem na Stackoverflow , następujące czynności powinny załatwić sprawę :
Nie mogłem tego zweryfikować, ponieważ obecnie nie mam dostępnej maszyny * nix z X (nie ma mnie w domu) ...
źródło
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
-v
parametr (wiele razy), co zwiększa gadatliwość, a tym samym daje więcej informacji. Powinien działać zarówno dla,-query
jak i dla-print
. Ponieważ nie mam konfiguracji wielopoziomowej, nie jestem w stanie stwierdzić, czy zapewnia ona potrzebne szczegóły - ale z 3-krotnym-v
wyjściem jest podzielony na „zastosowane reguły” i „mapę klawiszy”. Ta ostatnia wydaje się być kompletną informacją, więc pierwsza część może mieć „część aktualnie aktywną”.W systemie Ubuntu 17.10 lub nowszym
W Ubuntu 17.10, w GNOME, bieżąca wartość ustawień nie zmienia się po zmianie źródła wejściowego. Zamiast tego jest MRU-źródła klucz, który wymienia m ost r ecently u sed źródeł wejściowych.
Pierwszym źródłem na tej liście jest bieżące, więc oneliner, który uzyska aktualny układ, może wyglądać następująco:
Pamiętaj, że ta odpowiedź nie ma zastosowania, jeśli korzystasz z Unity w systemie Ubuntu 17.10. Dzięki Unity działa tak jak poprzednio.
źródło
Dla Ubuntu 13.04 i niższych
Możesz użyć
xkblayout-state
narzędzia. Zobacz plik README.md dla opisu, kompilacji, instalacji i użytkowania.Następujące polecenie zrobi dokładnie to, co chcesz:
Dla Ubuntu 13.10 i nowszych
Ubuntu 13.10 przyniósł kilka dobrych ulepszeń w tym sensie i możesz użyć następującej prostej funkcji bash:
Następujące polecenia działają również w 13.10:
lub:
źródło
Wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Po otwarciu uruchom poniższe polecenie.
To powinieneś zobaczyć
źródło
Korzystając z terminala, przeprowadziłem test zmieniający się między „pt” i „nas”, a po każdej zmianie zbierałem układ klawiatury używany z powodzeniem:
Uzyskaj aktywny układ klawiatury
setxkbmap -print
grep xkb_symbols
awk -F"+" '{print $2}'
Dane wyjściowe z aktywnym układem „us” to:
us
Przełączaj między układami
Podaj, gdzie brzmi „pt”, kod języka, na który chcesz się przełączyć.
Uwaga: używam Gnome na Ubuntu 12.04 (Precise Pangolin)
źródło
W systemie Ubuntu 13.10 lub nowszym
(Nie jestem pewien, czy działa w poprzednich wersjach)
Aby zobaczyć więcej opcji:
źródło