在fl_open_display()中添加以下两句:
// Add by cyantree, for root-window ime
if (!XSupportsLocale()) {
//(void) fprintf(stderr, "%s: X does not support locale %s.", program_name, setlocale(LC_ALL, NULL));
//exit(1);
}
if (XSetLocaleModifiers("") == NULL) {
//(void) fprintf(stderr, "%s: Warning: cannot set locale modifiers.", argv[0]);
}
原因是在crunchbang linux下面输入法是root-window模式,所以需要这么设置,至于什么是root window,可以参考x11的说明
另外在Elementary OS下面还是不能调用输入法,估计原因是差不多的,但是修正方法还不够,有空的时候再说,最近在折腾android移植到fltk,没什么时间