Тренажёр слепой печати для русской и английской раскладки. Без зависимостей — только Python и tkinter из стандартной библиотеки.
python DP_Typing_Master.pyЕсли Python ругается на отсутствие tkinter, поставьте его отдельно:
sudo apt install python3-tk (Debian/Ubuntu), sudo dnf install python3-tkinter
(Fedora), sudo pacman -S tk (Arch). На Windows и macOS он входит в
дистрибутив с python.org.
Отдельного поля ввода нет: вы печатаете прямо «в текст». Каждый символ подсвечивается по мере набора — набранное белым, ошибки красным, курсор синим блоком. Экранная клавиатура снизу показывает следующую клавишу и подписывает, каким пальцем по ней бить.
| Режим | Что даёт |
|---|---|
| Уроки | Ступени от центра домашнего ряда до полного алфавита. Каждая ступень строго включает предыдущую — пройденные клавиши не пропадают. При точности от 96% ступень повышается сама. |
| Частотные слова | Реальная лексика языка: 1200 самых употребимых слов. |
| Псевдослова | Несуществующие, но произносимые слова из марковской модели, обученной на той же лексике. Тренируют моторику, не давая угадывать слово по началу. |
| Слабые клавиши | Тренажёр считает, на каких буквах вы ошибаетесь, и подбирает слова с ними. На практике даёт примерно втрое больше контакта с проблемными буквами, чем обычный режим. |
Счётчик подряд набранных без ошибки символов. Разбивается на уровни (разогрев → в потоке → разгон → огонь → легенда), каждое попадание даёт короткую вспышку, полоска показывает путь до следующего уровня. Ошибка обнуляет комбо; стереть и перенабрать символ, чтобы накрутить счётчик, не получится.
| Клавиша | Действие |
|---|---|
Esc |
пропустить фразу |
Tab |
эту же фразу заново |
F1 |
справка |
F2 |
русский / английский |
F3 |
режим тренировки |
F4 / Shift+F4 |
ступень урока вперёд / назад |
F5 |
строгий режим — не пускает дальше, пока символ не набран верно |
F6 |
показать / скрыть экранную клавиатуру |
F7 |
сбросить накопленную статистику |
Ctrl+Q |
выход |
Прогресс, рекорды и статистика по буквам сохраняются между запусками
(~/.config/dp-typing-master/profile.json или аналог для вашей ОС).
Точность считается по нажатиям, а не по итоговому тексту: опечатка, исправленная бэкспейсом, остаётся в статистике. Скорость измеряется от первого нажатия до последнего и ограничена сверху 1500 знаков/мин — всё, что выше, это вставка из буфера, а не человек. Время берётся с монотонных часов, поэтому синхронизация системного времени не искажает результат.
pytest # логика: работает без дисплея
xvfb-run -a pytest # плюс интеграционные тесты на настоящем Tk
ruff check . && flake8 .Логика (engine.py, words.py, layout.py, storage.py) не импортирует
tkinter и проверяется headless. Интерфейс (app.py) покрыт отдельными
тестами, которые поднимают реальное окно и стучат по нему клавишами; без
дисплея они пропускаются.
Замеренное на настоящем Tk: стоимость одного нажатия не зависит от длины фразы (при удлинении текста в 26 раз — ×0.94), тогда как перебор всей строки на каждое нажатие рос бы в ×7.1. В покое очередь отложенных задач пуста — это проверяется тестом.
Требуется Python 3.9+; проверено на 3.10, 3.11, 3.12 и 3.13.
GPL-3.0-or-later, см. LICENSE. Происхождение словарей описано в
dp_typing/data/SOURCES.md.