Свой тренажёр печати для детей: три ошибки и одна догадка, которая сработала
- вторник, 27 октября 2026 г. в 00:00:22
Я преподаю детям программирование и вижу одну и ту же картину: на обычных тренажёрах печати дети быстро устают, начинают отвлекаться, а некоторые просто просят выключить. Тренажёра для детей с дислексией я не нашла ни одного. Ждать, пока его кто-то придумает, я не стала и сделала свой — Клавитраж.
Идея пришла не только с занятий: у меня самой дислексия, и именно клавиатура когда-то помогла мне справиться с письмом. Как я живу с этим и почему печать стала для меня спасением, расскажу в отдельной статье.
Здесь — о том, что я придумала, что из этого сработало, а в чём я ошиблась.

Клавиатурный тренажёр для детей, с русской и английской раскладкой и версией, удобной для детей с дислексией. Дизайн построен на витражах, через которые проходит свет.
Клавитраж написан на JavaScript с React и собирается Vite в обычные статичные файлы: HTML, CSS и JS. Сервера и базы данных нет, сайт лежит на хостинге Beget, а прогресс ребёнка хранится прямо в браузере, в localStorage, поэтому регистрация не нужна. Уроки разбиты на 8 уровней, от первых клавиш до скорости. У каждого урока свой набор выученных букв, и генератор собирает строки только из них. В режиме при дислексии вместо случайных сочетаний вроде «аоав» он подставляет только отдельные буквы и настоящие слова.
Звук был единственным, в чём я с самого начала была уверена. При нажатии на клавишу раздаётся звук удара по стеклу, и он действительно притягивает детей. Он поддерживает идею витража и превращает каждое нажатие в маленькое событие, а не просто в «правильно» или «неправильно».
Звуковых файлов в Клавитраже нет вообще: звон стекла синтезируется прямо в браузере через Web Audio API. Каждый удар — это основной тон и два «неровных» обертона, как у бокала, которые быстро затухают:
function chime(freq, { volume = 0.12, length = 1.1 } = {}) { const t = ctx.currentTime; const out = ctx.createGain(); out.gain.setValueAtTime(0.0001, t); out.gain.exponentialRampToValueAtTime(volume, t + 0.01); // мгновенная атака out.gain.exponentialRampToValueAtTime(0.0001, t + length); // долгое затухание out.connect(ctx.destination); for (const [mult, level] of [[1, 1], [2.76, 0.35], [5.4, 0.12]]) { const osc = ctx.createOscillator(); const g = ctx.createGain(); osc.frequency.value = freq * mult; g.gain.value = level; osc.connect(g).connect(out); osc.start(t); osc.stop(t + length); } }
Звук не отстаёт от нажатия, потому что ничего не нужно загружать: он создаётся в момент нажатия. Каждая верная клавиша звучит следующей нотой пентатоники. В этой гамме любые ноты подряд звучат красиво, так что ребёнок, печатая, как будто играет мелодию. На ошибку вместо резкого «бзз» звучит мягкий глухой звук.
На первых уровнях доступны всего несколько букв, например только «а» и «о». Казалось бы, какой тут сюжет. Но я добавила сказки, и детям оказалось интересно угадывать историю даже на таких простых уровнях.
А вот первый дизайн им не понравился, и это было понятно. Все витражи для сказок я сначала сгенерировала нейросетью, и разобрать на них сюжет было трудно: картинка красивая, но непонятно, что на ней происходит.
В итоге я перешла на простой стиль и взяла за основу иллюстрации из детских книжек со сказками. Картинки снова сделала нейросеть, но теперь на них сразу понятно, кто герой и что происходит. Когда техническая часть меня устроит, я выделю неделю-другую и нарисую витражи сама.
Сначала я не стала добавлять на экран клавиатуру с подсказкой в игры. Мне казалось, что в игре она будет напоминать урок, а хотелось ощущения отдыха.
Вышло наоборот. Без подсказки задача стала труднее, и дети уставали быстрее. Оказалось, что «похоже на занятие» для ребёнка меньшая проблема, чем «непонятно, куда нажимать».

Боже, храни MVP и нейросети. Да, именно нейросеть нарисовала те самые непонятные витражи, но она же помогла мне за считаные дни собрать работающую версию и проверить всё это на детях.
Пара детей, которые на других тренажёрах постоянно отвлекались или вовсе просили их выключить, на Клавитраже стали заметно вовлечённее. Как минимум, это новая картинка и прикольный звук.
Но подействовало не на всех. Некоторым детям печать в целом сильно надоедает, а кому-то просто не нравится проходить через трудности, когда учишь что-то новое. И это понятно: я сама постоянно выхожу из себя, когда не могу с первого раза понять и освоить что-то.
Чем-то это напоминает историю Dart. Google задумывала его как замену JavaScript: у JS есть фундаментальные недостатки, и новый язык должен был их исправить. Заменить JS так и не получилось, у Dart нашлись свои слабые места, но он нашёл свою нишу во Flutter. С Клавитражем, похоже, так же: он не заменит все тренажёры и подойдёт не всем, но если вернул интерес хотя бы нескольким детям, которые раньше просили выключить тренажёр, это уже имеет смысл.
Работы ещё много: новые игры, доработка режима для детей с дислексией, внешний вид сайта. Но впервые я не просто сделала проект для оценки, а создала что-то, чем по-настоящему дорожу.
Если вы преподаёте, растите детей или сами делаете обучающие сервисы, буду рада, если попробуете Клавитраж и напишете, что не так: klavitrazh.ru.