Intereting Posts
Доступ к сетевой службе NAT для динамического открытого IP-адреса из локальной сети Терминал не может найти никаких команд! Как перемещать / var / log на другой диск? Как получить второй столбец из вывода команды? Как вы загружаете Puppy Linux Slacko в командную строку? Доступ к домену RO Как перенаправить вывод при использовании документа здесь Длительное время загрузки на debian: «usb 1-x: новый высокоскоростной USB-устройство с номером y с помощью xhci_hcd» Как я могу определить, какой процесс управляет корневым окном? Сравните 1-й столбец 1-го файла и 2-й столбец второго файла и получите результат следующим образом Почему CTRL + L в терминале не будет очищать экран, как cls в Powershell После удаления ошибки linux Grub GRUB2 видит загрузчик Windows 10, если окна были установлены после GRUB в GPT / EFI? apt-get не может определить правильную версию python при использовании альтернатив обновления для python Создание логического тома определенного размера LVM в конце физического тома

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

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

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

Теперь я использую простой диспетчер окон и настраиваю свою клавиатуру с помощью setxkbmap . В то время как клавиатура снова работает хорошо, я не мог получить ключ Compose, работающий повсюду. 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 

и включите такой способ :

 setxkbmap ... -option 'compose:menu' 

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

 $ echo $GTK_IM_MODULE $QT_IM_MODULE xim xim 

Ключ компоновки распознается 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 ' , то приложения echo ' немедленно, не дожидаясь третьего ключа в последовательности.

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

PS Существует аналогичный (и неотвеченный) вопрос о том, что ключ Compose не работает в GTK . В отличие от меня, у меня нет установленного ibus .

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

 XMODIFIERS="@im=none" 

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

Это способ постоянной конфигурации. Он описан, например, здесь https://wiki.edubuntu.org/ComposeKey#line-66 . Я сконфигурировал создание ключей с ~ / .XCompose таким образом. Я проверил это как на ubuntu, так и на debian-системах.

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

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

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