LINUX.ORG.RU

Как помирить fcitx и переключение раскладки по CapsLock в KDE?

 , ,


0

2

Или, как вариант, настроить другой способ переключения между русским, английским и японским. Проблема в следующем: раньше нормально работал ibus-anthy, но с переходом KDE Neon на базу 18.04 (или чуть позже) он почему-то перестал работать. Поставил fcitx, но он далёк от принципов UNIX и почему-то перехватывает у системы задачу переключения раскладок, причём делает это криво (при попытке выставить в конфиге переключение по caps lock при перезапуске сбрасывается на не выставленное значение).

Что мне нужно (в идеале): при необходимости включить японскую раскладку запускаю fcitx, и получаю возможность включать mozc по отдельному сочетанию клавиш, не меняя системную раскладку, которая в данный момент используется и контролируется KDE.

Что происходит сейчас: если выключить init-скрипт fcitx, при ручном включении он не работает. Если оставить этот скрипт при загрузке, и выставить английскую раскладку по умолчанию, в целом, терпимо, но иногда при нажатии alt раскладка самопроизвольно переключается. Также добавляется третья японская раскладка, в которой caps lock отрабатывает как обычно, что делает невозможным циклическое переключение между раскладками. Есть ли возможность оставить fcitx как службу пр старте системы, но не включать её при входе пользователя?

★★★★

Что мне нужно (в идеале): при необходимости включить японскую раскладку запускаю fcitx, и получаю возможность включать mozc по отдельному сочетанию клавиш, не меняя системную раскладку, которая в данный момент используется и контролируется KDE.

Настройки → Дополнения → ☑Дополнительно → X Keyboard Integration → ☐ Allow to Override System XKB Settings. Перезапустить fcitx при необходимости.

Ну или совсем отключить плагин X Keyboard Integration, чтобы fcitx вообще не трогал системные раскладки. Но только зачем, если с кириллической раскладкой IME всё равно не станет работать как задумано и её (раскладку) придётся дополнительно переключать вручную, если до того была включена именно она?

Но при желании можно сделать наоборот и сразу все раскладки переключать только через fcitx. В чём-то он с этим способен справляться даже лучше, чем иксовые переключатели. Например, иксы не смогут добавить больше четырёх раскладок одновременно. А fcitx запросто!

toyo-chi ()
Ответ на: комментарий от toyo-chi

Спасибо. По переключению через fcitx 2 момента: во-первых, он не умеет переключаться по CapsLock, на сколько я понял, во-вторых, он же будет всегда переключаться через 3 раскладки, а не на последнюю использованную?

wingear ★★★★ ()
Ответ на: комментарий от wingear

Так, чтобы по однократному нажатию Caps Lock шло циклическое переключение между всеми доступными методами ввода, например en, ru и Mozc? Да, так похоже не умеет. На циклическое переключение у него жёстко заданы только четыре возможных комбинации. На CapsLock можно только повесить активацию/деактивацию режима IME. (Либо только активацию, либо только деактивацию, либо совмещённую активацию/деактивацию.) Тогда переключаться он будет именно между первой раскладкой из списка и последним использованным методом или раскладкой из всех остальных, но об этом чуть ниже.

Правда, сильно мешать будет, собственно, переключение режима Caps Lock — иксы же не перестанут его в этом случае переключать. Чтобы это исправить, следует вручную повесить на CapsLock что-нибудь другое. Для этого придётся немного залезть в низкоуровневые настройки клавиш:

keysym Caps_Lock = Hyper_L

Это добавить в ~/.Xmodmap — fcitx с некоторого момента умеет его читать и применять. И дальше уже в настройках fcitx: Общие настройки → ☑ Дополнительные настройки → Extra key for trigger input method = Custom → Custom switch key = <press CapsLock>. Ну или не switch, а Activate или Inactivate по вкусу. Эта клавиша Hyper вряд ли станет с чем-нибудь пересекаться, не считая Openbox, i3 и Emacs!

И еще тот самый тонкий момент. По некоторым причинам fcitx по-особенному обрабатывает первую раскладку из своего списка. Точнее, она у него проассоциирована с состоянием «IME деактивирован», тогда как все остальные, соответственно, с «IME активирован». То есть вот эта Switch key переключает только между первой раскладкой и последней выбранной из всех остальных раскладок и методов. А у циклического переключения в свою очередь есть два режима: либо переключаться между вообще всеми доступными раскладками и методами, включая первый, либо между всеми кроме первого. Но не выйдет сделать так, чтобы us и ru были для fcitx равнозначны, если только не поставить на первое место Mozc. Но у этого есть свои неудобства. В общем, не совсем то, что задумано.

