2026-10-02

Экранная клавиатура

Для того чтобы видеть текущую расладку кастомной клавиатуры на экране, Codex по моей просьбе сделал небольшое tauri приложение котрое показывает раскладку прямо на экране поверх других окон. Очень удобно - я могу видеть где какие клавиши, и при необходимости поправлять раскладку. 

Но tauri позволяет создавать кроссплатформенные приложения, подумалось, а зачем занимать место на экране, если рядом лежит мобильник - пусть клавиатура показывается на нем.

Добавил возможность сборки экранного хелпера под Android. Вышло здорово! 

Интересно а под iOS получится портировать?

 

Оставить комментарий

 
  2026-09-28

Сплит-клавиатура с донглом

На выходных я собрал версию клавиатуры с правым сенсором. Особенность правого сенсора в том, что он находится на вторичном устройстве, а команды от него передаются по Bluetooth на левую половинку клавиатуры, которая затем транслирует их на компьютер.

Кроме этого, я научился будить компьютер при помощи клавиатуры, когда она подключена проводом. Оказалось, что компьютер прекрасно просыпается от клавиатуры, а проблема была на стороне самого компьютера — эта функция была отключена в настройках.

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

Такая конфигурация позволит быстро переключать донгл между разными компьютерами. Кроме того, клавиатура сможет будить компьютер. Сделать это по Bluetooth гораздо сложнее, поскольку Bluetooth-адаптер никогда полностью не засыпает и механизм пробуждения работает иначе. Если же клавиатура подключена к компьютеру через USB, всё значительно проще.

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

Одновременно донгл всё ещё будет Bluetooth-устройством, через которое можно будет взаимодействовать с экранной программой, показывающей текущую раскладку клавиатуры.

В будущем можно расширить проводной протокол, добавив дополнительный канал связи для управления раскладками, но это уже будет следующим этапом.

Кроме того, я обнаружил, что вогнутый вариант сенсора нравится мне меньше, чем плоский. Видимо, из-за вогнутости его активная зона получается меньше, чем у плоского варианта. Поэтому сенсор плохо срабатывает по краям.

Также у него не работает прокрутка по краю сенсора. В сети я нашёл информацию о другом варианте прокрутки — круговым движением пальца, — но повторить его мне не удалось. Возможно, мой сенсор немного отличается.

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

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

Также нужно сделать нормальный корпус для донгла. Сейчас он пока собран на макетной плате и выглядит совсем неаккуратно.

 

Оставить комментарий

 
  2026-09-26

Прорезиненные ножки для клавиатуры

Клавиатура должна надёжно стоять на столе и не двигаться во время работы. Поэтому мне хотелось добавить на её нижнюю поверхность нескользящие ножки.

Сначала я попробовал использовать кусочки резиновых колец разной толщины. Они прекрасно справлялись со своей задачей, но их было сложно аккуратно закрепить. Обычный клей оставлял на корпусе разводы, а при использовании двустороннего скотча резиновые полоски со временем начинали отклеиваться.

Затем я попробовал мебельные накладки. Однако они предназначены скорее для того, чтобы мебель легче скользила по поверхности, а не для предотвращения скольжения. Клавиатура стала устойчивее лежать на столе, но всё равно продолжала двигаться.

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

В итоге получилось идеально. Я ожидал получить цельную резиновую ленту, но она оказалась слегка вспененной. Впрочем, это не испортило результат, а, скорее, даже улучшило способность ножек препятствовать скольжению.

Теперь нижняя поверхность клавиатуры выглядит ещё аккуратнее, а обе её половинки устойчиво и приятно лежат на столе. Благодаря встроенным магнитам их также можно соединить друг с другом. В таком виде клавиатуру очень удобно переносить.

Осталось только придумать для неё дорожный футляр — или хотя бы простой тканевый мешочек.

 

Оставить комментарий

 
  2026-09-21

Результаты выходных

На выходных я закончил новый корпус для тонкой версии низкопрофильной клавиатуры с сенсором. Теперь с ней можно работать совсем без мыши.

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

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

Кроме того, на выходных я добавил в Keyboard Helper поддержку Windows. Теперь приложение умеет определять текущую языковую раскладку в системе и соответствующим образом менять раскладку экранной клавиатуры.

 

Оставить комментарий

 
  2026-09-12

Тачпад для Corne

После того как моя клавиатура научилась работать с разными устройствами, возник закономерный вопрос: если есть клавиатура, то где мышь?

Управлять курсором с помощью клавиш она уже умеет, но на практике это не очень удобно. Поэтому я задумался: что, если добавить к клавиатуре простой манипулятор, способный заменить мышь?

Я рассмотрел несколько вариантов.

Можно превратить в мышь саму клавиатуру. Она достаточно маленькая и даже немного похожа на неё. Но двигать клавиатуру по столу пока кажется мне слишком странной идеей.

Другой вариант — установить трекбол. Однако для него нужна довольно сложная механическая конструкция, создавать которую я пока не умею.

А что, если добавить тачпад?

Он подключается несколькими проводами, не требует сложной механики и сразу даёт привычный способ управления курсором, сопоставимый с обычной мышью.

Сказано — сделано.

