Problem

При cold boot на обеих частях клавиатуры загораются лого (здоровое поведение: на левом отображается debug shi, на правомлого), но нажатия не регистрируются — переподключение кабеля решает проблему.
В итоге, проблема в определении при старте системы master/slave частей клавиатуры.
При перезагрузке (warm boot) клавиатура не теряет питание и не выключается, поэтому проблемы при перезагрузке нет.

Solution

Compiling

Собирать прошивку буду сам из официальной репы:

git clone https://github.com/qmk/qmk_firmware.git && cd qmk_firmware  # юзайте алиас gccd
qmk setup

Есть несколько решений, как я понял, но я воспользовался простым определением SPLIT_USB_TIMEOUT:

keyboards/crkbd/keymaps/default/config.h
#define SPLIT_USB_TIMEOUT 10000  // 10s

Почему именно 10 секунд?

10 секунд, в моем случае — время от нажатия на клавишу запуска ПК до момента, где может понадобиться взаимодействие с клавиатурой (выбор версии конфигурации NixOS, например).
Таймаут меньше 10 секунд не решает проблему, поэтому это еще и минимальный рабочий таймаут, в моем случае.

Flashing

Теперь нужно спомпилировать .uf2 файл:

qmk compile --keyboard crkbd --keymap default --env CONVERT_TO=promicro_rp2040

Осторожнее с TRRS кабелем

Не соединяй/разъединяй половинки включенной клавиатуры — может сгореть🫣 что-то там…
P.s. Но мне пока везет, учитывая, что я и Шихо уже вытаскивали кабель включенной клавиатуры по незнанию.

.uf2 файл нужно перенести на половинки клавиатуры — для этого нужно (соединительный TRRS кабель тут не нужен будет):

  1. Отдельно подключить левую половинку и ресетнуть контроллер одним из способов:
    • Дважды быстро нажав на ресет кнопку под щитком контроллера/на корпусе.
    • Комбинацией клавиш, назначенной заранее (SW RESET).
  2. Половинка определится как накопитель — туда и нужно перенести .uf2 файл.
  3. Отключай половинку и повтори тоже самое с правой.

Keymap

Этой теме вообще не место в этой статье, но who cares.

В общем, свой keymap я настраивал напрямую в keyboards/crkbd/keymaps/default/keymap.c.
Это, как раз, повод упомянуть репу, где и находятся (только) измененные мной файлы, решающие эту проблему (там же храню свой keymap).


Sauces: