Hlavní navigace

Jak psát české uvozovky?

10. 10. 2011 11:23 (aktualizováno) | Petr Krčmář

Docela často se na internetu objevuje otázka, jak v Linuxu psát české uvozovky. Nejde to přímo, ale jednoduchou úpravu zvládne každý.

Žijeme v době UTF-8, takže vůbec není problém napsat do textu speciální znaky všeho druhu. Občas (jako třeba v nadpisu mého minulého blogpostu) potřebujeme napsat české uvozovky. To jsou ty, které vypadají jako 99 a 66, tedy „uvozovky“.

Poměrně často se na to uživatelé ptají, naposled dnes ve fóru. Rozhodl jsem se tedy napsat jednoduchý návod pro všechny, kteří mají zájem si modifikovat klávesnici tak, aby na ní české znaky měli. Není to nic těžkého, nebojte. Pojmeme to jako návod „krok za krokem“.

1) Zjistíme kódy modifikovaných kláves

Nejprve se musíte rozhodnout, na které klávesy si uvozovky (či libovolné jiné znaky, fantasii se meze nekladou) dáte. Já je mám na klávesách hned vedle Enteru, na kterých je napsáno „ů“ a „§“. Pokud je stisknu společně s AltGr, objeví se právě zmíněné uvozovky. Kódy kláves zjistíte pomocí programu xev. Musíte si ho spustit v terminálu a pak zmáčknout příslušnou klávesu. Dozvíte se asi toto:

KeyPress event, serial 34, synthetic NO, window 0x3a00001,
    root 0xb0, subw 0x0, time 1274812285, (75,79), root:(681,449),
    state 0x10, keycode 47 (keysym 0x1f9, uring), same_screen YES,
    XLookupString gives 2 bytes: (c5 af) "ů"
    XmbLookupString gives 2 bytes: (c5 af) "ů"
    XFilterEvent returns: False

Nás zajímá zmíněný keycode, v tomto případě 47. Vedlejší klávesa má pak 48.

2) Přemapujeme si znaky, které klávesa píše

K samotnému přemapování nám bude stačit přidat do souboru ~/.Xmodmap jediný řádek. Ten obsahuje kód klávesy, který jsme si právě zjistili a pak seznam znaků, které klávesa vrátí v různé kombinaci s dalšími klávesami. Pořadí je velmi důležité, postupně zleva doprava jsou to:

  1. samostatná klávesa
  2. shift+klávesa
  3. ctrl+klávesa
  4. ctrl+shift+klávesa
  5. altgr+klávesa
  6. altgr+shift+klávesa

Pokud chceme zachovat původní znaky na klávesách a modifikovat jen jednu kombinaci, budeme potřebovat zkopírovat zápis všech znaků a změnit jen jeden. Doporučuji proto navštívit Dokumentační projekt (případně zavolejte xmodmap -pke) a nalistovat kapitolu 8.3. Tam je česká klávesová mapa převedená do formátu, který potřebujeme. Tam také například vykoukáte, že „ů“ je uring a středník je  semicolon.

3) Vytvoříme si vlastní modifikaci

Teď už nám nic nebrání v tom, vymyslet si vlastní funkci pro zvolené klávesy. Já nepoužívám všechny kombinace, především ne ty z controlem. Takže jsem tam napsal cokoliv (jedničku), protože tam něco být musí a v tomto případě je jedno co. Zkopíroval jsem si z Dokumentačního projektu standardní podobu kláves a přidal si tam naše české uvozovky (unicode znaky U201E a U201C) a ještě zmíněný středník.

Můj soubor ~/.Xmodmap tedy obsahuje následující řádky:

keycode 47 = uring quotedbl dollar 1 U201E semicolon
keycode 48 = section exclam ssharp 1 U201C apostrophe

Pokud chceme změny načíst, zavoláme:

$ xmodmap .Xmodmap

Pokud jste něco ošklivě rozbili a chcete načíst originální klávesovou mapu, spusťte setxkbmap cz. Při větších experimentech doporučuji mít tenhle příkaz už napsaný v nějakém terminálu, abyste mohli jedním Enterem zachránit situaci.

Pří příštím startu systému by se vám měly změny automaticky načíst. Pokud to vaše distribuce nedělá, poštelujte si /etc/gdm/Xsession nebo obecně konfiguraci svého přihlašovacího manageru.