Переключение раскладок: борьба с забывчивостью

Алексей Федорчук

Кто из применителей может сказать, положа руку на сердце и поклявшись на своём Священном Писании, что он никогда, никогда, никогда… не забывал переключать раскладку клавиатуры с латицы на кириллицу? Эта естественная человеческая зависимость породила три группы программ (и «программулек», сиречь апплетов):

  • индикаторы текущей раскладки, каковые нынче именно апплетами обычно и являются;
  • shell-скрипты для исправления текста, набранного в «не той» раскладке;
  • автоматические корректировщики вводимого текста.

О первых говорить не буду — они ничему не мешают. Но не особо и помогают: забыв переключить раскладку, не всегда вспомнишь и о том, что нужно посмотреть на её индикатор, будь он экранный или led-огонёк на клавиатуре.

О shell-скриптах тоже сказать особо нечего — от них также нет никакого вреда, но не всегда есть и польза: если вовремя заметить, что в «не той» раскладке набрано одно слово или его кусок, обычно проще и быстрей тут же перенабрать его, нежели выделять кусок текста и запускать скрипт.

Что же до автоматических корректировщиков — они проделывают свою работу на лету, как только обнаруживают, что вводимая последовательность символов не соответствует языку создаваемого документа. И тогда они сами собой переключают раскладку и переписывают «неправильный» фрагмент. Наиболее известные программаы этого класса (а это уже «настоящие» программы) — Punto Switcher для Windows и X Neural Switcher для Linux (точнее, для Иксов, ибо работает также и в любых BSD-системах).

Достоинства и недостатки автоматических корректировщиков обсуждались бессчётно, поэтому повторю только главный из последних: Xneur (а про другие здесь говорить неуместно) принадлежит к тем программам, которые полагают себя умнее своих создателей (и, тем более, применителей), и потому часто автоматика его срабатывает прозвольным образом. Конечно, он имеет и «ручной» режим работы, но к нему применимо всё, сказанное ранее про shell-скрипты. Поэтому «проблему забывчивости» можно попытаться решить другим способом.

Как известно, в Оксфордском университете, воспитывавшем английских джентльменов, учили мыть руки после туалета. А в более прагматичном Кембридже, давшем миру немало естествоиспытателей, учили не справлять малую нужду на руки. Первому алгоритму следуют все корректировщики, как ручные, так и автоматические. Второй же алгоритм можно реализовать, сведя к минимуму вероятность забывчивости при наборе. И это — так называемые немодальные (или нециклические) переключатели раскладок.

Суть немодальных переключателей в том, что они ничего не переключают, а включают. То есть одна определённая клавиша (или их комбинация) всегда включает английскую раскладку, а другая делает то же самое для раскладки русской. И в использовании их есть только одна проблема — привыкание. То есть нужно отучиться смотреть на индикаторы раскладки. Нужно забыть о том:

  • какая раскладка является текущей;
  • какая раскладка является умолчальной;
  • от кого наследуется раскладка нового окна — от корневого окна (то есть повторяет умолчальную) или от окна текущего.

А помнить нужно только одно: перед вводом любого кириллического текста нажать, скажем, комбинацию Shift+CapsLock, а переходя к вводу латиницы — клавишу CapsLock. Подобно тому, как при вводе прописной буквы мы автоматически нажимаем Shift, не задумываясь особо о причинах этого.

Указанными вариантами немодальные переключатели не ограничиваются. И определить их можно только тем же образом, как и переключатели модальные. В Cinnamon это делается через его Системные настройки, пункт Клавиатура, вкладку Раскладки клавиатуры и кнопку Параметры:

nomod-sw_001

Или — через меню индикатора раскладок в трее:

nomod-sw_002

Аналогичные средства есть и во всех других интегрированных средах. А в оконных менеджерах, скорее всего, следует прибегнуть к команде setxkbmap — в сети на эту тему можно найти немало материалов.

Далее, чтобы побороть забывчивость при переключении раскладок, надо переключать их как можно реже. И на сей предмет придуманы временные переключатели, действующие, пока нажата определённая клавиша — в частности, они совершенно незаменимы при вводе типографских символов с использованием клавиши Compose. Причём они не исключают использования любых постоянных переключателей, как модальных, так и немодальных.

Традиционно в качестве временного переключателя используется правая клавиша Control, но и тут выбор достаточно велик:

nomod-sw_003

А вообще все возможные переключатели раскладок, модальные, немодальные и временные, можно посмотреть в файле /usr/share/X11/xkb/rules/evdev.lst — в секции ! option, где они перечислены в строках, начинающихся с grp:

