RH8.0 + konzole + UTF8 + cestina (znovu)

Jiri Moravec qjim na seznam.cz
Sobota Únor 1 02:49:00 CET 2003


 >>On Wed, Jan 08, 2003 at 07:54:04PM +0100, Petr Šobáň wrote:
 >>
 >>>> Potřebuji poradit
 >>>>
 >>>> nemůžu rozchodit češtinu v konzoli, prostě něco mám špatně nastavené buďto
 >>>> klávesnici, nebo znakovou sadu.
 >>>>
 >>>> Můžete mi někdo napsat jakou znakovou sadu používáte a jakou klávesovou mapu.
 >>>> Prostě skouším a vždy to nepíše nějaké znaky.
 >>
 >>
 >>Klavesove mapy by mely byt v UTF-8, ale nejsou. Proto si zapnete prevod
 >>do UTF-8, tj do /etc/sysconfig/keyboard doplnte do promenne KEYTABLE
 >>prepinac -u. Ja mam:
 >>
 >># cat /etc/sysconfig/keyboard
 >>KEYBOARDTYPE="pc"
 >>KEYTABLE="cz-lat2 -u"

1)
Znaky s diakritikou (přesneji ne ISO 8859-1) můžu zadat symbolicky např. ecaron, který
mi ale loadkeys bez -u nenačte korektně. Ví někdo proč?

2)
Druhá možnost je zadat tyto znaky jako U+XXXX. V každém případě se v mapě neobjevují
ne ASCII znaky (zatím). Co je tedy míněno tím, že klávesové mapy nejsou v UTF-8?
To že loadkeys neumí bez -u interpretovat jména ne ISO 8859-1 znaků?

Nebo to že nerozezná charset "utf-8" apod., ale např. "iso-10646-18" ano.
Mimochodem může mi někdo vysvětlit tu 18 - dovčerejška jsem si myslel, že to je norma
ISO 10646-1.

3)
Zásadní problém mám ale s mrtvými klávesami, resp. compose. Bez ohledu na to jestli v compose zadám výsledný znak jako U+XXXX nebo jako 'vícebajtový UTF-8' a mapu načtu s/bez -u, stejně jsou výsledkem podobné zhovadilosti:

compose '\'' 'R' to 'T'
compose '^' 'R' to 'X'
compose '\'' 'S' to '`'
compose '^' 'S' to '`'
compose '\'' 'T' to 'd'
compose '^' 'T' to 'd'
compose '\'' 'U' to '<0xDA>'
compose '^' 'U' to 'n'

Z hexadecimálního výpisu se dá zjistit, že loadkeys (nebo kernel) uřízne významější bajt tj. z <Compose><^><S> namísto 'Š' tj. U+0160 vyleze bajt 0x60 - náhodou platný U+0060
tj. '`'. Přitom se tento výstup zjevně snaží interpretovat jako UTF-8, protože z <Compose><'><U> namísto 'Ú' tj. U+00DA vyleze bajt 0xDA což není ani náhodou platný UTF-8 znak a readline v bashi z toho divočí. A datlovat běžnou diakritiku přes Hex_? je o duševní zdraví.

Je to bug v kernelu, kbd, obojím a nebo ve mě?

Takže zbývá hlavní otázka:

Znáte někdo ŘEŠENÍ?

Jinak pro upřesnění: běžím na čerstvě instalovaném RH8.0
Z Rawhide balíky: kernel-2.4.18-19.8.0, kbd-1.08-2, bash-2.05b-14

						Jiří Moravec
						E-mail:	qjim na seznam.cz




Další informace o konferenci Linux