Как заставить Compose работать в приложениях GTK и Qt?

15

Я использовал Gnome долгое время, но предпочитал метод ввода vanilla X ( xim), а не поведение GTK по умолчанию. Я просто установил GTK_IM_MODULEи QT_IM_MODULEпеременные окружения на xim, и у меня не было никаких проблем с конфигурацией с несколькими компоновками, Composeключами, пользовательскими расширениями ~/.XComposeи misc:typoрасширениями типографики.

Недавний Gnome 3.6 полностью прикрутил ввод с клавиатуры, поставив недоделанную и глючную ibus и навязав ее пользователям . Я просто не мог заставить клавиатуру работать так же хорошо, как раньше (даже с ibusотключенным), и мне пришлось полностью отказаться от Gnome.

Теперь я использую простой оконный менеджер и настраиваю клавиатуру с помощью setxkbmap. В то время как клавиатура снова работает хорошо, я не мог заставить клавиатуру работать везде. Compose работает в простых приложениях X11 ( xterm), но не работает ни в GTK2, ни в GTK3, ни в приложениях Qt.

Я использую текущие версии Archlinux:

xorg-xinput 1.6.0
xorg-server 1.13.1
xf86-input-keyboard 1.6.2
gtk2 2.24.14
gtk3 3.6.4
qt 4.8.4

и включите Composeключ так:

setxkbmap ... -option 'compose:menu'

и экспорт GTK_IM_MODULE, QT_IM_MODULEпеременные:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

Compose ключ правильно распознан X11:

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
135 Multi_key

Работает нормально xterm, последовательности из моего ~/.XComposeвключены. Это не работает ни в приложениях GTK, ни в Qt. Допустим, если я вхожу Compose ', то приложения эхом 'сразу, не дожидаясь третьего ключа в последовательности.

Теперь я полагаю, что что-то изменилось либо в Xorg (потому что Composeон не работает в приложениях Qt), либо в GTK и Qt. *_IM_MODULEпеременных сейчас недостаточно. Что еще требуется, чтобы современные GTK и Qt распознали ximи их последовательности Compose?

PS Есть похожий (и без ответа) вопрос о том, что ключ Compose не работает в GTK . В отличие от аскера, я не ibusустановил.

sastanin
источник

Ответы:

7

Нашел решение, которое работает для приложений GTK (но не Qt). Нужно установить

XMODIFIERS="@im=none"

чтобы позволить X11 обрабатывать мертвые ключи. Спасибо @PabloSaratxaga за его ответ .

sastanin
источник
2

У меня была похожая проблема в openSUSE. ~/.XComposeприложения GTK + будут игнорироваться, поэтому мои собственные последовательности Compose не работают в Firefox, Gimp и других.

Я узнал, что gtk-query-immodules-2.0перечислил несколько методов ввода, но не xim; поэтому, независимо от GTK_IM_MODULEпеременной, ximбыл недоступен. Установка пакетов gtk2-immodule-xim(и друзей) решила проблему.

Может быть, это замечание окажется полезным для людей, страдающих от того же проклятия.

лингвист
источник
1

Это способ постоянной настройки. Это описано, например, здесь https://wiki.edubuntu.org/ComposeKey#line-66 . Я настроил составление ключей с помощью ~ / .XComepose таким образом. Я проверил это как на системах Ubuntu и Debian.

ASTEN
источник
Проблема в том, что даже одноразовый метод перестал работать. Инструкции для постоянных изменений специфичны для Debian / Ubuntu.
Састанин