Я фронтенд‑разработчик. Этой осенью сын пошёл в пятый класс, и с началом информатики я заметил, насколько медленно он печатает. Со смартфоном он на «ты», а за обычной клавиатурой теряется.
За компьютер мы его специально не усаживали: в начальной школе он пользовался им в основном для учебных тестов. Стало понятно, что пора подтягивать компьютерную грамотность. Решили начать с базового навыка — печати.
Мы попробовали несколько известных тренажёров: какие‑то я помнил сам, какие‑то нашли в поиске. Одни сыну не понравились визуально, в других мне не хватало понятной схемы пальцев и анализа слабых мест. Особенно хотелось, чтобы пользователь видел не только нужную клавишу, но и конкретный палец.
Так появилась идея сделать свой тренажёр. Заодно хотелось прощупать у сына интерес к IT, сделать современный интерактивный дизайн и добавить больше визуала прогресса и игровых элементов.
Понятно, что клавиатурных тренажёров уже много. Но мне было интересно не просто реализовать ещё один, а попробовать решить несколько задач: сделать понятную ребёнку схему пальцев с ярким интерактивом, научиться определять слабые места по реальным нажатиям и на их основе автоматически собирать персональные упражнения.

Чего мне не хватало в существующих тренажёрах
Делать обычный тренажёр, который просто выдаёт случайный текст или набор символов, не хотелось. Хотелось чем‑то выделиться. Подробного ресерча я не проводил, но в том, что мы пробовали, подобного не увидели.
Первая идея — анализ ошибок. Ты печатаешь, тебе показывают скорость и процент ошибок, и всё. А ведь по ошибкам понятно, что именно у человека не получается.
Вторая вытекает из первой: тренировка слабых мест. Если ты постоянно промахиваешься по «Ж» или путаешь сочетания правой руки, логично давать больше упражнений именно на них, а не гонять весь алфавит по кругу. Мне встречались «тренировки слабых мест», но это был просто линейный список упражнений без какого‑либо анализа.
Как это все реализовано
Стек обычный для меня: React + TypeScript и React Query на фронте, Node.js, PostgreSQL и Prisma на бэкенде.
Тренажёр запоминает каждое нажатие, не только ошибки: какую букву надо было нажать, какую нажали на самом деле и сколько на это ушло времени. Вся эта история сохраняется вместе с результатом урока, а считается всё уже в браузере.
Первая версия была совсем простой: процент ошибок по каждой букве за всё время. Но быстро вылезли две проблемы. Если ты когда‑то путался в букве, а потом научился, она всё равно числится «слабой». А если по букве было всего пять нажатий и две опечатки, она вдруг становится «самой худшей».
Поэтому сейчас логика такая:
по каждой букве смотрим только последние 60 нажатий;
старые ошибки со временем «остывают»: каждые две недели вес ошибки уменьшается вдвое;
если по букве пока мало данных, тренажёр ей меньше доверяет и не спешит записывать в проблемные;
если последние 20 нажатий прошли без ошибок, буква сразу считается выученной, и ждать, пока забудутся старые ошибки, не нужно.
Например, если «Ж» долго была проблемной, но последние 20 нажатий прошли без ошибок, старые промахи больше не держат её в списке слабых. Мне хотелось, чтобы тренажёр реагировал на то, чему человек уже научился, а не бесконечно помнил ошибки недельной давности.
Кроме отдельных букв тренажёр смотрит и на сочетания. Например, если после «О» ты часто промахиваешься по «В», проблемной считается пара «ОВ». Сочетания берутся только из обычного текста, а не из тренировочных наборов букв, иначе статистика была бы искусственной.

Из трёх самых слабых букв и двух самых слабых сочетаний собирается персональная тренировка: сначала слоги, потом слова, потом предложения. Самая проблемная буква попадается чаще всех, остальные реже, и это не случайность, а чёткое чередование по кругу. После тренировки видно, как изменился процент ошибок по каждой букве: было и стало.
Ещё одна мелочь для честной статистики: если переключиться в другую вкладку или окно, упражнение встаёт на паузу и секундомер останавливается. Тренажёр предлагает продолжить, и отсчёт идёт дальше только после возвращения.

Самое сложное для меня — руки
Больше всего времени ушло не на бэкенд и не на алгоритм, а на анимацию рук. Хотелось, чтобы было видно не просто подсвеченную клавишу, а какой палец нажимает и как рука к ней тянется.
Нарисовать красивые руки вектором сложно, а обычную картинку нельзя подсветить по отдельным пальцам. Поэтому я сделал гибрид: снизу лежит обычная растровая картинка рук, а поверх неё невидимые векторные контуры каждого из десяти пальцев. Когда нужно подсветить палец, его контур закрашивается цветом. Подсветка плавно растворяется к ладони, поэтому выглядит так, будто светится сам палец на картинке.

