[update] xcin-2.5.2-pre2 & libtabe-0.1-2
First I sorry that I cannot type in Chinese now, since the network
of my studying room is crashed again, and now I can only use a
Win95 computer, which does ont contain the useful input method of
For the interested one, please test this release:
Although xcin-2.5.2-pre2 can also use libtabe-0.1-1, but I still
recommand you to upgrade it to libtabe-0.1-2, since in this version
I have fixed a small bug in ETen26 keymake, and add several programming
This release of xcin have big improvement on the OverTheSpot input
style. There is a screen shot:
and it also fixed several bugs I mentioned in the previous articles:
"xcin & OverTheSpot" and "xcin & GUI Request Menu Selection". But for
the GREQ Menusel part, Mr. Y.Cheng suggested me to add callbacks to
simplize the API. This is a good suggestion and I will do it.
Although I haven't verified all the espects of this release, but I think
it should be much more reliable then the previous release, especially for
the OverTheSpot input style. It is welcomed to everybody to test it.
By default, xcin will not enable the OverTheSpot mode. You can edit
xcinrc file to enable it:
(define INPUT_STYLE '(Root OverTheSpot))
You can use the testprog program first for test. Go to
xcin-2.5/src/util/testprog directory, type make, and run:
./testprog -pt OverTheSpot &
Of course, you can still try it in rxvt. But rxvt has a problem, it does
not report its spot location correctly to xcin. In fact, I am not sure
what's the convention of the XIM clients to report their spot location.
Therefore, now I only use the convention which are both agreed by xcin
and testprog. So the OverTheSpot candidate window can always follow the
movement of its spot location.
The biggest chalange to implement OverTheSpot is the problem of rxvt
(at the input focus) crashing when xcin exiting. This is because under
OverTheSpot, rxvt will send its spot location to xcin at all times,
and xcin have to reply to its sending. When xcin is exiting, the Xlib
is too late to tell rxvt that xcin is exiting, so rxvt does not know
it and still send its spot locations to xcin. But xcin does not exist,
so rxvt crashes.
In theory, I have fixed this problem. I do synchronize between xcin
and Xlib when xcin is going to exit, to insure that xcin has processed
all the clients request sending from Xlib, and then exit. However,
IMdkit does not has the facility to let xcin send the synchronization
message to Xlib. So I modified IMdkit to add a function "IMSyncXlib()"
to approach. I do not have much time to describe this. If anyone is
interested in this, please give me an information, then I will write
an article about it.
Please test it and give the bug report if any.