关于XIM的那些输入模式

我一直弄不清楚,over-the-spot, on-the-spot, off-the-spot, root-window这帮东西到底有啥区别
今天查了某oracle资料:http://download.oracle.com/docs/cd/E19504-01/802-7789/6ibcsnfb8/index.html

首先这些都是预编辑内容的模式,就是那些你打了但是还没确认的那些字的显示方法……
貌似over-the-spot是在光标处会出现当先的预编辑内容,但是不会把原有内容自动后移,因此新内容显示起来会覆盖在老的上面。确认之后,新的会把老的挤到后面去。
on-the-spot也是在光标处出现预编辑内容,但是会在预编辑,也就是还没确认的时候就把老内容挤到后面去。
off-the-spot貌似是在窗口左下角之类的位置出一个窗口自己显示预编辑内容,反正应用程序不用关心……
root-window据说会在屏幕底下划出一块来显示预编辑内容,莫非是类似从前dos的输入法…… X上没见过。

反正前两个都要程序管,第三个要输入法自己画。

搞这个是因为,今天实现了GeManX对于输入法预编辑的支持,顺路看了看这方面资料…… 因为新ibus好像不关心你程序自己说自己支不支持预编辑,他总是认为你支持,这就导致本来不支持的GeManX没地方显示预编辑内容了……

另,有人知道gtk_im_context_get_preedit_string()返回的东西啥编码么?一定是UTF-8?根据locale?