Я использовал 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установил.