This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: IME XIM server


Thank you. I write more detail.

*How to use
XWin -xim -multiwindow&
xime&
XMODIFIERS=@im=XIME emacs& 

*To do
1. off-the-spot and on-the-spot aren't implemented yet.
2. It supports Japanese locale only.
3. It can handle only CTEXT.
4. Multiwindow only.

*Problem
1. It ignores forwarded events from IM client.
2. When IME is open, it blocks all keyboard input.

General XIM server
 Windows             XWin                X Client                IM Server
  | WM_KEYDOWN       | XKeyEvent           | XIM_FORWARW_EVENT    |
  |----------------->|-------------------->|--------------------->|
  |                  |                     | XIM_COMMIT/FORWARD   |
  |                  |                     |<---------------------|
  |                  |                     |                      |

IME-XIM need to call TranslateMessage, and it has to handle WM_IME_* message.

IME-XIM server idea
  Windows             XWin                  X Client               IM Server
   | WM_KEYDOWN        | XKeyEvent           | XIM_FORWARW_EVENT    |
   |------------------>|-------------------->|--------------------->|
   |TranslateMessage(*)|                     | forward              |
   |<------------------|<-------------------------------------------|
IME| WM_IME_*          |                     |                      |
   |------------------>|------------------------------------------->|
   |                   |                     | XIM_COMMIT           |
   |                   |                     |<---------------------|
   |                   |                     |                      |

But I don't know how to do (*).
So now
Current IME-XIM implementation
  Windows             XWin                  X Client               IM Server
   | WM_KEYDOWN        | XKeyEvent           | XIM_FORWARW_EVENT    |
   |------------------>|-------------------->|--------------------->|ignore
   |TranslateMessage(*)|                     |                      |
   |<------------------|                     |                      |
IME| WM_IME_*          |                     |                      |
   |------------------>|------------------------------------------->|
   |                   |                     | XIM_COMMIT/FORWARD   |
   |                   |                     |<---------------------|
   |                   |                     |                      |
This causes problem #1 and #2.

Any idea?
-- 
Kensuke Matsuzaki
mailto:zakki@peppermint.jp
http://peppermint.jp


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]