🎹
ZMK STUDIO対応手順_20241119
一旦自分がやったことをメモっておきます
以下はGitHub Actionsでのビルド前提でローカルビルドの場合は一部異なります
詳しくは公式ドキュメントを読んでください
変更が必要なファイルは以下の通りです
- .conf(セントラル側)
- .dtsi
- build.yaml
- (west.yaml)
- (.overlay(セントラル側))
confファイルの変更
セントラルデバイスの.confファイルに以下を追記
CONFIG_ZMK_STUDIO_LOCKINGはデフォルトではy
yの場合は&studio_unlockをキーマップに入れておく必要があり、
このキーを押すことでキーマップ変更が可能になる
Test_R.conf
+CONFIG_ZMK_STUDIO=y
+CONFIG_ZMK_STUDIO_LOCKING=n
.dtsiの変更(physical layoutの追加)
キーが物理的にどのように並んでいるかを座標で示す
eswaiさんのブログでも紹介されていますが、keyboard layout editor出力のjosnから変換するサイトもあるみたいです
Test.dtsi
#include <dt-bindings/zmk/matrix_transform.h>
+#include <physical_layouts.dtsi>
/ {
chosen {
- zmk,kscan = &kscan0;
- zmk,matrix_transform = &default_transform;
+ zmk,physical-layout = &roba_physical_layout;
};
+ roba_physical_layout: roba_physical_layout {
+ compatible = "zmk,physical-layout";
+ display-name = "Default";
+ transform = <&default_transform>;
+ kscan = <&kscan0>;
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 37 0 0 0>
+ , <&key_physical_attrs 100 100 100 12 0 0 0>
+ , //...略
+ ;
+ };
default_transform: keymap_transform_0 {
//...略
};
//...略
};
build.yamlの変更
build.yaml
include:
- board: seeeduino_xiao_ble
shield: Test_R
+ snippet: studio-rpc-usb-uart
- board: seeeduino_xiao_ble
shield: Test_L
- board: seeeduino_xiao_ble
shield: settings_reset
west.yamlの変更(pmw3610ドライバなどを含む場合)
pmw3610のドライバなどはPR2027-petejohanson:feat/pointers-move-scrollを参照していると思います
しかしこのブランチはzmk studio未対応のブランチのためPR2477-petejohanson:feat/pointers-with-input-processorsに変更する必要があります
west.yaml
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/petejohanson
- name: kumamuk-git
url-base: https://github.com/kumamuk-git
projects:
- name: zmk
remote: zmkfirmware
- revision: feat/pointers-move-scroll
+ revision: feat/pointers-with-input-processors
import: app/west.yml
- name: zmk-pmw3610-driver
remote: kumamuk-git
revision: main
self:
path: config
.overlayの変更(XIAO BLEの場合のみ)
xiao bleはシリアル通信を無効にしておかないと、USB接続のTX/RXピンに接続されたキーなどが入力不可になってしまいます
Test_R.overlay
#include "Test.dtsi"
//...略
+&xiao_serial { status = "disabled"; };
//...略
};
Discussion