Turns out IME behaves differently for every language, in terms of the event data it produces in SDL. I think all of CJK are now working reasonably well, the same keystrokes as in Firefox or emacs will produce the same output. Even the candidates list is showing up somehow.