Skip to content

Latest commit

 

History

History

fixMistake

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

fixMistake

Исправляет текст, набранный не в той раскладке. Забыли переключить раскладку и написали ghbdtn вместо привет? Выделите текст и нажмите Ctrl+Alt+→: текст заменится на правильный, а раскладка переключится на нужную.

Работает в Fedora с KDE Plasma 6 в сессии Wayland.

Примеры

ghbdtn            → привет
rfr ltkf&         → как дела?
Ghbdtn? rfr ltkf/ → Привет, как дела.
руддщ цщкдв       → hello world
руддщб цщкдв,     → hello, world?
Ntcn 123 ,erd     → Тест 123 букв

Конвертация идёт по положению клавиш (раскладки us и ru ЙЦУКЕН), поэтому знаки препинания тоже исправляются: ? в английской раскладке стоит там же, где , в русской, а & там же, где ?.

Установка

cd /path/to/FunLinux/fixMistake
./install.sh

Скрипт установки:

  1. Проверит зависимости и предложит поставить недостающие: ydotool, wl-clipboard, libnotify, python3.
  2. Проверит доступ к /dev/uinput. Если его нет, предложит добавить пользователя в группу input (после этого нужен повторный вход).
  3. Скопирует скрипт в ~/.local/bin/fixmistake.
  4. Включит пользовательскую службу fixmistake-ydotoold.service: виртуальную клавиатуру, через которую нажимаются Ctrl+C и Ctrl+V.
  5. Зарегистрирует сочетание Ctrl+Alt+→ в KDE. Перезаход не нужен.
  6. Запустит fixmistake --check.

Сочетание можно поменять в «Параметры системы → Комбинации клавиш → fixMistake».

Использование

  1. Выделите текст, набранный не в той раскладке.
  2. Нажмите Ctrl+Alt+→.

Если ничего не выделено или исправлять нечего, придёт уведомление.

Команды для отладки:

fixmistake --check                    # зависимости, доступ к /dev/uinput, ydotoold
echo ghbdtn | fixmistake --convert    # только конвертация, без буфера и клавиш

Как это работает

  1. KDE запускает ~/.local/bin/fixmistake по сочетанию клавиш.
  2. Скрипт ждёт, пока вы отпустите Ctrl и Alt, иначе приложение получило бы Ctrl+Alt+C вместо Ctrl+C. Состояние клавиш читается из /dev/input (группа input).
  3. Текущий буфер обмена сохраняется (текст или картинка).
  4. Через ydotool нажимается Ctrl+C, выделенный текст забирается через wl-paste.
  5. Направление выбирается по преобладающему алфавиту. Слова, в которых уже есть буквы целевого алфавита, не меняются.
  6. Исправленный текст кладётся в буфер и вставляется через Ctrl+V поверх выделения.
  7. Старый буфер обмена возвращается, раскладка переключается на язык исправленного текста.

Удаление

cd /path/to/FunLinux/fixMistake
./uninstall.sh

Снимает сочетание в KDE, останавливает и удаляет службу, удаляет ~/.local/bin/fixmistake. Пакеты не удаляются: ydotool и wl-clipboard могут использовать другие программы.

Ограничения

  • Не работает в терминалах: там Ctrl+C прерывает команду, а Ctrl+V не вставляет текст.
  • Исправленный текст и метка, через которую скрипт определяет копирование, на время попадают в буфер обмена, поэтому видны в истории Klipper.
  • Сочетание регистрируется автоматически только в KDE Plasma. В другом Wayland-окружении назначьте команду ~/.local/bin/fixmistake вручную; нужна поддержка протокола data-control для wl-paste.
  • X11 больше не поддерживается: прошлая версия на xdotool и xbindkeys в Wayland не работала.

Устранение проблем

fixmistake --check
systemctl --user status fixmistake-ydotoold.service
journalctl --user -u fixmistake-ydotoold.service

Если ydotoold не запускается из-за /dev/uinput, проверьте группу: id | grep input. После usermod -aG input нужно выйти из сессии и войти снова.

Файлы

  • fixmistake.sh: конвертация, работа с буфером и клавишами
  • install.sh: установка
  • uninstall.sh: удаление

Автор

DXVSI

Лицензия

Free to use