Semi-transparent always-on-top Windows overlay that shows the keymap of a Vial/QMK split keyboard (Silakka54). - draws all layers from a Vial .vil layout, transparent keys fall through - detects the active layer from the keyboard via a Raw HID command (firmware/) - shows characters of the active Windows input language - can split the two halves into separate, independently movable windows - highlights pressed keys; tray menu for opacity, size and options - Inno Setup installer and portable build; GitHub-style CI workflow
3.9 KiB
Прошивка Silakka54 (LED, v1.4led) с командой «какой слой активен»
Это исходники релиза v1.4led
(keymap vial_led, подсветка слоёв) плюс файл keyoverlay_hid.c. Он добавляет HID-команду 0xE0:
оверлей спрашивает плату, и плата отвечает номером активного слоя. Раскладку и LED команда не затрагивает,
работает и при заблокированном Vial.
Протокол
Запрос (хост → клавиатура, Raw HID, 32 байта): [0xE0, 0x01, ...]
Ответ: [0xE0, 0x01, highest_layer, layer_state (u32 LE), default_layer_state (u32 LE), ...]
Номер 0xE0 не пересекается с командами VIA (0x01..0x1F), Vial (0xFE) и «не обработано» (0xFF).
Прошивка только читает состояние. Слой отдаёт та половина, которая подключена к ПК (главная).
Готовые файлы
Собранные .uf2 лежат в Releases (в git они не хранятся):
silakka54_vial_led_keyoverlay_LEFT.uf2— в левую половину, собран сMASTER_LEFTsilakka54_vial_led_keyoverlay_RIGHT.uf2— в правую половину, собран сMASTER_RIGHT
LEFT и RIGHT различаются тем, какая половина считается главной (определяет, в какую USB-розетку втыкать кабель), как и в оригинальных релизах проекта.
Прошивка платы (RP2040)
- В Vial: File → Save current layout. После обновления прошивки раскладка может сброситься.
- Закрой Vial и оверлей. Отключи кабель между половинами (TRRS) на время прошивки.
- Зажми BOOT на плате и подключи USB (или дважды быстро нажми reset). Появится диск RPI-RP2.
- Скопируй на него файл своей половины. Плата перезагрузится сама. Повтори для второй половины.
- Подключи половины обратно. В Vial загрузи сохранённую раскладку (File → Load saved layout), если слои пропали.
Откат: прошей оригинальные silakka54_vial_led_LEFT.uf2 / ..._RIGHT.uf2 из
релиза v1.4led тем же способом.
Сборка
Нужны Git, bash и Docker.
bash firmware/prepare-source.sh # клонирует vial-qmk и silakka54 (v1.4led) в .firmware-work/ и добавляет команду
docker build -t keyoverlay-fw-build firmware
docker run --rm -v "$PWD/.firmware-work/vial-qmk:/qmk_firmware" -v "$PWD/firmware:/fw" -w /qmk_firmware keyoverlay-fw-build sh /fw/build-in-container.sh
(В PowerShell вместо $PWD/... используй полные пути: -v C:\путь\.firmware-work\vial-qmk:/qmk_firmware.)
Готовые файлы появятся в .firmware-work/vial-qmk/ как silakka54_vial_led_keyoverlay_LEFT.uf2 и ..._RIGHT.uf2.
Первая сборка долгая (десятки минут на смонтированной папке Windows), повторные быстрее.
Образ Docker (Dockerfile) добавляет к базовому образу QMK компилятор ARM и утилиту qmk.
Файл keyoverlay_hid.c распространяется под GPL-2.0-or-later, как и QMK/Vial, в который он собирается.