В этой инструкции для примера взята K:02 от ErgoHaven.
Для начала нам понадобится репозиторий QMK/Vial, где будут готовые настройки для вашей клавиатуры. В нашем примере, клонируем репозиторий vial-qmk от ErgoHaven. В нём уже есть все настройки под их клавиатуры, настроен OLED, контроллеры, Vial и т.д.
Сама раскладка лежит в keyboards/ergohaven/k02/keymaps
. Берём за основу ту, что называется ergohaven
. Просто дублируем эту папку и работаем в ней. Раскладка состоит из нескольких файлов, главный из которых keymap.c
. Наша задача — адаптировать эту стандартную раскладку, под Wellum. А именно, нам понадобится изменить количество, название и состав слоёв, добавить подключение файлов с доп. функциями и т.д.
Названия слоёв по умолчанию объявлены в users/ergohaven/ergohaven.h
, но каждая кастомная раскладка обычно использует свои названия. Поэтому копируем блок с enum layers { ... }
в файл keymap.c
.
Далее, custom keycodes (собственные названия комбинаций клавиш): они тоже объявлены где-то по-умолчанию, в том же ergohaven.h
, поэтому можем их перенести в keymap.c
, если хотим использовать. Также, переносим эти кастомные коды из прошивки (они идут до объявления enum layers { ... }
).
Важно: они должны идти перед определением содержимого слоёв const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ... }
Копируем содержимое этой секции из раскладки Wellum, там будет шесть секций (_DEF, _GAM, _GFN, _SYM, _NAV, _NUM
). Проблема в том, что они ориентированы на 36-клавишную разметку, а у нас она может (и скорее всего будет) другая. Например, на Corne 42 клавиши, а у K:02 вообще 58.
Нужно соблюсти размерность и проставить в недостающих клавишах KC_NO
— пустую клавишу. К примеру, для K:02 весь верхний ряд нужно занять KC_NO
, добавить столбец пустых слева и справа, а также для четырёх нижних клавиш под средними и безымянными пальцами тоже проставить KC_NO
.
Оставшийся код прошивки (после секции keymaps
) просто вставляем после этой секции. Далее там есть код про OLED, который отображает название активного слоя. Его нужно подправить под наши новые названия слоёв (_DEF, _GAM, ...
).
С раскладкой закончили, осталось подключить доп. функционал (oneshot.c/h
, swapper.c/h
). Эти файлы просто копируем так, чтобы они лежали рядом с rules.mk
. А в самом rules.mk
в конец дописываем
SRC += ./oneshot.c
SRC += ./swapper.c
Далее, мелкие, быть может, необязательные фиксы:
- в файле
k02/config.h
устанавливаем кол-во слоёв с помощью#define DYNAMIC_KEYMAP_LAYER_COUNT 6
. - в файле
k02/info.json
правим лейблы под клавиши в соответствии с раскладкой.
И всё, можно билдить. Для этого понадобится Docker.
В корне репозитория вызываем util/docker_build.sh ergohaven/k02:wellum
. Формат такой: <папка с клавиатурой>:<папка с раскладкой>
. Docker подтянет все нужные зависимости и попытается сбилдить прошивку. Если будут ошибки, то они выведутся в консоль. К примеру, у меня возникала ошибка с ненайденным файлом ergohaven.h
. Он лежит в users/ergogaven
, но команда билда почему-то его не подхватывает. Тут надо спросить у ErgoHaven какой командой они делают билд... Но я просто забил на этот файл, закомментил в файле keymap.c
его импорт. А его содержимое растащил по другим файлам — там была секция
NKRO_ENABLE = yes # Enable N-Key Rollover
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
LTO_ENABLE = no
VIA_ENABLE = yes
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes
DYNAMIC_MACRO_ENABLE = yes
CAPS_WORD_ENABLE = yes
REPEAT_KEY_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
которую я положил в k02/rules.mk
. В ней включаются и настраиваются всякие фичи Vial: комбо, макросы и т.д. Без этого билд упадёт, т.к. будет пытаться в комбо, а они не включены.
После успешного билда в папке .build
появится файл с прошивкой — ergohaven_k02_wellum.uf2
. Его уже и прошиваем на обе половинки и радуемся?