❌

Normal view

Как я превратил клавиатуру от ноутбука MSI в самостоятельную USB‑клавиатуру

Есть люди, которые спокойно меняют клавиатуры и через пару дней привыкают к новым. А есть моя жена. У неё есть ноутбук MSI GS75, и его клавиатура ей очень нравится. Настолько, что ни одна из других клавиатур, которые мы пробовали, не смогла её заменить.

Я перепробовал немало вариантов. Одни отличались ходом клавиш, другие — усилием нажатия, расположением кнопок или просто тактильными ощущениями. Казалось бы, выбор современных клавиатур огромен, но подходящей так и не нашлось. В какой-то момент возникла мысль: а зачем вообще искать замену, если нужная клавиатура уже существует? Осталось только научить её работать отдельно от ноутбука.

Так начался небольшой домашний проект, который постепенно превратился в исследование клавиатурной матрицы, разработку двух ревизий печатной платы на STM32, написание собственной USB HID-прошивки и борьбу с фантомными нажатиями. Сейчас у меня уже есть работающий прототип: 102 клавиши, USB Type-C, поддержка Fn и мультимедийных сочетаний, режим NKRO и собственная система диагностики.

В этой статье расскажу, как всё это разрабатывалось, какие проблемы возникали и почему самым сложным оказалось не изготовить плату, а заставить клавиатуру правильно обрабатывать нажатия.

Читать далее

Пишем свою мобильную ОС с нуля на Rust. Часть 4: GUI, SQLite и DOOM

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

Дальше началась системная работа, о которой я писал в предыдущей части. Теперь ОС наращивает userspace-слой. На экран вернулась картинка — уже с окнами, кнопками и приложениями для телефона, Raspberry Pi и QEMU. На телефоне заработал и тачскрин.

Эта часть будет обзорной: посмотрим, как теперь устроены связи между программами, файловая система и поддержка C и C++, запустим SQLite и DOOM. А в конце напишем своё GUI-приложение — калькулятор. В третьей части он выводил результат в UART. В этой сделаем калькулятор с окном и кнопками.

Читать далее
❌