TextCorrection
Скачать: yadi.sk (https://yadi.sk/d/V86T61mWf4S5FA) upload.ee (https://www.upload.ee/files/12973710/TextCorrection_Linux.7z.html)
(https://www.upload.ee/image/12806536/TextCorrection_Linux.png)
Назначение
Исправление текста набранного в неправильной раскладке клавиатуры, случайно нажатым капслоком и др.
Использование
1. Выделить текст, строку, фразу
2. Вызвать горячую клавишу для преобразования
3. Вставить результат из буфера обмена
Пишу программу TextCorrection для Linux. Эту идею я уже давно осуществил на Windows (https://azjio.ucoz.ru/load/vsjo_dlja_autoit3/skompilirovannye_skripty/textcorrection/4-1-0-17), но в Linux мне крайне не достаёт функционала. Эксперимент начал в мае 2020г, продолжил попытку в январе 2021г, так как появились идеи использовать xdotool (https://habr.com/ru/post/266375/), xvkbd (http://t-sato.in.coocan.jp/xvkbd/) для эмуляции горячих клавиш. В данный момент нашёл xsel (http://www.vergenet.net/~conrad/software/xsel/xsel.1x.html) и дело сдвинулось с мёртвой точки, так как утилита просто захватывает выделенный текст в любом окне, без эмуляции Ctrl+C используя буфер обмена. Вставка пока толком не работает, Ctrl+V работает через раз, а также автоматическое выделение текста ctrl+shift+left используя xdotool работает как отдельная команда, но пока не срабатывает в исходнике.
Вставка методом
RunProgram("xvkbd", "-xsendevent -text " + Chr(34) + New_Text$ + Chr(34), "")
вызвала проблему кодировки и посчитал это не надёжным способом, тем более при наличии метасимволов \C и других может вообще эмулировать горячую клавишу вместо вставки.
Текущий обновляемый исходник (https://pastebin.com/tZPZGBbT)
Если есть желание тестить вот скомпилированный (https://yadi.sk/d/V86T61mWf4S5FA) (+исходник), ложим файл в /usr/bin, в DE добавляем глобальные горячие клавиши "text-correction -r" (преобразование англ-рус туда-обратно) и "text-correction -t" (транслитерация), а в дальнейшем добавить "Красная строка", "ВЕРХНИЙ РЕГИСТР", "нижний регистр".
Обновил
Добавлена генерация файла replace.ini.
Добавил закрытие окна по Esc.
Мелкие оптимизации, не проверяется наличие xsel и xdotool, но при отсутствии их запуск возвращает 0 (вместо 1), и выдаётся сообщение об отсутствии пакетов. Также в пакеты добавил зависимости xsel и xdotool. Интересно, что дата в пакете builddate = 1611349753 является в том же формате, что и функции PureBasic
CurrentDate = Date()
Debug CurrentDate
Debug FormatDate("%hh:%ii:%ss %mm/%dd/%yyyy", CurrentDate)
перезалил, нельзя версию писать как 1.4, только как 1.4-0 выдавал ошибка транзакции пакета, восстанавливал изменения, чтобы определить причину.