skip to content
Архитектура в курилке
ZMK Studio

Добавляем поддержку ZMK Studio

/ чтиво на 2 минуты

Содержание

TLDR

В config/<keyboard_name>.conf:

config/<keyboard_name>.conf
CONFIG_ZMK_STUDIO=y

В build.yaml:

build.yaml
---
include:
- board: <some board>
shield: <some shield>
snippet: studio-rpc-usb-uart
cmake-args: -DCONFIG_ZMK_STUDIO=y

Добавляем куда-то кнопку &studio_unlock в config/<keyboard_name>.keymap.

config/<keyboard_name>.keymap
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans
&trans &trans
&trans &studio_unlock

Веб-версия

Локальная версия

А зачем

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

Update example

Типичный пример того, что нужно сделать:

  1. Открываем файл <keyboard_name>.keymap

  2. Правим нужные нам клавиши

  3. Делаем коммит

  4. Пушим

  5. Ждем, пока пройдет CI1

  6. Скачиваем архив с прошивками

  7. Распаковываем

  8. Переводим плату в режим bootloader-а, не забыв её подключить к компу

  9. Закидываем

  10. PROFIT

И это ведь еще и happy-path. А если опечатались? А если перепутали и не на ту кнопку навесили? На самом деле даже задроту вроде меня иногда хочется просто тупо натыкать кнопочки в GUI-е.

Вот если Вы решили что-то сделать, чтобы было проще, то этот гайд для Вас.

Как

Гайд целиком и полностью взят отсюда.

В новой ветке2 в config/<keyboard_name>.conf добавляем:

config/<keyboard_name>.conf
CONFIG_ZMK_STUDIO=y

В build.yaml добавляем:

build.yaml
---
include:
- board: <some board>
shield: <some shield>
snippet: studio-rpc-usb-uart
cmake-args: -DCONFIG_ZMK_STUDIO=y

Далее, по соображениям безопасности, нам нужно выбрать какую-то клавишу (или комбинацию), которая сможет активировать так называемый «ZMK Studio Unlock Behavior»:

ZMK unlock

Я решил поставить её на самый нижний слой, где у меня переключения Bluetooth, настройка громкости и яркости.

Эту кнопку надо будет нажимать тогда, когда ZMK Studio потребует, как на скрине выше.

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

После этого можем перейти на сам сайт ZMK Studio или скачать и поставить на комп приложение.

А минусы будут?

ZMK Studio на момент написания статьи не поддерживает довольно много фич:

  • Нельзя менять конфигурацию энкодеров — это надо будет делать по старинке через keymap

  • Многие клавиши отображаются пустыми, хотя на них есть назначенное поведение. Так, у меня есть кастомная клавиша, чтобы включать двойным нажатием Caps Lock, а простым нажатием — Shift. ZMK Studio не знает, как это показать, поэтому просто при наведении показывает NEW_CAPS, а на превью — ничего. Эта же участь постигла и клавиши для эмуляции мыши и многие другие.

new caps
  • Нельзя добавлять новые слои — это тоже делается через обновление keymap

  • Нельзя добавлять новые поведения

  • И еще куча всего

Но пусть это Вас не останавливает! Уже большая часть нудной и мудреной рутины убрана!

По итогу

Мне очень нравится, что такие проекты, как ZMK, получают все больше и больше поддержки со стороны сообщества и что ими все проще и удобнее пользоваться!

Volucris both

Я бы, может, и дальше продолжал настраивать клаву исключительно через файлики, но впервые её будет юзать (я, по крайней мере, надеюсь) кто-то кроме меня, и очень классно, что можно просто через GUI все настроить!

Берегите себя и своих близких!

Сноски

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

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