我试图在linux上运行的fltk程序中输入一些汉字,但失败了。我正在使用fcitx,特别是fcitx-googlepinyin作为中文输入法。
下面的代码将生成一个包含单个输入框的窗口。
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
int main(int argc, char **argv) {
Fl::scheme("GTK+");
Fl::background(35, 35, 35);
Fl::background2(90, 90, 90);
Fl::foreground(240, 240, 240);
Fl_Window *window = new Fl_Window(640, 480);
Fl_Input *input = new Fl_Input(20, 20, 200, 20);
window->end();
window->show(argc, argv);
return Fl::run();
}当我点击输入框时,我无法通过在fltk程序中按ctrl + space来切换到我的中文输入法。但是在其他GUI程序如Firefox或Atom中,中文输入法工作得很好。
我将一些变量设置为:
export XIM="fcitx"
export XIM_PROGRAM="fcitx"
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"如何在fltk程序中启用fcitx输入法?
发布于 2018-11-24 17:44:58
在研究了X输入方法之后,我发现这是fltk >= 1.3.4中的一个错误(fltk-1.3.3有正确的实现)。
在src/Fl_x.cxx的第673行中,正确的代码应该是XSetLocaleModifiers("");而不是XSetLocaleModifiers("@im=");。第1329行也有同样的问题。
只要更正这两行代码并重新编译库,输入方法将再次正确工作。
我还在fltk的网站上发布了一个错误报告,查看它以获得更多细节。
https://stackoverflow.com/questions/53457195
复制相似问题