Тачпад Cirque прекрасно подошёл к клавиатуре на базе ZMK и органично вписался в дизайн корпуса. Теперь моя клавиатура может использоваться не только для набора текста, но и для управления курсором.

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

 

Оставить комментарий

 
  2026-06-23

Приехали новые платы для Corne

Предыдущую плату я заказал для клавиатуры со свичами Choc, тогда я еще не знал что Choc и MX имеют разные посадочные места. Поскольку у меня уже были MX свичи то пришлось еще заказывать Choc а MX при этом остались не у дел. Решил это исправить и сделать новую версию клавиатуры со свичами MX.

И вот платы приехали - теперь нужно все собрать.

 

Оставить комментарий

 
  2026-04-20

GATT профайл

Выходные провел за изучением возможности использования Bluetooth Low Energy чтобы посылать на комп номер активного слоя ZMK клавиатуры. И у меня получилось! Для начала я сделал простую клавиатуру с черырьмя кнопками и подключил к ней дисплей. Затем добавил кастомный GATT профайл и убедился что я вижу активный слой в приложении на смартфоне. Под конец создал простой cli на rust который выводит активный слой в терминале.

Теперь осталось прикрутить логику из cli в мой клавиатурный хелпер и я смогу видеть в реальном времени какой у меня сейчас слой и какие кнопки я нажимаю!

 

Оставить комментарий

 
  2026-02-26

А че так можно было?

Чтобы поэкспериментировать с HID, мне потребовалось устройство на nice!nano — я хочу передавать на компьютер номер активного слоя, чтобы можно было показывать его на экране. Обнаружил, что на Printables есть несколько устройств на ZMK, но без клавиш. Казалось бы, зачем? Ответ нашёлся, когда я посмотрел на этот проект. Оказалось, что для сплит-клавиатуры не обязательно, чтобы на одной половине был центральный контроллер, а на другой — периферийный. Можно сделать периферийными обе половины, а центральный контроллер вынести в отдельный донгл, подключённый к компьютеру через USB. Достоинств у такой архитектуры масса: сигнал от компьютера доставляется практически мгновенно, связь между обеими половинами и центральным донглом имеет одинаковую задержку, центральная, самая энергозатратная часть клавиатуры теперь имеет постоянное питание, а значит, заряжать половинки нужно гораздо реже. Думаю, тестовое устройство я тоже сделаю без клавиш — в виде донгла. Всё необходимое для этого у меня уже есть!

 

Оставить комментарий

 
  2025-06-25

Полуторные кейкапы

Приехали полуторные кейкапы для моей клавиатуры. По какой-то причине дизайнер, разработавший этот корпус, хотел видеть именно клавиши полуторной ширины по бокам. На мой взгляд с практической точки зрения это имеет мало смысла, но раз художник так видит будем следовать его плану.

 

Оставить комментарий

 
  2025-05-29

Cтранный баг в Android с языками физической клавиатуры

Когда я подключил клавиатуру к телефону на Android, чтобы посмотреть как она будет с ним работать я обнаружил что не работает русская раскладка.  Подключил другую внешнюю клавиатуру - тоже самое, язык вроде бы переключается а печатает все равно по английски. Уверен, я раньше точно мог печатать по-русски — а теперь, при переключении языка, всё равно набираются английские символы.

Перепробовал всё: менял настройки, переустанавливал Gboard, сбрасывал раскладки — ничего не помогало. Казалось, клавиатура просто "забыла", что умеет русский.

И тут я решил попросить жену — она часто печатает на своем планшете и у неё на Android всё работает как надо. Она пошла в настройки и проделала ровно то же самое, что и я, но у неё всё завелось. При этом когда я делал тоже самое у меня не работало. Магия?

Нет. Просто нюанс интерфейса, о котором я не знал, даже два нюанса.

Оказывается, в Android для каждой физической клавиатуры можно отдельно настроить список языков. При этом для переключения используются два сочетания клавиш — через Ctrl + Space и Shift + Space. При этом переключают они что-то свое. Shift + Space переключает язык экранной клавиатуры при этом физическая клавиатура продолжает печатать на английском, а вот Ctrl + Space переключает язык физической клавиатуры хотя экранная показывает, что вы печатаете на другом языке.

Второй нюанс заключается в том, настроить нужные языки для физической клавиатуры не так просто. Сама форма настройки запрятана довольно глубоко в дебрях настроек, но даже если вы ее найдете то добавить язык сможете не с первого раза. Когда вы настраиваете список языков для физической клавиатуры, в списке языков рядом с каждым пунктом есть переключатель. Я всегда нажимал по нему — по ползунку справа. А вот жена нажала по названию самого языка. И только в случае тапа по названию языка Android сохраняет выбор языка. Если нажимать только по переключателю — выбранный язык не сохраняется, и после выхода из меню всё сбрасывается. Скорее всего это баг интерфейса, но он стабильно воспроизводится.

Вывод: Если на Android у вас не работает русская раскладка с внешней клавиатурой — не трогайте переключатели справа! Нажимайте именно по названию языка, чтобы он сохранился в системе.

Надеюсь, эта заметка сэкономит кому-то пару часов нервов.

 

Коментариев: 2