gtk1, mrtve klavesy a vlastni widget

Radek Cervinka radek.cervinka na centrum.cz
Čtvrtek Duben 1 21:19:17 CEST 2004


Dobry vecer,

pricmrndavam do jednom mezinarodnim projektu (lazarus.freepascal.org) a 
narazil jsem u viz subj.
Jedna se o open source klon Delphi pod linux nad FreePascalem (vse GPL).
Podporuje jak win32 tak gtk, gtk2, qt.

Maji widget s docela slozitou obsluhou klaves (přemapování kodů, 
přeposílání komponentam atd) a nemuzeme ho prinutit aby
akceptoval ceske mrtve klavesy.
Zajimave je ze pro gtkentry to funguje, ale události jsou trosku jine (viz 
nize) - hlavne v tom ze prijde spravná hodnota pro Č :(.

Sranda je ze na X serveru autora nikdy znak dead_* neprijde :).

Dival jsem se do zdrojaku gtkentry a na nic zajimaveho jsem neprisel (nijak 
tak s dead keys nesachuji, proste jim to funguje).
Na internetu jsem vyguglil pouze czech howto a problemy s dead keys (coz
mi nepomohlo), pak dokument od Redhatu o obsluze klavesnice v gtk
(zminka o mrtvych klavesach, ale zadny priklad).

Prosim delal tady nekdo vlastni widget, kde se deje neco s dead keys, nebo
ma nekdo nejaky example s primou reakci na dead_*,(neco jako: Ha, prisla 
mrtva klavesa, takze musim udelat tohle...)? Uz nad tim tvrdnu cca 14 dní.
Vim, ze je v nasi obsluze chyba, ale nevim kde.

V obou případech jsem psal velke C s hackem.
Type R - uvolneni, P - stisk.

Jo a na co je tam to "ISO_Prev_Group"?

XFree 4.3, mandrake 9.2 updated, cz_qwerty, wmaker.
Jo a v mandrake 8.0 to pry funguje (z doslechu).


gtkentry:

E: Type= P, KeyVal= 0xFFE1 (65505) "Shift_L"
E: Type= R, KeyVal= 0xFE5A (65114) "dead_caron"
E: Type= P, KeyVal= 0x1C8 (456) "Ccaron"
zde dostaneme korektni hodnotu pro velke Č
E: Type= R, KeyVal= 0x43 (67) "C"
E: Type= R, KeyVal= 0xFE0A (65034) "ISO_Prev_Group"


nas widged:

E: Type= P, KeyVal= 0xFFE1 (65505) "Shift_L"
E: Type= P, KeyVal= 0xFE5A (65114) "dead_caron"
zde dostaneme +
E: Type= R, KeyVal= 0xFE5A (65114) "dead_caron"
E: Type= P, KeyVal= 0x43 (67) "C"
zde dostaneme C
E: Type= R, KeyVal= 0x43 (67) "C"
E: Type= R, KeyVal= 0xFE0A (65034) "ISO_Prev_Group"

Dekuji

s pranim hezke noci
Radek Cervinka






Další informace o konferenci Linux