Zastanawiam się, czy istnieje narzędzie wiersza polecenia, które zwraca bieżący układ klawiatury.
Mam XkbLayout
ustawiony us, ru
.
Aktualizacja: setxkbmap
zwraca ustawienia układu, a nie wybrany układ. Na przykład:
$ setxkbmap -print | grep xkb_symbols
xkb_symbols { include "pc+us+ru:2+inet(evdev)+capslock(grouplock)+terminate(ctrl_alt_bksp)" };
Zwróci ten sam wynik bez względu na obecny układ.
Odpowiedzi:
Może to zależy od wersji, ale na moim komputerze, który używa
setxkbmap
1.3.0, działa następująca komenda:Zauważ, że w zależności od potrzeb znajomość tylko układu może być bezużyteczna: na przykład wariant Dvoraka w amerykańskim układzie jest zupełnie inny niż domyślny QWERTY.
-query
Opcjasetxkbmap
daje zarówno układ i wariant, jako różnych dziedzin:źródło
-query
został dodany w setxkbmap 1.2.0setxkbmap -print -verbose 10
setxkbmap -model pc104 -layout cz,us -variant ,dvorak
Istnieje przełącznik xkb, który jest opisany w następujący sposób:
https://github.com/ierton/xkb-switch
Lub, zgodnie z sugestią nozimicy, możesz użyć:
Z tego wątku na tablicach Arch Linux: https://bbs.archlinux.org/viewtopic.php?pid=539406
źródło
xkb-switch
działa dobrze, ale mam nadzieję, że było bardziej przenośne rozwiązaniesetxkbmap
układ nie pokazuje aktualnie aktywnego układu, gdy zdefiniowano więcej niż jeden układ.Tak, istnieje narzędzie wiersza polecenia, które robi to, co chcesz! Właśnie to odkryłem 10 minut temu :)
Spójrz tutaj: https://github.com/nonpop/xkblayout-state
robi dokładnie to, co chcesz (nie wyświetla końca linii, więc dodaj,
; echo
jeśli potrzebujesz). uruchom narzędzie bez parametrów pomocy.źródło
Użyj tego, aby uzyskać kod dla bieżącego układu:
Może to wymagać konwersji do odpowiedniego formularza, takiego jak:
źródło
00000002
chociaż mój układ to „USA Dvorak international”. Język to za mało ...00001004
na moim komputerze.Innym prostszym podejściem ze względu na stałe pozycje danych wyjściowych
xset -q
polecenia jest:Drukuje się
00000002
lub w00001002
zależności od bieżącego układu klawiatury.źródło
c59-66
.W nowszych systemach możesz użyć
localectl status
Na przykład pokaże Ci:
źródło
Dotychczasowe odpowiedzi nie działały dla mnie. Używam
setkbmap
z dwoma układami angielskim i czeskim, więc każdy-print
lub-query
zawsze zwróci dwa. Grepowanie statusu diody LEDxset -q
również nie działa, ponieważ pokazuje status wszystkich diod LED klawiatury.Najlepsze do tej pory było szybkie napisanie tego małego narzędzia: https://gist.github.com/fikovnik/ef428e82a26774280c4fdf8f96ce8eeb
i skompiluj za pomocą
gcc -I/usr/include getxkblayout.c -lX11 -lxkbfile
źródło
Możesz użyć
xkbprint
do wydrukowania bieżącego układu.Na przykład, aby wydrukować bieżący układ jako plik PDF
który produkuje:
źródło
Od Goosfrabaa na forach Arch Linux :
Działa to tutaj poprawnie i drukuje
us(dvorak-intl)
(wyświetlane jako „USA Dvorak international” w menu wyboru klawiatury GNOME).źródło
$ setxkbmap -v
>>Trying to build keymap using the following components: | keycodes: evdev+aliases(qwerty) | types: complete | compat: complete+ledscroll(group_lock) | symbols: pc+us+hu:2+inet(evdev)+group(alt_shift_toggle)+compose(rwin)+terminate(ctrl_alt_bksp) | geometry: pc(pc105)
w tym przypadku dostaję za każdym razem „nas”Częściowa odpowiedź: w KDE można pozornie uzyskać bieżący układ klawiatury za pomocą
qdbus
polecenia:Mam skonfigurowanych kilka układów, ale pokazuje tylko ten, który jest aktualnie używany.
Testowane na Kubuntu 18.04 (qdbus wersja 4.8.7). Mogą istnieć inne rozwiązania oparte na magistrali D dla środowisk innych niż Qt, ale nie wiem o nich.
źródło
źródło
Możesz użyć:
źródło
latam
.xkb_symbols
wartość nie zależy od wybranego układu, zawsze otrzymuję „nas”