Linux, измените поведение текстового поля - PullRequest
0 голосов
/ 12 марта 2012

У меня есть идея написать программу, которая изменяет поведение текстовых полей в Linux. Я хочу, чтобы программа автоматически меняла язык ввода текста в соответствии с направлением текста текстового поля во всей системе. Например, если у меня установлен английский и иврит и я щелкаю текстовое поле в каком-либо программном обеспечении, которое обычно выводит текст справа налево, программа автоматически изменит язык ввода текста на иврит. Если я щелкну текстовое поле, в котором текст выводится слева направо, программа переключит язык на английский.

Я не знаю много о системном или пользовательском программировании в Linux (более опытно в Windows), и я не знаю, с чего начать. Есть ли способ зарегистрировать «хуки» для элементов GUI в Gnome и KDE? Может быть, мне стоит добавить это в код Gnome и KDE?

Буду признателен за любые советы о том, как начать.

Большое спасибо,

Одед.

1 Ответ

1 голос
/ 12 марта 2012

Первые несколько предостережений:

Обычно выравнивание текстового поля для оконных инструментов GUI либо явно задается программой, либо устанавливается на основе обнаруженного языкового стандарта системы (по крайней мере в Qt и GTK) либо в соответствующем текстовом объекте QLineEdit в Qt или GtkEntry в GTK или в объекте Layout более высокого уровня, который их содержит.

Это сказано для реализации функциональности по крайней мере для ваших собственных программ, вам нужно будет определить несколько вещей

  • GTK или Qt или оба?Если вы реализуете на базовом уровне (т.е. не только привязки), то это также означает C или C ++ или оба?
  • GTK 2 или GTK 3, QT 3 или QT4?
  • Какие текстовые виджетына каждый GUI инструментарий вы хотите переопределить?Только те два, о которых я упоминал выше, или любые или все возможные текстовые виджеты в любой библиотеке?
  • Вы хотите, чтобы ваше поведение работало независимо от установленного языкового стандарта?Например, если у вас установлен языковой стандарт LTR, вы хотите, чтобы текстовые виджеты с выравниванием по праву переключали метод ввода?
  • Какой метод переключения метода ввода вы хотите использовать?SCIM, XIM, ibus или просто immodule (в обеих формах GTK и Qt)?Поддерживают ли эти методы ввода программное изменение ??
  • Что произойдет, если у пользователя установлено 2 или более языков LTR или еще 2 установленных языка RTL?Они выбирают какой язык?Существуют ли текущие настройки локали?

Предполагается, что вы хотите перейти по пути immodule

См. Следующие ресурсы для Qt

См. Следующие ресурсы для GTK

Общий метод такой же.

  1. Реализовать обработчик событий, когда текст вводится в виджет, но до его отображения в виджете.
  2. Переключение метода ввода на основе свойства выравнивания виджета

Ресурсы по обучению GTK

Ресурсы по обучению QT

Из вашего комментария кажется, что вместо этого вы пишете свой собственный механизм InputMethod или модифицируете существующий.

Чтобы загрузить его по умолчанию в программах Gnome и KDE, не сложно, просто установитеметод ввода на основе ассоциации локали.Сложная часть заключается в том, что InputMethod знает о местоположении, в которое он вводится.Обычно InputMethod не знает о вызывающем приложении, не говоря уже о графической оболочке, в которой оно написано.

Ресурсы по методам ввода

...