Portál AbcLinuxu, 7. května 2025 00:31
Článek není špatný, ale chtělo by to více teorie nebo alespoň podrobnější vysvětlení, na co je jaká konfigurace dobrá, a ujasnit si názvosloví.
Za prvé vstupní metoda není xim nebo gcim nebo scim, ale prostě algoritmus pro zadávání znaků. gcim je jen konkrétní implementace (program) algoritmu, scim je sjednocující kontejner pro různé implementace metod (proto se do něj instalují tabulky definující vstupní metody) a xim je protokol X input vrstvy.
Tady totiž chybí teorie, že možnost využít vstupní metody je přímo zabudovaná do X11 a to skrze protokol xim. Tudíž máme-li implementaci vstupní metody, která tento protokol umí (například scim), můžeme zadávat složené znaky do „libovolné“ xové aplikace.
Proto se definuje proměnná XMODIFIERS, která říká, že aplikace může skrze libX11 přefiltrovat vstupní symboly přes vstupní metodu a nechat si unést okno programem implementujícím metodu (například XMODIFIERS=@im=SCIM xterm
).
Výše jsem použil uvozovky, protože xim má svoje omezení a mimo jiné sada widgetů aplikace musí trochu spolupracovat. (Vývojáři Xorg si toho jsou vědomi a hodlají spolu s opuštěním příšerné definice klasických rozvržení klávesnice xkeyboard-config vytvořit nový způsob, který bude lépe řešit i vstupní metody.)
Proto také velké knihovny widgetů jako GTK nebo Qt mají vlastní rozhraní pro vstupní metody a implementace vstupních metod implementují i jiné rozhraní než xim.) Proto je třeba definovat proměnné GTK_IM_MODULE a QT_IM_MODULE.
Zatímco GTK (GTK_IM_MODULE=scim gtk-demo
) je v tomto směru stabilní, Qt s přechodem na verzi 4 věci překopalo. Qt3 fungovalo přes protokol scimu a nefungovalo s ximem, Qt4 funguje jenom s xim. Protože Qt4 obsahuje emulaci Qt3, je asi na pořadu dne používat XMODIFIERS=@im=SCIM QT_IM_MODULE=xim qtconfig
(QT_IM_MODULE je možné odstranit).
Nakonec je třeba vysvětlit, že řetězec SCIM identifikuje program implementující vstupní metodu, proměnná XMODIFIERS se používá i na jiné věci než na vstupní metody, proto ten @im=.
Když říkám, že proměnné identifikují implementaci, tak to znamená že jich může běžet (ve smyslu procesu operačního systému) více na jednou a že je dobé mít nějakou puštěnou už od začátku desktopové relace (aby nebyl uživatel zdržován jejich spouštěním). Například scim se pouští jako démon scim -d
.
Ještě je třeba upozornit, že scim má (měl?) svéráznou konfiguraci, která vyžaduje, aby locale aplikace měl vyjmenovanou ve volbě /SupportedUnicodeLocales v konfiguračním souboru /etc/scim/global (například /SupportedUnicodeLocales = en_US.UTF-8,cs_CZ.UTF-8
) a aby samotný démon scim byl spouštěn v locale podporujícím všechny zamýšlené znaky (tedy stačí jakýkoliv s UTF-8).
Pro úplnost uvedu, že existují různé vstupní metody, některé jsou zazděné patenty, pro náruživé texniky existuje pro scim modul s texovými makry pro matematické symboly, takže mohou v libovolném textovém editoru například napsat \exists\alpha\in\Re
a dostanou ∃α∈ℜ.
[c] type=advanced filetype=C items=printf printf=button;printf;;thorn printf_template=printf((problém je, že v menu sa bude zobrazovať len p a nie <alt_r>p, ale inak to funguje)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.