Многое из написанного ниже уже не актуально, но оставлю чтобы не нарушать обсуждениеАктуальный релиз:
https://forum.ubuntu.ru/index.php?topic=319515.msg2508004#msg2508004Установка и настройка:
https://forum.ubuntu.ru/index.php?topic=319515.msg2489904#msg2489904_____________________________________________________________________________________
Лет 10 у меня на компе жил и работал gxneur.
Еще на Ubuntu 20.04 он кое-как работал в ручном режиме, но после недавнего перехода на 22.04 (да, затянул), завести мне его уже не удалось.
Пару недель я страдал без переключателя, и в итоге решил написать свой.
Назвал его
dino (добавлено: программа переименована в Easy Switcher), вот, решил поделиться
Это пока не далеко не релиз, а скажем, версия 0.0.0.1. Сейчас мне хотелось бы понять, рабочая ли концепция.
Посмотрев исходники xneur, я понял что разбираться с xkb мне не хочется.
Основной идеей является простота, надежность, и чтоб не программа не переставала работать с выходом новой версии ОС или ДЕ.
Поэтому решил отказаться от взаимодействия с рабочим окружением и читать клавиатуру напрямую с ядра. Плюсов такого подхода много:
- по идее работать должно на любых ОС с ядром линукс,
- не зависит от рабочего окружения, от выхода их новых версий и обновлений библиотек.
- Вряд ли в обозримой перспективе в ядре будет что-то меняться в части работы с клавиатурой.
- Корректная работа в LibreOffice (в xneur с этим были проблемы)
Минусы тоже есть, а именно невозможность исправления выделенного текста, сложность реализации автоматического переключения и потенциальная его нестабильная работа.
По ссылке - архив исполняемого файла. Собран на Ubuntu 22.04, на более ранних версиях запускаться вероятно не будет, хотя я не проверял. Deb пакета пока нет.
Для установки скачать, распаковать куда хочется, проверить права на запуск,
и запустить в терминале с правами root. Почему нужен рут? Потому что без него не прочитать /dev/input (добавлено: root не обязателен)
После запуска программа ничего не выводит, т.к. программа пишется как демон, функционал не реализован. В стандартный вывод пока могут попасть только ошибки до запуска, а все остальное пишется в syslog.
После первого запуска в каталоге etc/dino/ появится dino.conf
В нем нужно прописать клавиатуру, мышь, и кнопки смены раскладки и исправления текста, после чего перезапустить программу Пояснения в конфиге имеются.
По умолчанию исправление текста - клавиша Pause/Break, смена раскладки завязана на клавишу Win.
Как работает?
Программа ловит нажатия клавиш, запоминает их, а при нажатии Break стирает написанное, меняет раскладку, и пишет заново.
Смена раскладки происходит эмуляцией нажатия Win (или другой клавиши, прописанной в конфиге). Сочетания клавиш пока не реализованы, поэтому, если не хотите расставаться с Ctrl+Shift, то нужно в настройках Ubuntu добавить дополнительную клавишу смены раскладки (например с помощью Gnome tweak tool, если у вас gnome, в kde тоже наверняка можно сделать).
Изначально думал что переключаться будет быстро, буквы будут вылетать как из пулемета, однако на практике оказалось, что ДЕ не успевает обработать все нажатия. Если у вас появляются ошибки, поиграйте с параметром delay, это задержка при выводе символов. Если ошибок при смене раскладки нет, delay можно уменьшить.
В принципе, в сессии Wayland программа работает приятно. В иксах буквы летят вперемешку, приходится delay увеличивать.
Если будете пробовать, прошу отписаться, какая ОС и ДЕ.
Логика обработки нажатий пока проработана не до конца, тоже прошу комментировать.