Под Linux мне не попадалось хорошей программы, чтобы исправлять набранное не в той раскладке. Они были либо глючными, либо какими-то сомнительными. Нашёл решение, как это делать при помощи простого bash-скрипта.
Идея отсюда. Но у меня скрипты получились немного проще.
Исправление выделенного текста:
#!/bin/bash
xdotool key Ctrl+Insert
sleep 0.1s
xsel | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/" | xsel -b -i
sleep 0.1s
xdotool key Shift+Insert
sleep 0.1s
xdotool key Shift+Alt
Исправление последнего слова, либо всей строки, если в ней нет пробелов:
#!/bin/bash
xsel --clear
sleep 0.1s
xdotool key Shift+Ctrl+Left
sleep 0.1s
xdotool key Ctrl+Insert
sleep 0.1s
xsel | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/" | xsel -b -i
sleep 0.1s
xdotool key Shift+Insert
sleep 0.1s
xdotool key Shift+Alt
Чтобы это работало нужны утилиты:
sudo apt install xdotool xsel
Утилита xdotool
нажимает нужные кнопки, по коду видно, что происходит. В конце осуществляется ещё и переключение раскладки — Shift+Alt. Едиственное неудобство заключается в том, что приходится использовать буфер обмена, где может находиться, что-то нужное в этот момент.
Каждый приведенный код записывается в отдельный sh-файл. Файлам даются права на выполнение. Далее прописываем выполнение этих файлов по каким-нибудь удобным для себя комбинациям клавиш.
В Elementary OS это делается здесь:
В Ubuntu (Gnome) здесь: