2025-05-24

Эмуляция мыши клавиатурой

Одна из главных фишек клавиатуры на базе ZMK — возможность добавить поддержку мыши. Согласно документации, это делается просто: достаточно добавить одну строку в конфигурацию.

CONFIG_ZMK_POINTING=y

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

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

# Enable mouse support
config ZMK_MOUSE
    default y

config ZMK_POINTING
    default y

Эту деталь подсказал мне Trae — ChatGPT и Claude об этом не упомянули, хотя честно пытались помочь. Теперь, чтобы двигать курсор, вовсе не обязательно использовать мышку — можно обойтись клавишами клавиатуры.

 

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

 
  2025-05-24

Honeycomb Wall

В моём углу, где я работаю, постепенно скапливается много всякой мелочи, которую нужно куда-то убирать. Часть вещей я убираю в выдвижной ящик, часть — на полочку над столом, но всё равно хочется ещё куда-то убирать клавиатуры и рабочий лэптоп. Горизонтальных поверхностей не очень много, но есть много вертикальных. Идеально было бы вешать некоторые вещи на стену, но нужно придумать для этого какие-то крючки. Сейчас у меня уже висят на стене монитор, лэптоп, внешний диск, лампа. Но туда ещё можно много всего навесить...

У ИКЕА есть доска с дырками SKÅDIS, которая отлично подходит для этого. Однако размер доски фиксированный и не очень вписывается в мой угол, где уже висят монитор, ноутбук и полка. Стал гуглить, существует ли какая-то модульная система, и нашёл вот такое: Honeycomb wall storage system.

Даже на картинке у автора такой же бардак, как у меня — значит, мне точно подойдёт!

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

 

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

 
  2025-05-15

P-канальный полевой транзистор

электроника

Обнаружил, что транзисторы, которые я поставил в поливалку и которыми коммутирую делитель напряжения и датчик влажности почвы, не самые подходящие — я использовал n-канальные IRLML2402, которые мне любезно подсказал Леонид Каганов. Они отлично открываются при уровнях трёхвольтовой логики, на которой работает ESP-8266, и держат большой ток. Но для коммутирования нагрузки, если нужно разрывать плюсовой провод питания, не годятся — для этого обычно используют p-канальные транзисторы, например IRLML6402. Заказал на AliExpress, но посылка так и не приехала — где-то потерялась по дороге. Заказал ещё раз, транзисторы приехали, но после того как я их поставил в устройство, выяснилось, что при уровнях трёхвольтовой логики транзистор полностью не запирается — на нагрузке вместо нуля оказывается 2.6 вольта. То ли прислали из бракованной партии, то ли прислали транзисторы другого номинала. Бог любит троицу — заказал ещё раз, на этот раз на Amazon, чтобы прислали побыстрее: не терпится начать отлаживать софт для устройства.

Update. Подумалось, а не перепутал ли я сток с истоком? Если да, то это объясняет почему транзистор не закрывается. Напряжение в 2.6 вольт это очень похоже на падение напряжения на паразитном диоде полевого транзистора.... Приду домой проверю эту гипотезу...

Update 2. Блин, точно, в отличии от обычных транзисторов где n-p-n и p-n-p включаются почти одинаково эммитером к низу, полевые транзисторы "переворачивают" при работе в режиме ключа. Поэтому p-канальные транзисторы нужно подключать верх-ногами - истоком к плюсу и стоком к нагрузке! Теперь стало все на свои места, век живи, век учись.

 

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

 
  2025-05-04

Универсальная раскладка клавиатуры

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

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

Часто замечаю, что не помню, где находится нужный символ в русской раскладке — и специально переключаюсь на английскую или немецкую, чтобы его набрать. Это прерывает поток мысли, замедляет набор текста и вызывает раздражение. Особенно бесят умляуты на немецкой клавиатуре — они оккупировали те клавиши, где в английской раскладке были нужные знаки. А если символ прячется под левым Alt, приходится выкручивать кисть в стиле ручной Камасутры, чтобы нажать сразу две неудобные клавиши.

