[pygtk] Unicode X Input Method programming / classical Greek
Felix Rabe (public)
public at felixrabe.textdriven.com
Fri Mar 2 01:25:29 WST 2007
Is there an easy way to program an X input method using Python and what options exist to enter classical Greek? (I'm using Ubuntu 6.10 x86, soon upgrading to the 7.04 preview.)
The rest is just details:
I'm looking for a decent way to enter classical Greek (Greek with three accents and breathing signs and iota subscriptum and stuff) and am not satisfied at all by what I'm given choosing the "Greece Polytonic" keyboard in GNOME and then choosing "X Input Method" from the context menu. (I edited the /etc/X11/xkb/symbols/gr according to (something similar to) http://mail.nl.linux.org/linux-utf8/2006-01/msg00000.html .) The thing is, I get the accent and breathing mark laid on top of each other instead of next to each other (how it should be according to the Unicode 4.0 docs I'm currently reading). If you know classical Greek a little bit, you know how breathing signs are hard to read even if using a clear font. See the difference: ἔ vs. έ̓ - in Thunderbird I see the marks on the right side of the epsilon - copy&paste to a gtk.TextView (e.g. GEdit) using a large "Sans" font to see what I mean.
One weekend (before examining the XIM way) I quickly hacked sort of a private input method for a vocabulary trainer based on PyGTK Shell since I did not have Internet access. (Find it at www.felixrabe.net/pygtk-shell - running it, choose "File > New ML Text Editor" and hit Escape, then trial-and-error. It's more based on the Swiss-German keyboard layout and seems not to work on Win32.) I used the Character Map utility heavily to find all valid pre-combined Unicode characters - I did not know about the Unicode non-spacing marks then.
Ok, so this is not the proper way to do it, I don't like having a private input method in my software at all. I just want to properly enter classical Greek with pre-combined characters (because they just look right) in all GTK / X applications (including Terminal, and if possible, Mozilla and OpenOffice.org). At the moment, I would even implement an input method if none existed and the XIM symbol table can't be manipulated as desired.
More information about the pygtk