Картинка на экране одна и та же, но показана дважды: одна копия обрезана до левой руки, другая до правой. Так каждая рука двигается сама по себе.
Чтобы рука дотягивалась до нужной клавиши, я не храню никаких таблиц координат. Тренажёр просто смотрит, где на экране находится клавиша и где кончик нужного пальца, и сдвигает руку на разницу. Если поменять вёрстку клавиатуры, руки всё равно попадают куда надо.
По дороге было несколько граблей:
если мерить положение пальца, пока рука ещё едет от прошлой клавиши, замер получается неправильным, и рука промахивается. Пришлось перед замером мгновенно возвращать её в исходную точку;
на ноутбуках с небольшим экраном весь тренажёр немного уменьшен, и координаты приходилось пересчитывать с учётом масштаба;
руки иногда наезжали друг на друга, пришлось их раздвигать;
большой палец лежит на пробеле боком, и для него расчёт пришлось делать отдельно.
Ещё одна мелочь, которой я доволен. Когда нажимаешь одну и ту же букву несколько раз подряд, анимация нажатия пальца сначала срабатывала только один раз. Решилось неожиданно просто: я сделал две одинаковые анимации с разными названиями и переключаю их на каждое нажатие. Браузер думает, что анимация новая, и проигрывает её заново.
Звук нажатия, кстати, не записан в файл, а генерируется прямо в браузере: это короткий щелчок из шума.
Тестирование на главном пользователе
Главным тестировщиком, конечно, был сын. И он быстро показал вещи, которые взрослому в голову не придут.
Например, ему было непонятно, что Shift надо зажимать, а не нажимать. Он нажимал Shift, отпускал, потом нажимал букву и не понимал, почему не выходит заглавная. Для нас это очевидно, а для ребёнка, который раньше клавиатурой почти не пользовался, нет.
В итоге для Shift появилась подсказка в три шага: «Зажми Shift → Нажми букву → Отпусти Shift». На самой клавише Shift пульсирует надпись «Зажми», потом «Держи». А если отпустить Shift раньше времени, тренажёр так и говорит: «Не отпускай Shift».

Для Shift появилась отдельная пошаговая подсказка: зажать → нажать букву → отпустить.
После таких случаев я стал внимательнее смотреть на всё, что мы, опытные пользователи, считаем само собой разумеющимся.
Сын сейчас проходит 1–2 урока в день и старается следить прежде всего за точностью, а не за скоростью. Сейчас он печатает примерно 40 знаков в минуту.
Где помог ИИ, а где оказалось быстрее самому
Проект я делаю один, в свободное время, и честно использую ИИ‑агентов там, где моих знаний не хватает. В основном это бэкенд: как фронтендеру мне было бы сильно дольше разбираться самому. ИИ помогает и с дизайном: ему можно задать направление, и он предлагает довольно креативные решения. А если подключить плагин в Figma, можно заранее прорабатывать дизайн и потом переносить его в разработку.
Во фронтенде опыт вышел противоположный. Когда не было времени править самому и я отдавал баг агенту, иногда приходилось просить исправить его несколько раз подряд. В итоге я всё равно открывал код и правил руками, только уже потеряв время.
Что пришлось сделать с публичными страницами
Сам тренажёр работает как клиентское React‑приложение, но для публичных страниц мне хотелось отдавать поисковикам готовый HTML. Поэтому главная и несколько информационных страниц пререндерятся на этапе сборки, а затем React гидратирует их через hydrateRoot. Страницы самого тренажёра оставил полностью клиентскими: поисковой индексации там всё равно делать нечего.
Где проект сейчас
Скажу честно: пользователей пока почти нет. Тренажёром пользуются в основном друзья и знакомые, поэтому все наблюдения выше — это пока ранний этап, а не выводы по большой выборке.
Сейчас в SkillTap есть уроки от отдельных букв до предложений с подсказками по пальцам, тест скорости печати, поиск слабых клавиш, персональные тренировки и статистика прогресса. Если кому‑то интересно посмотреть реализацию целиком, проект работает на https://skill‑tap.ru
Дальше хочу попробовать игровые режимы. Сын уже подкидывает идеи: например, скины для рук, которые можно открывать за заработанные в упражнениях монеты. Посмотрим, какие из этих механик действительно помогают не бросать занятия после нескольких уроков.
Вопрос к вам
Сколько вы печатаете и как вообще учились работать с клавиатурой? Особенно интересно мнение тех, у кого есть дети: учили их печатать специально или навык появился сам?
И отдельно интересно мнение разработчиков: как бы вы определяли «слабую» клавишу — только по ошибкам или учитывали бы ещё и время до нажатия? Я это время уже сохраняю, но пока не использую в расчётах.
Комментарии (46)

