Punto Switcher для Linux

в 12:45, , рубрики: keyboard switcher, language switching, layout switcher, linux, linux desktop, loloswitcher, punto switcher, punto switcher linux, xneur, xswitcher

Punto Switcher для Linux

Домашняя страница

Punto Switcher для Linux - 1
Punto Switcher для Linux - 2
Punto Switcher для Linux - 3
Punto Switcher для Linux - 4

Что умеет скрипт?

  1. Конвертировать последнее слово перед курсором.

  2. Конвертировать выделенное.

  3. Конвертировать последнее слово в строке терминала Gnome.

  4. Конвертировать выделенное в строке терминала Gnome.

Направление конвертации (ru_to_us или us_to_ru) и менять ли раскладку после, определяется автоматически. Зависит от количества совпадений с раскладкой в конвертируемом слове, если это не удалось определить, то от текущй раскладки.

Всего должно быть 2 раскладки (но легко переделать и под более, чем 2). Все соответствия настраиваются в ru_to_us и us_to_ru в src/functions.sh. Даже не важно какие 2 раскладки у Вас в системе... В ru_to_us и us_to_ru можно настроить любые 2.

Важно понимать:

Как правило - все ок, но:

Скрипт (или часть логики) может не заработать даже если у Вас, как и у меня - Linux Mint 22.1 Cinnamon...

По сути скрипт делает то, что Вы сами сделали бы нажатиями клавиш, т.е. - автоматизацию...

В src/functions.sh много пауз (sleep) значения которых, как мне кажется, могут быть у Вас немного другими.

Значения пауз зависит от конкретного железа, драйверов, ПО и т.д.

По этому, сразу наберитесь сил и терпения т.к., возможно, придется лезть в код, если с ходу не заработает.

Далее я попробую описать так, чтоб Вам было как можно легче все настроить и разобраться...

1) Установка утилит:

sudo apt install -y xautomation # xte
sudo apt install -y xsel xdotool xbindkeys

2) Установка прав на выполнение:

cd ./punto_switcher  
chmod u=rwx,g=rwx,o=rx ./switch_last.sh
chmod u=rwx,g=rwx,o=rx ./switch_select.sh

3) Настройка горячих клавиш:

Сочетания клавиш, для работы скриптов, нужно указывать именно через xbindkeys. Т.к. в xbindkeys можно указать тип события "Release", т.е. когда все клавиши были отпущены. Иначе, работать точно не будет. Отпускать клавиши надо в обратном порядке. Сначала z, а потом остальные.

1. Добавляем в конец ~/.xbindkeysrc (если нету, то нужно создать):

"~/my_soft_path/punto_switcher/switch_last.sh"
Release + Pause

"~/my_soft_path/punto_switcher/switch_select.sh"
Release + Control + Alt + z

2. Меняем ~/my_soft_path на свой путь до папки punto_switcher.

3. Можно выбрать свои свободные комбинации клавиш:

  • У меня это Pause - для конвертации последнего слова.

  • И Control + Alt + z - для выделенного текста.

Можно посмотреть "xbindkeys --defaults", там есть примеры и описание:

xbindkeys --defaults

4. Перезапускаем xbindkeys:

killall xbindkeys
xbindkeys

4) Возможно, у Вас еще нужно будет поменять:

's/on/ru_lng/g; s/off/us_lng/g' на 's/on/us_lng/g; s/off/ru_lng/g' в src/functions.sh...

5) Если с ходу нет нужного результата (не работает):

Нужно будет заняться отладкой.

На всякий случай -> Что такое отладка?

Скрипты можно запускать в консоли и (или) делать вывод результатов в файл.

  1. Стоит обратить внимание на значения пауз (sleep) в коде. Возможно, нужно будет увеличивать время пауз или добавлять новые.

  2. Соответствия символов можно переопределить в us_to_ru и ru_to_us.

Все делается в src/functions.sh.

6) Что возможно пригодится?

Тут находим ID своей клавиатуры:

В моем случае это оказалось 14... Как определить свой ID смори далее.

xinput list
Punto Switcher для Linux - 5

Тут будет видно нажатия клавиш, их числовой код:

xinput test 14

Если ID верный, мы будем видеть подобное, нажимая на клавиши:

Punto Switcher для Linux - 6

Тут будет видно все клавиши, их коды и названия:

xmodmap -pke
Punto Switcher для Linux - 7

Для настройки конвертации в терминале (Gnome terminal):

Смотрим что выводит:

xprop -id "$(xdotool getactivewindow)" WM_CLASS | awk -F '"' '{print $4}'

Если команда, выполненная в активном окне Gnome terminal, выводит не "Gnome-terminal", то найдите в src/functions.sh "Gnome-terminal" и исправьте на нужное значение.

Вся логика тут:

Punto Switcher для Linux - 8

Автор: mi8888

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js