GrabDuck

Ubuntu 14.04: апгрейд и проблемы с раскладкой

:

Я обновил свою систему до Ubuntu 14.04, и этот апгрейд прошёл на удивление безболезненно. Всё то, что мешало жить, раздражало и в итоге вынудило откатиться с 13й ветки на 12.04, здесь исправлено и никак не мешает.

Есть правда одна проблема. И проблема эта связана с тем, что я не просто пользователь убунты, я пользователь который привык определённые вещи настраивать под себя. Так, например, я не пользуюсь юнити, т.к. не смог с ней ужиться по ряду причин (дело не столько в привычках, а в том, что некоторых функций там нет а заменить их она сильно мешает), и использую то, что раньше называлось Gnome Fallback, а в 14.04 называется Gnome Flashback.

Но особенно важно для меня, чтобы адекватно работала клавиатура.
Мои настройки управления раскладкой следующие:

  1. Раскладки запоминаются для каждого приложения.
  2. Раскладки переключаются по Caps Lock.
  3. Клавиатурный индикатор (светодиод) Scroll Lock отображает состояние раскладки. Если он светится - значит включена русская раскладка. Его заметить (даже боковым зрением) куда проще, чем мелкий значок в правом верхнем углу большого экрана.
  4. Временное переключение раскладок выполняется клавишей правый альт. Это позволяет в одно нажатие вводить при включённой русской раскладке такие символы как [, ], {, } и гораздо удобнее вводить, например, знак вопроса: зажимаем правые alt, shift и точку. Точно так же одной рукой без растяжек до цифр вводятся знаки :, ;, " и '. И всё это без переключения раскладки.
  5. Как клавиша compose работает кнопка контекстного меню. Эта клавиша позволяет вводить такие символы, как: «, », ←, →, —, –, ©, € и так далее.

Когда-то для настройки всей этой красоты нужно было править xorg.conf, потом в gnome появилась вполне адекватная настройка этого дела:

Однако, примерно в gnome 3.6 это дело выпилили, заменив весьма куцей настройкой, в которой можно настроить пункты 1, 2 и 5. Но остальные - нет. Более того, при смене раскладки теперь почему-то кратковременно теряется фокус приложения. И смена эта происходит как-то странно. Итак, если назначить переключение на caps lock, то в некоторых приложения оно работает просто как caps lock, а в некоторых - переключает раскладку. К тому же, очень часто при смене раскладки caps lock всё же кратковременно включается, так что при  быстром наборе первые буквы в новой раскладке часто получаются заглавными.

Это форменное безобразие. Не знаю, чем думают разработчики Gnome, но видимо их цель сделать так, чтобы Gnome стал удобным для пользователей разных устройств с сенсорным вводом, а людям, работающим за нормальными клавиатурами предлагается отвыкать от удобств.

Что ещё хуже, что простое использование setxkbmap для установки этих параметров не помогает. Не помогают и шаманства с gsettings и прочими gnome-tweak-tool (который в 14.04 глючный до невозможности им пользоваться).

Дело в том, что новый гном поддерживает много разных методов ввода, не только Xkb (а все вышеперечисленные фишки - это как раз его свойства). Итак, что нам нужно сделать:

  1. Уговорить гном использовать xkb.
  2. Проставить нужные параметры через setxkbmap.
  3. Сделать так, чтобы раскладки запоминались по приложениям.

Итак, делаем:

  1. Запускаем ibus-setup и снимаем там на первой вкладке галочку «показывать значок в области уведомлений», т.к. в нашей ситуации он бесполезен более, чем полностью.
  2. Заходим на вкладку «дополнительно» и выставляем там галочку «использовать системную раскладку клавиатуры». Вот теперь система будет использовать xkb и слушаться вас.
  3. После этого стандартный индикатор раскладки в ubuntu станет бесполезным, т.к. он не будет отображать того, какая на самом деле выбрана раскладка. Поэтому, его тоже можно скрыть. Для этого нужно открыть приложение «ввод текста» и снять там галочку «показывать текущий источник ввода в панели меню».
  4. Далее, прописываем параметры xkb через setxkbmap. Мой конфиг выглядит так:
    setxkbmap -option -option 'grp:caps_toggle,grp:switch,grp_led:scroll,compose:menu' -layout 'us,ru'
  5. Осталось сделать так, чтобы раскладка запоминалась в приложениях. Для этого устанавливаем пакет kbdd и запускем его.

Если вы хотите, чтобы эти параметры вступали в силу при каждом запуске системы, откройте «автоматически запускаемые приложение» и добавьте там команду для setxkbmap (пример выше) и для kbdd.