a3d
28.09.2026 15:52Тренажёр будет бесплатным, полностью? Не одна треть бесплатно а потом карту деньги два ствола? Я не против разовой оплаты например или донатов, но против ловли лохов на крючок с подписками прочей. Спрашиваю собственно потому что уже потестил сайт, и честно всё выглядит также как у большинства сервисов, вот вот "и для продолжения следующего урока оплатите подписку на 100500 денег"
А каким образом будет монетизация, если будет?
А в целом понравилось, если некоторые недочёты и пожелания перфекциониста, но в целом классно, спасибо, работа видно проделана уже не малая. Ну следы нейронок торчат конечно прилично, но собственно это уже не удивляет.

Dadfront Автор
28.09.2026 15:52Большое спасибо за мнение! Сейчас всё полностью бесплатно про монетизацию пока не думали сначала хочется понять, нужен ли тренажёр кому-то кроме нас. Если не сложно поделитесь какие недочеты нашли. Спасибо.

a3d
28.09.2026 15:52Нет, это не недочёты а скорее всего перфекционизм, который многие может и не заметят.
1. Рисунок рук. Окантовка вокруг ногтей слишком темная, цвет кожи - мёртвый, ощущение не очень, не позитивные руки в целом, мертвые. Можно попробовать исправить, я попробовал лучше по цвету, но не глобально.
2. Там где самые первые уроки где буквально мало букв А О Н Т и подобные, баланс не айс. По мне - отдельных букв много, особенно чередующихся, а вот слов из этих букв потом мало ТОН ОНА, ещё НОТА можно добавить и т.д. можно побольше слов пусть повторяются, это важнее чем отдельные буквы имхо.
Всё это вкусовщина. Однако руки мертвеца мне сильно резанули. ;) Может это проф деформация.
Dadfront Автор
28.09.2026 15:52Спасибо, за подробный ответ! Про руки согласен, сравнение очень наглядное: тёплый вариант гораздо живее. Про слова в первых уроках тоже справедливо: из А, О, Н, Т действительно много можно собрать (она, нота, тонна…), добавлю больше слов вместо чередования букв. Если заметите ещё что-то, пишите, такие замечания очень полезны.

a3d
28.09.2026 15:52Если скините руки в png исходники, я наложу на них уже заготовленные корректирующие слоя в ФШ которые я сделал и сохранил для одной, или могу .psd скинуть со слоями, надо будет под низ положить руки и сделать обводки по контурам ногтей. Короче если с фш мало знакомы, мне наверное проще сделать я с фш дружу, делов на 3 минуты.

AVX
28.09.2026 15:52А старая добрая прога "соло на клавиатуре" из начала 2000х уже не работает? (я реально не знаю, запускается ли она на современных ОС, но в то время была топчик!)

a3d
28.09.2026 15:52В виртуалках или ДОС-бокс скорее всего запустится.
ахаха.. 5 уроков бесплатно а потом подписки. Помню эту игру была одна из лучших была. Надо завайбкодить и в опенсорс её, попытки всех загнать в онлайн курсы и рубить бабло уже порядком надоели.

AVX
28.09.2026 15:52Зачем дос бокс, это же чисто виндовая программа была. И вроде даже хакнутая уже. Я конечно не осилил всю еë, сколько-то прошёл, мне показалось что для меня достаточно (я не собирался машинисткой работать), и забросил.

FSA
28.09.2026 15:52Там вообще какой-то термояд. Неправильно символ написал - ты символ ввёл. Нельзя исправлять, нужно набирать дальше. Я там на тесте какие-то сумасшедшие 600 символов в минуту выбивал почти. Но это если потренироваться изначально. А вот в этом тренажёре выбиваю где-то 240 символов без особой тренировки. Тоже немного неудобно, не всегда понимаешь что нужно исправить, потому что не видно введённого текста. А так секунды теряются, пока допрёшь что там конкретно писать. И ошибок у меня 91-94%.

Dadfront Автор
28.09.2026 15:52Спасибо за отзыв! Уточните, пожалуйста, что именно было непонятно в уведомлении об ошибках в моем тренажере? У нас при ошибке символ подсвечивается и звучит сигнал, исправить можно через Backspace, в конце упражнения система показывает подробный разбор ошибок и тепловую карту проблемных пальцев. Возможно, на высокой скорости подсветку просто сложнее заметить?

AntonBak
28.09.2026 15:52Круто. С телефона открывает тоже нормально. Стало интересно проверить свою скорость чтения

Dadfront Автор
28.09.2026 15:52Спасибо за мнение, только мы там не скорость чтения измеряем)

AntonBak
28.09.2026 15:52Понятно, что измерение скорости печати, вы ставили как основную цель.
Попался на "ё" - тут скорее привычка равнозначности восприятия е и ё в настоящее время.

a3d
28.09.2026 15:52На мой взгляд ё нужно, это база в грамотном русском языке. С другой стороны нужно сделать опциональное игнорирование правил е, ё. Если опция стоит то просто не различать.

