erswitcher (EN—RU Switcher) — транслитератор текста и переключатель клавиатуры
7.2
⌨ erswitcher — приложение Иксов (X11).
Он реагирует на следующие комбинации клавиш:
⎉Pause
— транслитерировать последнее введённое с клавиатуры слово (только что набранный текст от курсора назад до пробела).⎈Control+⎉Pause
— транслитерировать последний введённый с клавиатуры текст.⇧Shift+⎉Pause
— транслитерировать выделенный текст.⎇Alt+⎉Pause
— инвертировать регистр символов в выделенном тексте.⎇Alt+⇧Shift+⎉Pause
— инвертировать регистр символов в последнем введённом слове.⎇Alt+⎈Control+⎉Pause
— инвертировать регистр символов в последнем введённом тексте.Scroll_Lock
илиKP_Begin
(центральная клавиша на дополнительной цифровой секции клавиатуры) — заменить последние введённые символы на их соответствие описанное в секции [compose] конфиг-файла (~/.config/erswitcher.conf).
В системном лотке (у часов) появится красный квадрат во время работы erswitcher-а. Щёлкните на нём мышью, чтобы вызвать редактор конфига (для него должен быть установлен tcl+tk). Все изменения конфига в редакторе тут же применяются.
Ссылка на метнальную карту проекта: https://mm.tt/map/2103991969?t=R40E3CBQoD.
EN—RU Switcher прослушивает клавиатуру и запоминает последний ввод.
Если была нажата ⎉Pause
EN—RU Switcher нажимает на клавишу ⌫Backspace
и стирает последнее введённое слово, а затем — вводит с клавиатуры его транслитерацию.
При нажатии ⇧Shift+⎉Pause
EN—RU Switcher копирует выделенный фрагмент текста в буфер обмена, транслитерирует его и вводит с клавиатуры.
При переключении окна или нажатии на специальные клавиши, такие, например, как клавиши курсора, введённый такст забывается.
⎇Alt+⎉Pause
позволяет поменять регистр символов которые были введены с зажатой клавишей Shift в выделенном тексте.
Все эти комбинации клавишь можно поменять в конфигурационном файле erswitcher-а - ~/.config/erswitcher.conf.
Если при старте программы конфиг-файла не было, то он будет создан со значениями по умолчанию.
Обратите внимание, что замены ([compose]
) позволяют устанавливать курсор в указанное с помощью \\^
положение, благодаря чему с помощью них удобно задавать сниппеты для программирования. См. подробнее раздел [compose]
.
Так же, в командах ([commands]
) можно использовать выделенный текст с помощью %i
, а так же вставлять вывод команды в местоположение курсора с помощью %o
. См. подробнее раздел [commands]
.
С помощью git:
$ git clone https://github.com/darviarush/erswitcher.git
$ cd erswitcher
$ make && make install && make launch
EN—RU Switcher будет скомпилирован, установлен в ~/.local/bin/erswitcher
и запущен из ~/.local/bin
в фоне.
Для сборки потребуются:
- gcc
- make
- libX11.so
- libxkbcommon.so
- libXtst.so
Конфигуратор EN—RU Switcher-а написан на tcl-tk, соответственно:
- tcl
- tk
sudo apt install gcc name libxkbcommon-dev libxtst-dev tcltk
sudo pacman -S make gcc libx11 libxkbcommon libxtst tcl tk
При старте EN—RU Switcher переписывает файлы в каталоге пользователя ~/.local/applications/erswitcher.desktop и ~/.config/autostart/erswitcher.desktop. Таким образом он сразу же запускается при старте рабочего стола поддерживающего стандарт freedesktop.org.
Для запуска конфигуратора нужно кликнуть на значке EN—RU Switcher-а в системном трее.
При редактировании конфиг будет тут же перечитываться EN—RU Switcher-ом.
Используйте в ключ=значение
:
\=
— если нужно равно до разграничителя=
.
В значении действуют следующие подстановки:
\t
— табуляция;\n
— перевод строки;\\
— бекслеш;\^
— переставляет курсор на эту позицию после вставки (действует пока только в секции [compose]).
Конфиг-файл (~/.config/erswitcher.conf) состоит из следующих секций:
комбинация-клавишь=функция
При нажатии на комбинацию запускает соответствующую функцию.
# Транслитерация последнего введённого слова
Pause=word translate
# Транслитерация последнего ввода
Control+Pause=text translate
# Транслитерация выделенного участка или буфера обмена
Shift+Break=selected translate
# Изменение регистра последнего введённого слова
Alt+Shift+Break=word invertcase
# Изменение регистра последнего ввода
Alt+Control+Pause=text invertcase
# Изменение регистра последнего введённого слова
Alt+Pause=selected invertcase
# Транслитерация последнего введённого символа в дополнительные символы
KP_Begin=compose
Scroll_Lock=compose
опция=значение
Настройки.
# Задержка между вызовами клавиатуры в секундах
delay=0,01
# Задержка между нажатиями клавишь в секундах
loop_delay=0,01
что=на что
Функция compose
описанная в секции [functions]
заменяет последние введённые символы на указанную строку.
Допустим мы ввели Ъ и нажали KP_Begin, тогда EN—RU Switcher, нажмёт на клавиатуре Backspace
, захватит буфер обмена clipboard и нажмёт Shift+Insert
, после чего активное приложение запросит у него букву Ї.
# Дополнительные символы кириллицы для украинского и белорусского алфавитов
ы=і
Ы=І
ъ=ї
Ъ=Ї
щ=ў
Щ=Ў
э=є
Э=Є
г=ґ
Г=Ґ
ё=’
Ё=₴
комбинация-клавишь=текст
Сниппеты вводятся через буфер обмена clipboard и могут содержать любые символы. После ввода буфер обмена восстанавливается.
Super+Pause=Готово.
комбинация-клавишь=шелл-сценарий
Команды операционной системы. Выполняются в оболочке шелла (/bin/sh).
В них возможны подстановки:
%i
– путь к временному файлу с содержимым выделенного текста;%o
– путь к временному файлу содержимое которого будет вставлено через буфер обмена через Shift+Insert после выполнения команды. Перевод строки в конце этого файла не вставляется.
Alt+Control+Shift+Break=kate ~/.config/erswitcher.conf && killall -HUP erswitcher
Alt+Control+p=echo $PATH > %o
Alt+Control+d=date > %o
Alt+Control+x=who i am > %o
Alt+Control+t=trans ru:en -b < %i > %o
Alt+Control+y=trans en:ru -b < %i > %o
Примечание: пока команда запущена запустить другую будет нельзя.
Интересно: утилита trans
из примера выше является консольным переводчиком. Выделение текста на русском и нажатие Alt+Control+t
приведёт к его замене на его перевод на английский.
В archlinux, например, trans
можно установить так: pacman -S translate-shell
.
Замеченные баги:
- Первая буква иногда не транслитерируется: возможно перезагружен процессор или тормозит само приложение в котором набирается текст.
Yaroslav O. Kosmina dart@cpan.org.
⚖ GPLv3