Як змусити Compose працювати в додатках GTK та Qt?


16

Я довго використовував 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встановив.

Відповіді:


8

Знайшов рішення, яке працює для додатків GTK (але не Qt). Потрібно встановити

XMODIFIERS="@im=none"

щоб дозволити X11 обробляти мертві клавіші. Дякуємо @PabloSaratxaga за його відповідь .


3

У мене була подібна проблема в 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 . Я налаштував клавіші компонування за допомогою ~ / .XСкладіть таким чином. Я перевірив це як на системах ubuntu, так і в debian.


Проблема в тому, що навіть одноразовий метод перестав працювати. Інструкції щодо постійних змін специфічні для Debian / Ubuntu.
зустріч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.