Но разве удобно переключать раскладки циклически? Особенно если можно назначить по отдельной комбинации для прямого переключения на любой из доступных методов или раскладок. Ну, кроме той самой первой. И это можно сделать с плагином Input Method Selector, с которым fcitx окончательно оформляет своё превосходство над чистым иксовым переключателем в конфигурациях с более чем двумя раскладками/методами. И чем их больше, тем оно заметнее. Не хватает разве что только высокоуровневых иксовых «Switch while pressed».

Кстати, если fcitx добавляет японскую раскладку (именно раскладку, а не метод ввода) — скорее всего не включен плагин Keyboard Layout as Input Method. Или японский IME в какой-то момент был поставлен первым. В таком случае следует включить плагин или поставить на первое место обычную раскладку соответственно. После релогина всё должно вернуться на место.

toyo-chi ()
Ответ на: комментарий от wingear

В настройках fcitx

Активация метода ввода Capslock

Задать горячую клавишу для пролистывания методов ввода - галку включить.

Пролистывание методов ввода ALT_SHIFT

Во вкладке Дополнения

X Keyboard Integration включен, в его опциях убраны обе галки и все работает. Так что отключать совсем необязательно.

И конечно базовым языком не может быть русский - иначе системная раскладка не даст использовать IME. А также русский язык нельзя использовать в самой IME перед конвертируемыми при пролистывании языков, потому что опять останется русский язык. Основное зачем используется fcitx это возможность настроить шрифты и их цвет, а также более стабильно переключение при быстрых нажатиях. ibus бывает тупит на ровном месте.

И конечно базовым языком не может быть русский - иначе системная раскладка не даст использовать IME. А также русский язык нельзя использовать в самой IME при пролистывании языков, потому что опять останется русский язык. Основное зачем используется fcitx это возможность настроить шрифты и их цвет. Так то удобства в возможности переключить раскладку только в активном окне нет, что дает делать ibus. И для wayland сессии вероятно нужно добавить что-то вроде

GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx exec startplasmacompositor

Или в .xprofile

export XMODIFIERS=@im=fcitx

export QT_IM_MODULE=fcitx

export GTK_IM_MODULE=fcitx

fcitx -d

Вот только капс подобьет ромадзи ввод, потому как будет все буквы большие слать - они же маленькие в японском. Но переназначить клавишу можно и иначе, лишь бы на том же месте была. Хоть символ из неиспользуемой раскладки на нее повесить, чтобы вообще ни с чем не пересекалось. Кана метод может отбить все желание им пользоваться из-за постоянных шифтов, хоть и не имеет проблем с капсом.

anonymous ()
Ответ на: комментарий от toyo-chi

выключил x keyboard integration, но в итоге просто перестало работать. Пока включил обратно, выключаю fcitx, если он начинает самовольно переключать раскладки (в основном, почему-то, в скайпе, когда одна буква была написана заглавной через shift, а следующая - уже нет, и воспроизводится не всегда). Учитывая, что это не единичный случай, + иногда раскладки переключаются при смене фокуса, пока не хочется оставлять его рулить раскладками - наверное, это в итоге можно настроить, но мне от него нужно просто переключение на Mozc по нажатию определённого хоткея и отсутствие переключения системной раскладки с его стороны. Пока одновременно этого не получается добиться

wingear ★★★★ ()
Ответ на: комментарий от wingear

Отключить интеграцию с иксами или выключить в свойствах интеграции галки. Убрать лишние раскладки в fcitx. Останется английская, Mozc. Но по сути переключаясь на английскую fcitx будет отдавать управление системной раскладке. Системная раскладка не будет никак затронута, если отключить интеграцию с иксами. Она нужна только если fcitx будет рулить всеми раскладками в системе. Но переключает он их медленнее, хотя есть и плюс, что он будет иметь русский на первом месте, затем английский и в конце Mozc. Системная раскладка в иксах и для вейланд задается отдельно, если это sway (там используется его конфиг или строка запуска). Описанное поведение весьма странное. Плазма имеет отдельную интеграцию, чтобы системные раскладки и Fcitx (Mozc) переключать вместе, даже если системная раскладка отдельно от иксов. Для нормальной работы достаточно выключить дополнения Auto English mode, Pinyin, Simplified Chinese to Traditional Chinese, Table, Quwei Enhance pinyin input for Fcitx, Virtual Key Board, а в X Keyboard Integration выключить галки в настройках.

anonymous ()
Ответ на: комментарий от wingear

Главное убедиться, что используется пролистывание методов ввода и клавиша/сочетание клавиш разные в fcitx и системе. То есть если будут два Ctrl+Shift системная раскладка все равно будет срабатывать.

anonymous ()