Repository navigation
Home
Oleg Shevchuk edited this page Oct 17, 2026
·
2 revisions
KeySwitch исправляет текст, набранный не в той раскладке (русская и английская), в Linux (X11), Windows и macOS. Пользователь печатает ghbdtn и пробел — KeySwitch стирает слово, набирает привет и переключает системную раскладку. Решение принимают небольшие обученные модели, которые работают на компьютере пользователя, без сети. Движок исполняет решение так, чтобы не потерять и не добавить ни одного символа.
Вики — для тех, кто разрабатывает KeySwitch: как устроено приложение, как обучаются и проверяются модели, как тестировать и выпускать. Установка и настройка для пользователя — в README.
- Быстрый старт разработчика — запуск из исходников, проверки перед PR, порядок работы.
- Архитектура — модули, поток данных, платформы, настройки.
- Движок — что происходит с каждым нажатием и словом.
Приложение
- Архитектура
-
Движок — границы, ранняя смена, ожидание и пауза, исполнение исправления,
Pauseи отмена, переспрос, взгляд назад, особые случаи - Чтение поля, журнал и приватность — UI Automation, AT-SPI, Accessibility, текст справа от курсора, технический журнал, маскирование паролей
Модели
- Модели — что поставляется, как решает контекстная модель, база и головы
- Обучение контекстной модели — корпус и разделы, рецепт, программы обучения, AdaGrad, GPU, сравнение
- Проверка и установка модели — барьер набора пользователя, переписка разработчиков, запечатанный test, квитанция, ratchet
Качество и выпуск
- Тесты и качество — состав тестов, стенды, покрытие 100%, строгие типы, правило констант
-
Сборка, CI и выпуск — пакеты, рабочие процессы CI,
release.py, проверочный контур, APT
Справка
- Решает модель, исполняет движок. Языковое решение отдаётся модели. Отменить его может только явное, видимое пользователю исключение. Ошибки модели на классе слов исправляются данными и признаками, а не запретами.
- Ни символа не потерять. Каждое исправление проверяет фокус и текст поля, удерживает клавиши, которые пользователь жмёт прямо сейчас, и отказывается от исправления, если поле изменилось.
- Приватность. Пароли не читаются и не попадают в журнал. Текст поля живёт только в памяти. Сеть нужна только для обновлений.
- Проверка до выпуска. Модель проходит сравнение с выпущенной, проверку на реальном наборе и два запечатанных test, каждый из которых читается один раз. Приложение проходит полный набор тестов со 100% покрытием на трёх платформах.
Начало
Приложение
Модели
Качество и выпуск
Справка