Menu

#73 Compose key is buggy, wrong compose table

1.4.x
closed-wont-fix
nobody
None
5
2006-06-27
2006-06-27
No

This is Suse 10.1 with vendor packages:
> rpm -qa scim scim-* skim* skim-*|sort
scim-1.4.4-23
scim-input-pad-0.1.1-15
scim-m17n-0.2.0-15
scim-pinyin-0.5.91.20050815-17
scim-pinyin-skim-0.5.91.20050815-17
scim-qtimm-0.9.4-15
scim-tables-0.5.6-17
scim-tables-additional-0.5.6-17
scim-tables-skim-0.5.6-17
scim-tables-zh-0.5.6-17
skim-1.4.4-13

> X -version
X Window System Version 6.9.0

> konqueror -v
Qt: 3.3.5
KDE: 3.5.1 Level "a"

> rpm -q gtk2
gtk2-2.8.10-36

> set|grep -i scim
GTK_IM_MODULE=scim
QT_IM_MODULE=scim
XMODIFIERS=@im=SCIM

> tail -1 .XCompose
<Multi_key> <less> <minus> : "←" U2190 #
arrow left <-

scim uses an internal Compose table different from the
normal one which for most users and locales is
/usr/X11R6/lib/X11/locale/en_US.UTF-8/Compose. The scim
wiki hints at that, but I was not able to confirm that
fact until yesterday.

Earlier postings suggest this has been broken all
along, see
<http://lists.suse.com/archive/m17n/2005-Jun/0024.html>
"you have scim installed and you are using the Compose
support built into scim, not the compose support of X11."

<http://groups.google.com/group/nlo.lists.linux-utf8/msg/63d1022bb53bd148>
"It seems that when scim is running, only its own
internal version of the compose file is used.
Customisations in ~/.XCompose do not work at all. With
uim, they work."

The bug shows thusly:

As long as scim is properly installed and running,
pressing the Compose key (by default
shift+right_control in Suse) only allows to enter a
small number of composed characters from the internal
table, but only in gtk applications (gtk-demo,
xchat...). The compose key has no effect in plain X
apps (xterm) or KDE apps (konsole, kate, konqueror) at
all. Customisations in ~/.XCompose are ignored.

Example of key sequences after pressing Compose key
(I'll also name the unicode term in case this web form
gets mangled):
a e gives æ U+00E6 LATIN SMALL LETTER AE
/ l gives nothing
< - gives nothing

When I unset the environment variables
> export GTK_IM_MODULE=
> export XMODIFIERS=
> export QT_IM_MODULE=
effectively disabling scim, and start applications from
this window, xterm and gtk-demo show the correct behaviour:

a e gives nothing
/ l gives nothing
< - gives ← U+2190 LEFTWARDS ARROW

(Settings in .XCompose completely replace settings in
/usr/X11R6/lib/X11/locale/...)

However in konqueror launched from there:

a e gives æ U+00E6 LATIN SMALL LETTER AE
/ l gives nothing
< - gives nothing

Additionally, messages to stdout can be observed:
sending IMStart with 0 chars to 0x82b5360
sending IMEnd with 1 chars to 0x82b5360, text=æ

Expected behaviour

With scim/skim completely uninstalled,

a e gives nothing
/ l gives nothing
< - gives ← U+2190: LEFTWARDS ARROW

and in the absence of .XCompose,

a e gives æ U+00E6 LATIN SMALL LETTER AE
/ l gives ł U+0142 LATIN SMALL LETTER L WITH STROKE
< - gives nothing (is a customisation)

in all applications.

Conclusion

scim must not use its own internal table but use
whatever the current X compose table is.

Discussion

  • James Su

    James Su - 2006-06-27

    Logged In: YES
    user_id=13130

    It's a known behaviour. X11's compose table is conflict with
    other input method frameworks. It'll only take effect when
    XMODIFIERS is set to "@im=local" and xim input method module
    is used (in both gtk and qt).

     
  • James Su

    James Su - 2006-06-27
    • status: open --> closed-wont-fix
     

Log in to post a comment.