воскресенье, 4 августа 2019 г.

Yet another keyboard layout switcher

Русская версия заметки доступна по ссылке.

I know about Punto Switcher, X Neural Switcher and some other similar software to switch layout for typed text:
Руддщб Цщкдв! → Hello, World! (and/or backwards, Hello, World! → Руддщб Цщкдв!)


But I have issues with applications running on Wine when I use XNeur, and can use Punto in Windows or Mac OS only. Besides both of them are too excess functionality for me, so I don't need automation for text editing. Sure, this software have many other useful features for text typing, but for me is enough, that after I use keyboard hotkeys text by the left of cursor get changed from one keyboard layout to another and when it works for applications, which running on Wine.

And I after tips of many intelligence people of Internet, who say "You need a software? Code it by yourself!", I made Python 3 script to "switch over" typed text.

The script works only when you need to change text and its does following:
– cut the part of text (by the left of cursor to the line's start or, if there is parameters on start, it can be a selected text or also last word – characters after closest left space);
– change each character of cutted text from first layout to founded by number of place character of second layout (it is trying to find out right layouts is with first three characters of cutted text);
– puts result of modification on same place it was before cut.

Ещё одна переключалка введённого текста

For english version of this post please click link.

Я знаю про Punto Switcher, X Neural Switcher и некоторые другие подобные им программы для изменения раскладки введённого текста с одной на другую:
Руддщб Цщкдв! → Hello, World! (и/или наоборот, Hello, World! → Руддщб Цщкдв!)


Но в программах, запущенных под Wine, у меня большие проблемы с XNeur, а Punto юзабелен только для Windows и Mac OS. Кроме того, их функциональность для меня излишня, т.к. автоматического переключения мне не требуется (я и в Windows автоматику Punto Switcher'а отключал всегда) как и многого другого, что они предлагают. Несомненно, эти программы предоставляют и другие полезные возможности, но мне достаточно, чтобы при нажатии комбинации клавиш расположенный слева от курсора или выделенный текст изменялся с раскладки, на которой был введён ошибочно на ту, в которой должен был быть введён и чтобы это работало в запущенных через Wine приложениях.

Ну и, руководствуясь советами диванных аналитиков из Интернета, которые практически по любому поводу могут предложить "Нужна программа? Напиши сам!", я в итоге написал скрипт на Python 3, который "переключает" введённый текст.

Скрипт вызывается только в момент, когда вам требуется исправить текст, и производит несколько простых действий:
– вырезает кусок текста (текст слева от курсора до начала строки или, в зависимости от параметров запуска, это либо выделенный текст, либо последнее слово – последовательность символов после ближайшего пробела слева);
– меняет каждый символ вырезанного текста одной раскладки на найденный соответствующий символ другой (пытается определить с какой на какую переключать по первым трём символам);
– вставляет преобразованный текст обратно.