Dadfront Автор
28.09.2026 15:52Да это спорный вопрос, буква ё базовое правило русского языка, но действительно стоит сделать ее проверку опциональным функционалом.

positroid
28.09.2026 15:52Лет 6 назад окончательно дотренил слепую печать в typingclub.com - геймификация и подробная статистика сделали свое дело. Ранее проходил соло на клавиатуре и несколько разных поделок - довольно быстро становилось скучно.

Dadfront Автор
28.09.2026 15:52Спасибо, что поделились! Как раз наш опыт: скучный тренажёр бросают, поэтому статистику и разбор ошибок я сделал сразу, а игровые элементы следующие в планах. А что именно в TypingClub цепляло сильнее всего? Мне понравилась видео вставка перед началом упражнения.

positroid
28.09.2026 15:52бесплатность
звездная оценка выполнения заданий и в целом вот этот экран по завершении с скоростью и шкалами и тп
возможность видеть весь курс изучения и условно "еще 10 упражнений пострадать с буквами и пойдут цифры" или символы
тепловая карта клавиатуры (по скорости и ошибкам)
Промежуточные игры между упражнениями скорее не нравились, но может школьникам зайдет.
И еще, раз вы так подробно в статье про руки рассказываете - они же неправильно отображаются, вся рука перемещается по клавиатуре, тогда как в реальности она должна неподвижно лежать. Тут в идеале надо под каждую клавишу свою графику рисовать
собственно, как на этом сайте


Dadfront Автор
28.09.2026 15:52рисование графики под каждую руку, не очень приятное занятие, ну и не очень оптимальное, придется хранить кучу комбинаций под каждую кнопку, в текущей реализации фишка в том что одна и та же картинка руки используются для абсолютно любой клавиши, согласен положение рук не отражает реальное положение, но оно схематично и показывает активный палец а не правильное положение руки. Подумаю над тем чтобы отображать прям именно правильное положение руки.

a3d
28.09.2026 15:52Я тоже чуть потестил, дизайн приятнее, более простой, меньше элементов на экране особенно в момент набора.
1. Пальцы показаны прозрачными/контурными, и они еще и всегда правильно ставятся, это вообще имба, маст хев, намного лучше чем неделимая просто смещаемая по x,y рука.
2. Звук клавиш очень классный, а на skilltap у меня звуки кнопок только изредко просираются, FF + win 10 + старый проц возможно, но тут звук норм работает. Да звук должен быть отключаемый конечно.
Dadfront Автор
28.09.2026 15:522. Да звук клавиш крутой у них откажемся от системных звуков перейдем на что-то более красивое.
1. Векторные прозрачные руки, я бы поспорил выглядит сухо, линия вектора некрасиво заезжает на кнопку, нет анимации нажатия на кнопку, дизайн простоват и сделан давно как будто бы, на мой вкус прям слишком просто, опять же отсутствие элементов на экране не назвал бы плюсом

XelaNimed
28.09.2026 15:52Большое спасибо за Вашу работу, добавлю свои "5 копеек":
- на сколько я понял из анимации нажатие на клавишу всё время показывается для одного пальца (указательного), но крайние клавиши удобней нажимать мизинцем, т.е. я имею ввиду печать всеми пальцами, а не только указательными;
- добавьте возможность добавления своей раскладки. К примеру я использую фонетическую раскладку клавиатуры (немецкий/русский), которую сам прописал/собрал с помощью MSKLC и в стандартных раскладках её, конечно, не найти;
- также, на мой личный взгляд, анимация кистей рук перекрывает клавиши и при действительно слепом наборе будет закрывать раскладку - можно просто показывать пальцы внизу экрана/окна и подсвечивать нужный;
a3d
28.09.2026 15:52Да руки и позиции пальцев нормально сделаны вот тут, имхо надо автору это повторять, не смотря на то что это будет не просто сделать. http://typingclub.com/
vanichh
Судя по дизайну на сайте все опять написано на ии. Не понимаю как сыну показались скучными тренажеры если есть «ГОНКИ на клавиатуре» будем объективны ребенку в это будет интереснее играть, а самих тренажеров просто куча, не понял зачем еще один ии тренажер нужен
Dadfront Автор
Дизайн действительно делал ии в статье это открыто описывается, но решения итоговые в любом случае принимали мы на мой вкус показалось свежо, но вот идея через смесь растра и вектора для выделения пальцев рук интересная на мой взгляд ну и у аналогичных проектов я лично такого не видел. По поводу клавогонок это отдельный игровой режим который на мой взгляд подходит для тех кто уже владеет стартовым навыком, мы также попробуем сделать какой-то свой игровой режим для закрепления навыков, но в статье речь шла именно об учебном процессе. Благодарю за мнение.