Ahoj,
potřeboval bych poradit od někoho kdo vidí do Unicode.

Na SF existuje projekt Charva, který umí dělat v Javě terminálové aplikace. Bohužel se vyznačuje tím že nemá rád češtinu natož unicode.

Kouknul jsem se na to a po změnách se mi podařilo vyřešit snad všechno co je potřeba. Vidím česky, píšu česky a to všechno pod UTF-8.

Musel jsem předělat čtení znaků aby akceptoval UTF-8 a při té příležitosti jsem narazil na problém.

Unicode znak "š" s kódem 0x161 odpovídá klávese BACKTAB v curses, která se používá na pohyb formulářem po políčkách dozadu. A obdobně "č" s kódem 0x269 odpovídá klávese F5 a bude toho určitě víc.

Při načítání z curses je možné určit, zda se jedná o BACKTAB (getch vrátí jeden znak s kódem nad 255) nebo o "š" (getch vrátí dva UTF-8 znaky z nichž se stejná hodnota složí).

Jenže co dál? V javě (resp. charvě která používá stejný model jako AWT/Swing) je to KeyEvent se stejným číslem.

Já to vyřešil tak, že jsem na Unicode stránkách našel prostor pro privátní znaky (rozsah od 0xE000 do 0xF8FF) a při získávání znaků šoupnu ty funkční klávesy do tohoto prostoru.

Tím jsem znemožnil čínštině a japonštině definovat soukromé znaky respektive používat je v charvě.
A tak i když všechno funguje dobře  nevím jestli je to ideální postup...

Neexistuje nějaký vhodnější prostor v Unicode, rezervovaný pro podobné použití? Nebo přímo prostor pro klávesy jako je Fxx, PAGE_DOWN, ENTER, BACKTAB a spol.? Kam byste to mapovali vy?

Děkuji za případné názory.

Leoš

Odpovedet emailem