Comment #3 on issue 1419 by [email protected]:
Were "enabled"/"disabled" signals and enable()/disable() methods
accidentally removed?
http://code.google.com/p/ibus/issues/detail?id=1419
Hi Fujiwara-san,
The problem is there is no way for IM client to know passively that IM
engine was changed. Where "passively" means receive a signal.
ibus-mode switches the keymaps in Emacs-side according to the state of
current IM engine, in order to reduce IPC (IPC is very expensive and risky
for Emacs!) and prevent from undesired key-mappings which disturb robust
command execution. Also, ibus-mode needs indicating the name of the
current IM engine in the Emacs' mode-line, because the fullscreen mode
hides the desktop notification area.
If there are no signals such as "enabled"/"disabled", ibus-mode must call
ic.get_engine() dozens of times per second to watch the change of IM
engines. Of course that is extremely expensive.
So I think "enabled"/"disabled" signals still necessary for IM clients to
know if *actual* IM engine (not xkb!) is active. "enabled" signal should
be emitted when IM engine is selected, and "disabled" signal should be
emitted when xkb engine is selected.
Another problem is there is no way to toggle IM engine except for
process_key_event().
Many Emacs user unset the key-binding of Ctrl+SPC event in ibus-mode's
keymap because they want to use it for `set-mark-command'. They hate IBus
to consume Ctrl+SPC event. As a substitute for Ctrl+SPC, ibus-mode
provides `ibus-toggle' command which uses ic.enable() and ic.disable()
internally to toggle IM engine. ic.process_key_event(Ctrl+SPC) cannot be
used for this purpose because that is not robust way (It does not work if
the key binding is changed in ibus-setup).
Therefore, enable()/disable() methods still necessary to switch xkb engine
and IM engine. Where enable() switches xkb engine to IM engine, disable()
switches IM engine to xkb engine.
I cannot understand why such important features were dropped.
Regards,
--
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en