🎹

ZMK STUDIO対応手順_20241119

2024/11/19に公開

一旦自分がやったことをメモっておきます
以下は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から変換するサイトもあるみたいです
https://zmk-physical-layout-converter.streamlit.app/

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