Как включить метод ввода fcitx в программе fltk, работающей на Linux?
Я пытаюсь ввести некоторые китайские символы в моей программе fltk, работающей на Linux, но не получилось. Я использую 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();
}
Когда я нажимаю на поле ввода, я не могу переключиться на мой китайский метод ввода, нажав ctrl + space
в программе fltk. Но в других программах с графическим интерфейсом, таких как Firefox или Atom, китайский метод ввода работает хорошо.
Я установил некоторые переменные следующим образом:
export XIM="fcitx"
export XIM_PROGRAM="fcitx"
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
Как включить метод ввода fcitx в программе fltk?
1 ответ
Изучив метод ввода X, я обнаружил, что это ошибка в fltk >= 1.3.4 (fltk-1.3.3 имеет правильную реализацию).
По строке 673 из src/Fl_x.cxx
, правильный код должен быть XSetLocaleModifiers("");
вместо XSetLocaleModifiers("@im=");
, Линия 1329 имеет ту же проблему.
Просто исправьте эти две строки кода и перекомпилируйте библиотеку, методы ввода снова будут работать правильно.
Я также разместил отчет об ошибке на веб-сайте fltk, проверьте его более подробно.