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

Интересно а под iOS получится портировать?
Сплит-клавиатура с донглом
На выходных я собрал версию клавиатуры с правым сенсором. Особенность правого сенсора в том, что он находится на вторичном устройстве, а команды от него передаются по Bluetooth на левую половинку клавиатуры, которая затем транслирует их на компьютер.
Кроме этого, я научился будить компьютер при помощи клавиатуры, когда она подключена проводом. Оказалось, что компьютер прекрасно просыпается от клавиатуры, а проблема была на стороне самого компьютера — эта функция была отключена в настройках.
Теперь, когда я умею подключать сенсор на правой половине, я решил сделать ещё одну версию прошивки, в которой клавиатура будет подключаться к компьютеру через проводной донгл, а обе половинки станут периферийными устройствами.
Такая конфигурация позволит быстро переключать донгл между разными компьютерами. Кроме того, клавиатура сможет будить компьютер. Сделать это по Bluetooth гораздо сложнее, поскольку Bluetooth-адаптер никогда полностью не засыпает и механизм пробуждения работает иначе. Если же клавиатура подключена к компьютеру через USB, всё значительно проще.
В этой конфигурации обе половинки клавиатуры будут подключаться к донглу по приватному беспроводному протоколу, а уже сам донгл будет подключён к компьютеру по USB и сможет его будить.
Одновременно донгл всё ещё будет Bluetooth-устройством, через которое можно будет взаимодействовать с экранной программой, показывающей текущую раскладку клавиатуры.
В будущем можно расширить проводной протокол, добавив дополнительный канал связи для управления раскладками, но это уже будет следующим этапом.
Кроме того, я обнаружил, что вогнутый вариант сенсора нравится мне меньше, чем плоский. Видимо, из-за вогнутости его активная зона получается меньше, чем у плоского варианта. Поэтому сенсор плохо срабатывает по краям.
Также у него не работает прокрутка по краю сенсора. В сети я нашёл информацию о другом варианте прокрутки — круговым движением пальца, — но повторить его мне не удалось. Возможно, мой сенсор немного отличается.
В любом случае в следующей версии клавиатуры я планирую использовать именно плоский сенсор. Хотя вогнутый вариант кажется более эргономичным, неотзывчивость боковых зон меня немного расстраивает.

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

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

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


