Radek Chalupa - programování, Linux, online konzultace a školení

Radek Chalupa   programování, Linux, online konzultace a školení

Lokální nastavení a rozložení klávesnice v odlehčených prostředích

Pokud máme ve výchozí instalaci v (americké) angličtině a chceme přidat podporu pro zobrazování některých položek (čas, čísla, měna, …) v českém (nebo jiném) formátu, nejprve upravíme soubor /etc/locale.gen. K tomu samozřejmě potřebujeme administrátorská práva. Tento soubor obsahuje seznam dostupných lokálních prostředí. Kromě toho zvoleného při instalaci jsou všechny zapoznámkované (znakem # na začátku řádky). Odpoznámkujeme tedy jedno nebo více těch, které chceme mít k dispozici. Nejspíše tedy řádek

cs_CZ.UTF-8

Po uložení změn souboru zavoláme z terminálu (opět jako administrátor) příkaz

locale-gen

Pak už jen zbývá upravit soubor /etc/locale.conf, který může po úpravě vypadat například takto:

LANG="en_US.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"

Výše uvedené říká že chceme jako jazyk systému mít americkou angličtinu a některé typy položek zobrazovat v lokáním českém nastavení, vše samozřejmě v UTF-8.

Následující přehled stručně popisuje jednotlivé možné hodnoty nastavení:

LC_ALL - nastaví všechna lokální nastavení kromě LANGUAGE

LC_ADDRESS - konvence pro zápis (poštovních) adres

LC_COLLATE - porovnávání znaků při řazení

LC_CTYPE - určuje jak jsou vyhodnocovány znaky (rozlišení na čísla, alfanumerické znaky atd.)

LC_MONETARY - zápis měny

LC_MEASUREMENT - určuje metrický systém

LC_MESSAGES - překlady textů ve funkcích typu gettext

LC_NUMERIC - formátování čísel, jaké jsou oddělovače desetinných míst popřípadě tisíců

LC_PAPER - standard velikosti papíru

LC_RESPONSE jak jsou zobrazovány dotazy typu ano/ne vs. yes/no

LC_TELEPHONE - zápis telefonních čísel

LC_TIME - formát zápisu data a času

Přepínání rozložení klávesnice

V minimalistických prostředích/správcích oken nemáme k disposici nastavení rozložení klávesnice přes grafické uživatelské rozhraní. Použijeme tedy volání příslušných nástrojů která si nejlépe také navážeme na vlastní klávesové zkratky. Navíc máme k disposici českou programátorskou klávesnici, která je mnoha Linuxovým uživatelům skryta protože ve “velkých” distribucích ji většinou nenajdeme mezi těmi, které nabízí grafické uživatelské nastavení.

Proč přepínám rozložení klávesnice?

Nejprve můj osobní pohled na věc. Některým lidem (včetně členů rodiny) přijde divné, že pokud to není nezbytně nutné, píšu (česky) bez diakritiky na klávesnici s americkou angličtinou, včetně například většiny příspěvků do diskusních fór, emailů (s výjimkou těch “úředních”) a především SMS zpráv. Důvodů je více. Když jsem začínal kariéru programátora (80. léta minulého století) na nějaké háčky a čárky nikdo ani nepomyslel. A svět to přežil. když se začala diakritika na počítačích zavádět, pamětníci asi pamatují kolik problémů přinesla válka mezi kódováním Latin-2 a bratří Kamenických. Těch šílených nečitelných emailů a textových souborů jenom proto že odesílatel (resp. jím použitý software) stál na opačné straně barikády. Dalším a v současnosti hlavním důvodem je to, že preferuji ovládání klávesnicí přes myší a používám programy jako vim, tmux a dwm, které intenzivně používají jako klávesové zkratky znaky jako “`,.;:/”. A když jste zvyklí na anglické či programátorské rozložení, je jasné že po přepnutí do české klávesnice je to nepoužitelné.

Nastavení klávesnice na Xorg

Pokud máme správce oken běžícího Xorg serveru (jako například i3, dwm), použijeme příkaz setxkbmap, kterým nastavíme požadované rozložení klávesnice a popřípadě variantu, tedy u české např. qwerty vs. qwertz. Konkrétně nastavení českého qwerty rozloženi provedeme příkazem:

setxkbmap -layout cz -variant qwerty_bksl

Nastavení českého programátorského rozloženi:

setxkbmap -layout cz -variant coder

Zpět do americké angličtiny se pak vrátíme voláním:

setxkbmap -layout us

Nastavení klávesnice na waylandu

Rozložení české s variantou qwerty:

swaymsg input type:keyboard xkb_layout "cz"
swaymsg input type:keyboard xkb_variant "qwerty"

Rozložení české programátorské:

swaymsg input type:keyboard xkb_layout "cz"
swaymsg input type:keyboard xkb_variant "coder"

Rozložení americké angličtiny:

swaymsg input type:keyboard xkb_variant '""'
swaymsg input type:keyboard xkb_layout "us"