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š