- XNeur ≈ автоматический переключатель раскладок для Linux
- Введение
- Немного истории
- Где взять программу XNeur
- Настройка програмы XNeur
- Настройка демона XNeur при помощи конфигурационного файла
- Настройка клавиш для переключения языка в Linux (+ что делать, если нет значка языка Ru/En на панели задач). Авто-смена раскладки при наборе текста
- Решение вопросов с раскладкой
- ШАГ 1: параметры системы
- ШАГ 2: установка доп. приложения X Neural Switcher
- ШАГ 3: настройка X Neural Switcher
- Новый аналог Punto Switcher для linux: xswitcher
- Подробности
- Известные ошибки
- Заключение
XNeur ≈ автоматический переключатель раскладок для Linux
Введение
Эта маленькая программа имеет большие возможности. У нее два режима работы: автоматический и ручной.
В автоматическом режиме XNeur определяет при помощи встроенных словарей на каком языке ведется ввод и сама переключает клавиатуру на нужную раскладку.
В ручном режиме вы сами выбираете нужную раскладку традиционным способом, либо при помощи щелчка мышью на значке программы в системном трее. Если вы, увлекшись, напечатаете слово не в той раскладке, например английское слово русскими буквами, то достаточно нажать клавишу Pause/Break, как волшебным образом последнее слово будет исправлено на английское. CTRL+Pause/Break изменит последнюю строку, а SHIFT+Pause/Break ≈ выделенный текст. И не надо ничего удалять и переписывать заново.
Программа имеет еще много удобных настроек, о которых я расскажу в соответствующей главе.
Немного истории
Где взять программу XNeur
Кроме того, XNeur включена в состав многих дистрибутивов. Например в стабильном репозитории Debian Lenny она есть (правда не самая последняя). При установке при помощи APT следует иметь в виду, что существуют отдельные варианты пакетов XNeur: базовый для чистых Иксов, kXNeur ≈ для KDE3 и gXNeur ≈ для Gnome. Для KDE4 пишется вариант qXNeur. При этом для любого типа рабочего стола можно пользоваться XNeur, а настройки производить при помощи конфигурационных файлов.
Настройка програмы XNeur
Если у вас установлена gXNeur, то при запуске программы в системном трее появится значок в виде флага. Флаг этот цветной если демон XNeur запущен, и черно-белый если демон остановлен.
При щелчке правой кнопкой мыши на этом флаге открывается меню настроек.
- Первая позиция ≈ Остановить демон ≈ служит для отключения демона XNeur в случае необходимости. При этом фронт-енд gXNeur продолжает переключать раскладки при щелчке на нем мышью.
Вторая позиция ≈ Отключить автокоррекцию ввода ≈ переводит программу в ручной режим. В ручном режиме, если вы по ошибке напечатали английское слово русскими буквами, то достаточно нажать клавишу Pause/Break, как оно волшебным образом изменится на правильное. Клавиши Ctrl+Pause/Break изменяют последнюю строку, а Shift+Pause/Break ≈ выделенный фрагмент текста. Если нажать Ctrl+Alt+Pause/Break то выделенный фрагмент поменяет регистр. Есть еще много всяких замечательных горячих клавиш, позже мы увидим как их настраивать.
Войдем. Откроется окно Настройки XNeur.
Во вкладке Общее все опции, кроме второй, очевидны. Вторая опция, будучи подключена, позволяет программе XNeur самообучаться в процессе работы. Те слова, что не были автоматически распознаны, добавляются во встроенный словарь. Словарь разрастается, и программа начинает работать все надежнее.
Во вкладке Раскладки настройки словарей и регулярных выражений довольно тонкие, и трогать их без надобности не стоит.
Если какое-нибудь из ваших любимых слов часто не определяется программой, то можно вручную добавить его в соответствующий словарь.
Нижняя часть вкладки служит для настройки раскладок отдельно для каждой копии приложения. Исключения добавляются так: нажимаем на кнопку Добавить и появляется крестообразный указатель, который следует навести на нужное окно. Оно будет автоматически определено и добавлено в список исключений.
Перейдем во вкладку Комбинации клавиш.
Тут перечислены все горячие клавиши (а точнее, сочетания клавиш). Если какие-либо сочетания вам не удобны, нажмите кнопку Очистить и окошко очистится. Теперь нажмите сочетание клавиш, удобное вам, и оно станет новой горячей клавишей.
Следующая вкладка ≈ Мышь.
«Сбрасывать внутренний буфер при щелчке мышью» ≈ означает «забывать» последнее слово, последнее предложение, которое обычно сохраняется в буфере памяти на случай исправления. Флаг рядом с курсором показывает какая раскладка включена в данный момент. Но флаг мешает видеть текст и может понадобиться только в особых случаях.
Эта вкладка позволяет настроить приложения, не подлежащие обработке при помощи XNeur, или подлежащие принудительной автоматической обработке, либо подлежащие принудительной ручной обработке.
В самом деле, нy зачем нужно автоматическое переключение раскладок в окне терминала? Или в веб браузере? Там постоянно вводятся такие сочетания букв, что программа часто будет ошибаться и затруднять вам работу. Поэтому лучше отключить обработку для этих приложений вовсе, а еще лучше включить принудительный ручной режим обработки, что позволит вам исправлять слова, ошибочно введенные в неправильной раскладке.
Чтобы добавить приложение в один из этих списков, нужно сначала открыть окно нужного приложения, затем нажать кнопку Добавить, и навести появившийся крестообразный указатель на нужное окно. В списке появится название приложения.
Программа XNeur может издавать различные звуки при печати в разных раскладках, а также при выполнении всевозможных операций. Если звуки вас раздражают, то можно отключить их все. Для того, чтобы отключить какой-либо конкретный звук, нужно просто удалить название файла данного звука в соответствующем окне.
Вкладка Специальное позволяет отрегулировать задержку обработки введенного текста.
Настройка демона XNeur при помощи конфигурационного файла
Этот конфиг имеет очень простую и понятную структуру и снабжен подробными комментариями, поясняющими каждую настройку. К сожалению, разработчики программы, хоть сами и русские, почему-то не обеспечили соотечественникам перевода комментариев этого файла. Придется мне исправить эту недоработку. В Приложении 1 приводится текст файла xneurrc с переводом ключевых комментариев.
Настраивать программу очень просто ≈ нужно только вписать строки как подсказывают комментарии. Единственная трудность ≈ узнать правильное (с точки зрения Х-сервера) название того или иного приложения или окна.
Рассмотрим для примера настройку принудительного ручного режима для браузера и терминала. Вот как выглядит эта секция в конфиге:
Чтобы вписать браузер и консоль в конфиг, нужно знать их точное название. В этом нам поможет команда xprop. Будучи запущена, эта команда выводит крестообразный указатель, который требуется мышью навести на окно нужного приложения и кликнуть. Немедленно xprop выдает несколько страниц разнообразнейшей информации касательно этого окна, программы, шрифтов и прочего. Выбрать из этого массива единственно нужное название приложения можно и вручную, если знать, что искать. Нас интересует строка WM_CLASS, поэтому логично пропустить вывод xprop через команду grep:
Вот еще ряд примеров:
Становится понятным, что именем приложения является выражение после запятой, или в данных примерах: «Google-chrome», «Firefox», «Thunderbird» и «Kwrite».
Это имя, только без кавычек, мы и вписываем в файл xneurrc в конце секции:
Что касается остальных секций конфига, то не думаю, что они вызовут затруднения.
Источник
Настройка клавиш для переключения языка в Linux (+ что делать, если нет значка языка Ru/En на панели задач). Авто-смена раскладки при наборе текста
Доброго дня!
Многие начинающие пользователи при знакомстве с определенными дистрибутивами Linux сталкиваются с проблемой переключения раскладки (с русского на английский, и наоборот). Причем, иногда в трее (на панели задач) даже нет такого значка!
Собственно, сегодня в этой небольшой заметке решил показать, как это можно достаточно легко исправить (причем, попутно мы сможем «включить» авто-смену раскладки: т.е. система будет определять сама, на каком языке вы сейчас печатаете. В некоторых случаях — это очень удобно!).
Теперь о том, что и как настроить.
Пример (о чем идет речь) // дистрибутив Xubuntu
Решение вопросов с раскладкой
ШАГ 1: параметры системы
Важно: этот шаг (в принципе) можно пропустить. Но привожу его я из-за того, что в некоторых случаях вопрос можно решить через параметры системы (без доп. приложений).
Первое, что очень желательно сделать — открыть параметры системы / настройки клавиатуры ( по англ. : Settings / Keyboard). В зависимости от используемого дистрибутива Linux — нужная вкладка может находиться несколько в отличных разделах. 👇
Открываем настройки клавиатуры / дистрибутив Xubuntu
После нужно перейти во вкладку «раскладка» (англ.: «layout») и проверить, чтобы у вас в системе было как минимум 2 раскладки (английская и русская / кому нужно — могут добавить и больше). Обычно, в этом же разделе настроек можно сменить клавиши для переключения языка (по англ.: «Change layout option» 👇).
Примечание: в ряде дистрибутивов Linux по умолчанию ставится только 1 раскладка. И, разумеется, пока их не будет хотя бы 2 — сменить клавиши для ее переключения нельзя! Ну и на панели задач никаких языковых значков не отображается. В общем-то логично.
Добавляем нужные языки и устанавливаем клавиши для переключения языка
Есть еще один момент.
Необходимо открыть настройки панели задач (по англ.: «Panel»). Обычно данная вкладка находится среди прочих параметров системы.
В настройках панели необходимо добавить новый значок (по англ.: «Add new item») — среди списка найти нужно что-то похожее на «Keyboard layouts». 👇
Собственно, теперь языковой значок (с флажком) будет отображаться в трее, кнопки для переключения раскладки настроены. Задача решена. 👌
Добавляем на панель текущую раскладку
ШАГ 2: установка доп. приложения X Neural Switcher
Если в шаге 1 (выше) у вас возникли вопросы, и вы не смогли через параметры системы настроить раскладку, ее переключение, и значок на панели задач — вопрос можно решить иначе. Для этого нам понадобиться приложение xneur .
X Neural Switcher (xneur) — архи-полезное приложение (в Linux) для автоматического переключения раскладки клавиатуры (те. при вашей печати — оно само будет определять язык. Аналог Punto Switcher для Windows).
Кроме этого, приложение создаст значок с флажком выбранного языка на панели задач, позволит вручную задать сотни комбинаций клавиш (в т.ч. и для смены раскладки), исправлять ошибки и опечатки при наборе текста, и многое другое. 👌
Для его установки, как правило, достаточно открыть магазин приложений (менеджер ПО) и ввести в поисковую строку «xneur». Пример ниже. 👇
Либо установить можно также через терминал (вызов по Win+T или по Ctrl+Alt+T), команда:
На всякий stable-версия (если предыдущая команда не установила приложение):
sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-stable
sudo apt-get update
sudo apt-get install gxneur
ШАГ 3: настройка X Neural Switcher
Т.к. приложение X Neural Switcher поддерживает русский язык на 100% и по умолчанию вполне корректно работает (и выводит значок с текущей выбранной раскладкой на панель задач) — то скорее всего, никаким специальном образом настраивать его не придется.
Однако, я бы всё же порекомендовал, во-первых, во вкладке «Общее / основное и типографика» настроить базовые правила. Например, весьма удобно откл. случайные нажатия на CapsLock, разрешить исправление грубых опечаток и пр.
Во-вторых, также посоветовал бы в разделе «Комбинации клавиш» задать свои клавиши для переключения раскладки. Мне, например, удобно работать с Alt+Shift. 👇
Переключение раскладки — комбинация клавиш
В-третьих, хорошо бы приложению X Neural Switcher разрешить запускаться вместе с Linux (чтобы не открывать его каждый раз вручную самостоятельно). Обычно, для этого достаточно просто поставить соответствующий флажок в параметрах запуска.
Также на всякий случай приведу ссылку на альтернативные способы добавления приложения в автозагрузку. 👇
Добавление приложения в автозагрузку Linux (как запускать программу автоматически при старте ОС Linux)
Запускать автоматически при старте
Собственно, на этом вроде как и всё — первоначальная задача решена полностью! 😉
Источник
Новый аналог Punto Switcher для linux: xswitcher
Прекращение поддержки xneur вызвало у меня определённые страдания в последние полгода (с появлением OpenSUSE 15.1 на моих десктопах: при включённом xneur окна теряют фокус и забавно мерцают в такт ввода с клавиатуры).
«А, блин, опять не в той раскладке начал набирать» — в моей работе встречается до неприличия часто. И позитива не добавляет.
В то же время, я (как инженер-конструктор) могу достаточно ясно сформулировать чего хочу. А хотел я (сначала от Punto Switcher, а затем, спасибо Windows Vista, окончательно пересев на Linux, от xneur) ровно одного. Осознав, что на экране белиберда не в той раскладке (такое обычно случается в конце набора нового слова), топнуть по «Pause/Break». И получить то что печатал.
На данный момент изделие имеет оптимальное (с точки зрения меня) отношение функциональность/сложность. Пора делиться.
Дальше пойдут всякие технические подробности, поэтому сначала — ссылка «на потрогать» для нетерпеливых.
На данный момент захардкожено следующее поведение:
- «Pause/Break»: забивает (Backspace) последнее слово, переключает раскладку в активном окне (между 0 и 1) и набирает ещё раз.
- «Левый Ctrl без ничего»: переключает раскладку в активном окне (между 0 и 1).
- «Левый Shift без ничего»: включает в активном окне раскладку №0.
- «Правый Shift без ничего»: включает в активном окне раскладку №1.
С этого момента я планирую кастомизировать поведение. Без обратной связи — не интересно (меня и так устраивает). Полагаю, на Хабре найдётся достаточный процент аудитории с аналогичными проблемами.
N.B. Т.к. в текущей версии кейлоггер прикручивается к «/dev/input/», xswitcher должен запускаться с рутовыми правами:
Обратите внимание: владельцем файла с suid должен быть root, т.к. кто владелец — в того suid и превратит при запуске.
Параноики (я не исключение) могут клонировать из GIT и собрать на месте. Примерно так:
Автозапуск добавлять по вкусу (в зависимости от DE).
Работает, «каши не просит» (≈30 секунд CPU в сутки, ≈12 МБ в RSS).
Подробности
Весь репозиторий изначально был посвящён моему пет-проекту, а другой заводить — пока лень. Так что, всё свалено в кучу (просто по папкам) и накрыто AGPL («патент наоборот»).
Код xswitcher написан на golang, с минимальными вкраплениями C. Предполагается, что такой подход даст наименьшие трудозатраты (пока так и есть). Сохраняя возможность подключать недостающее посредством cgo.
По тексту разложены комментарии, откуда чего позаимствовал и зачем. Т.к. код xneur меня «не вдохновил», за отправную точку взял loloswitcher.
Использование «/dev/input/» имеет как свои плюсы (всё видно в т.ч. зажатую клавишу с автоповтором), так и минусы. Минусы такие:
- Автоповтор (события с кодом «2») не коррелирует с повтором с иксах.
- Не видно ввода через интерфейсы X11 (так например VNC работает).
- Нужен рут.
С другой стороны, можно подписываться на события X через «XSelectExtensionEvent()». Подсмотреть можно в коде xinput. Для go ничего подобного не нашёл, а черновая реализация дала с ходу сотню строчек C-кода. Пока отложил в сторону.
Вывод «обратно» пока сделан через прикручивание виртуальной клавиатуры. Спасибо автору keybd_event, но там слишком высокоуровневая абстракция и дальше придётся переделывать. У меня, например, правая Win-клавиша 3-й ряд выбирает. А обратно транслируется только левая Win.
Известные ошибки
Заключение
Код — простейший процедурный. И туп как я. Так что, тешу себя надеждой что дописать желаемое сможет практически любой технарь. И данное изделие благодаря этому не сгинет без поддержки подобно большинству just-for-fun.
Источник