! option
  grp                  Switching to another layout
  grp:switch           Right Alt (while pressed)
  grp:lswitch          Left Alt (while pressed)
  grp:lwin_switch      Left Win (while pressed)
  grp:rwin_switch      Right Win (while pressed)
  grp:win_switch       Any Win key (while pressed)
  grp:caps_switch      Caps Lock (while pressed), Alt+Caps Lock does the original capslock action
  grp:rctrl_switch     Right Ctrl (while pressed)
  grp:toggle           Right Alt
  grp:lalt_toggle      Left Alt
  grp:caps_toggle      Caps Lock
  grp:shift_caps_toggle Shift+Caps Lock
  grp:shift_caps_switch Caps Lock (to first layout), Shift+Caps Lock (to last layout)
  grp:win_menu_switch  Left Win (to first layout), Right Win/Menu (to last layout)
  grp:lctrl_rctrl_switch Left Ctrl (to first layout), Right Ctrl (to last layout)
  grp:alt_caps_toggle  Alt+Caps Lock
  grp:shifts_toggle    Both Shift keys together
  grp:alts_toggle      Both Alt keys together
  grp:ctrls_toggle     Both Ctrl keys together
  grp:ctrl_shift_toggle Ctrl+Shift
  grp:lctrl_lshift_toggle Left Ctrl+Left Shift
  grp:rctrl_rshift_toggle Right Ctrl+Right Shift
  grp:ctrl_alt_toggle  Alt+Ctrl
  grp:alt_shift_toggle Alt+Shift
  grp:lalt_lshift_toggle Left Alt+Left Shift
  grp:alt_space_toggle Alt+Space
  grp:menu_toggle      Menu
  grp:lwin_toggle      Left Win
  grp:rwin_toggle      Right Win
  grp:lshift_toggle    Left Shift
  grp:rshift_toggle    Right Shift
  grp:lctrl_toggle     Left Ctrl
  grp:rctrl_toggle     Right Ctrl
  grp:sclk_toggle      Scroll Lock
  grp:lctrl_lwin_rctrl_menu LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)

Руководствуясь этим списком, переключатели раскладок (в числе прочих параметров) можно изменить и через Dconf Editor. В Cinnamon это делается по схеме org.gnome.libgnomekbd.keyboard, в строке options:

nomod-sw_004

Наконец, эту процедуру можно проделать и прямой командой gsettings — правда, для этого надо знать на память и схему, и имя ключа, и его значения. Или долго и нудно выяснять через внутренние команды той же gsettings.

P.S. Всё сказанное в полной мере применимо только к стандартным AT-клавиатурам. При использовании клавиатур ноутбучных и компактных придётся исходить из имеющихся реалий.

И последнее: выражаю признательность Станиславу Шрамко aka stanis, который надоумил меня на использование немодальных переключателей, и Bormant’у, напомнившему о переключателях временных.

Переключение раскладок: борьба с забывчивостью: 9 комментариев

  1. Xneur нормально работает, если его настроить. Я поначалу тоже на него плевался и удалял, пытаясь приучить себя к ручному переключению, но так и не приучился и решил разобраться с Xneur. О чем не жалею.

  2. В debian-подобных системах православно настраивать раскладки в /etc/default/keyboard, без привязок к de/wm:

    [Commodore ~]$ cat /etc/default/keyboard
    # KEYBOARD CONFIGURATION FILE
    # Consult the keyboard(5) manual page.
    XKBMODEL=»pc105″
    XKBLAYOUT=»us,ru»
    XKBVARIANT=»,»
    XKBOPTIONS=»grp:caps_toggle,grp_led:scroll,compose:ralt»
    BACKSPACE=»guess»

  3. User, православие в дебиане не при делах.
    Вы упоминаете о настройке раскладки для работы в консоли. Так она также настраивается во всех Ubuntu и базирующихся на ней осях.

  4. На X’ы данные настройки тоже распространяются.

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

    P.s.: Применение немодальных как впрочем и любых переключателей не отменяет визуального контроля вводимого текста.

  6. 2 Anton Serov
    у Xneur есть абсолютно неприемлемая для меня черта — он работает только с вариантом winkeys русской раскладки, а я использую typewriter-legacy

  7. 2 User
    В любом дистрибутиве православно, как вы выражаетесь — это когда каждый пользователь настраивает раскладки и переключатели по своему
    по крайней мере, имеет такую возможность

  8. 2 Vita
    > Назначенное на одну-единственную клавишу с логотипом окошек переключение раскладок, по-моему, самое простое решение
    Если единственная клавиша — то это вопрос привычки.
    Традиционных переключатель, который некогда прошивался во всех Юниксовых и Иксовых раскладках (а не настраивался, как потом) — это CapsLock
    Первая русская раскладка Ache, кстати, была то, что теперь называют typewriter-legacy

    > Применение немодальных как впрочем и любых переключателей не отменяет визуального контроля вводимого текста.
    Оно конечно, если есть чем визуалить.
    У меня иногда бывает, что нечем :)
    Поэтому на экран стараюсь смотреть как можно меньше и исключительно целенаправленно. Этому меня 40 лет назад научил мой Учитель петрографии и микроскопии.

  9. User, или уж Православие или демоны )
    Vita, лучшее решение — это осовение слепого метода печати, когда на клавиатуру вообще не глядят, а смторят текст на экране, а пальцы сами бегают.
    УВЫ. я смотрю на клавиатуру, куда нажимать. И очень раздражаюсь, когда забываю переключить раскладку. а xneur раздражает глюками. приходится метаться между двумя раздражениями

Добавить комментарий