[immodule-qt] Re: [SCIM] scim-qtimm 0.7 released

LiuCougar liucougar at gmail.com
Sun Sep 5 00:17:41 EEST 2004


On Sun, 05 Sep 2004 13:01:20 +0200, David <david at plm11.pl> wrote:
> *This message was transferred with a trial version of CommuniGate(tm) Pro*
> LiuCougar wrote:
>
> I would like to ask, whether Vietnamese m17n-vi-viqr is working
> correctly for you? It seems broken to me.
> I type: To^i te^n la` Dda vi.t.
> I should get: Tôi tên là Đa vịt.
> I am getting: Tô itnê là Đ avịt.
> 
> Can you confirm that? Or it is just something wrong on my system?
Confirmed. This is a potential issue deep in the qt-immodule patch,
rather than scim-qtimm itself.

Let's take "ds" as the example: 
if you type "ds" in qt apps with Vietnamese m17n-vi-viqr, you should
see "ds", but with the current qt-immodule, you would get "sd"!

This is due to the fact that the IMEnd event in qt-immodule is posted
to be processed later. However, in the Vietnamese m17n-vi-viqr input
method, after pressing "s", the first "d" is committed and the "s" is
forwarded to qt. Because the commit of "d" is scheduled while the
forward of "s" takes effect immediately, we get "sd", rather than "ds"
as expected
.
I changed one function in kernel/qapplication_x11.cpp to overcome this issue:

void QApplication::postIMEvent( QObject *receiver, QIMEvent *event )
{
    if( event->type() == QEvent::IMCompose )
        postEvent( receiver, event );
    else {
        sendEvent( receiver, event );
        delete event;
    }
}

(With this modification, the input "To^i te^n la` Dda vi.t." will
generate the correctly output.)

Of course, I think we need more discuss to decide how we can solve it
in a more appropriate method.

> I would also like to learn how to write input modules for SCIM with
> behaviour similar to Vietnamese (several keys that add diacritics - for
> example to enter transcriptions in linguistic texts that make heavy use
> of diacritics) and similar to Chinese (presenting candidate characters -
> as an example can be IME to input cuneiform - it should behave exactly
> as Chinese IMEs). Is there some tutorial or documentation for this
> available, or the only way to learn to do it is to read the sources?
Unfortunately, currently no doc about writing IMEngine exists.
However, please have a look at the src/scim_compose_key.cpp and
src/scim_compose_key.h in scim-lib, you can see it is not so hard to
implement IMEngines. If you have any questions, do not hesitate to ask
here.

Regards,
Cougar

-- 
"People's characters are strengthened through struggle against
difficulties; they are weakened by comfort."
- Old Chinese adage



More information about the immodule-qt mailing list