Теперь, когда я научился настраивать кастомную клавиатуру при помощи ZMK, стало интересно — справится ли он с этой задачей? ZMK — это прошивка для кастомных клавиатур на базе операционной системы реального времени Zephyr. И использовать его просто как посредника между кнопкой и символом — значит бездарно тратить его потенциал. Хочется задействовать всю его мощь, чтобы создать действительно умную раскладку, которая адаптируется под мои реальные задачи и привычки.

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

Оказалось, можно! И работает это потрясающе удобно.

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

До:

После:

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

Выложил прошивку на github.

 

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

 
  2025-05-02

Ложные друзья переводчика

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

Название заимствовано из старонемецкого языка и почти точно копирует оригинальное «Stangenzirkel», но в современном языке это слово отсутствует. По-немецки штангенциркуль называется «Messschieber» или «Schieblehre» — соответственно, «раздвижной измеритель» или «раздвижная линейка».

Кстати, по-английски штангенциркуль будет calipers — видимо, слово родственно слову «калибр».

 

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

 
  2025-04-27

Новости клавиатуростроения

Подключение клавиатуры к микроконтроллеру оказалось не проблемой. Оказалось, что шилды Arduino Pro Micro и Nice!nano совместимы по выводам, поэтому можно использовать те же ноги, что и в инструкциях для Pro Micro. Чтобы залить прошивку, достаточно подключить Nice!nano к компьютеру проводом USB Type-C и дважды закоротить вывод reset с землёй на плате — после этого плата автоматически определяется как флешка, на которую нужно скопировать файл с прошивкой.

Сегодня я наконец разобрался, какие клавиши за что отвечают и как можно переключать слои. Столбцы на левой половине клавиатуры оказались в порядке, а столбцы на правой пришлось угадывать методом научного тыка. Выяснилось, что Aurora Sofle, прошивку которой я взял за основу, переключает слои с помощью клавиш, которые я просто не припаял. Чтобы не перепаивать устройство, я решил немного модифицировать прошивку. Благодаря тому, что сборка прошивки настроена через CI/CD GitHub'а, с этим почти не возникло проблем. Пока что я не придумал, как лучше организовать переключение языков: мне нравилось использовать для этого CapsLock, но на этой клавиатуре его по определению нет. Временно можно использовать Alt-Control, как и раньше, но, думаю, сделать отдельную клавишу для переключения не будет проблемой — нужно будет только решить, какую именно и где её разместить...

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

 

 

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

 
  2025-04-25

Ты не один

Почему-то сегодня в голове играет эта песня. Пусть она будет сегодня и тут тоже...

 

 

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

 
  2025-04-25

Поливалка

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

Мне прям нравится то что получается.

 

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

 
  2025-04-22

Кейкапы

Приехали кейкапы - клавиатура стала больше похожа на клавиатуру.

 

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

 
  2025-04-21

Товарищ майор не дремлет

Жена захотела поздравить родственника в России с днём рождения. У родственника кнопочный телефон, и позвонить ему можно только на мобильный номер. Поскольку позвонить в Россию на телефонный номер через Viber или Skype с определённого момента стало невозможно, пришлось звонить по мобильнику через международный роуминг. Трубку на том конце взял незнакомый голос и довольно по-хамски попросил мою жену представиться. Жена слегка прифигела и попросила представиться владельца голоса. Со второй или третьей попытки ей это удалось. Голос сказал, что он "система, которая борется с телефонными мошенниками". При этом она готова поклясться, что говорил живой человек, а не робот. На вопрос моей жены, как ей услышать абонента, которому она звонит, и при чём тут вообще она, голос затруднился ответить, посоветовав послать абоненту SMS. После того как она положила трубку и попробовала позвонить ещё раз, она услышала только ответ, что "абонент временно недоступен". 

Родина нас бережет, страна может спать спокойно, еще одному телефонному мошеннику не удалось совершить свой коварный план!

P.S. Дозвониться всё же удалось, но через другого оператора.

 

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