Как включить метод ввода fcitx в программе fltk, работающей на Linux? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь ввести некоторые китайские иероглифы в моей программе 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 Ответ

0 голосов
/ 24 ноября 2018

Изучив метод ввода X, я обнаружил, что это ошибка в fltk> = 1.3.4 (правильная реализация fltk-1.3.3).

В строке 673 из src/Fl_x.cxxправильный код должен быть XSetLocaleModifiers(""); вместо XSetLocaleModifiers("@im=");.Строка 1329 имеет ту же проблему.

Просто исправьте эти две строки кода и перекомпилируйте библиотеку, методы ввода снова будут работать правильно.

Я также опубликовал сообщение об ошибке на сайте fltk, проверьте его подробнее.

...