【LaLaPadGen2】ZMK自作キーボードでKeymap Editorを使う方法(GitHub非公開リポジトリ対応)
自作キーボード LalaPadGen2 のキーマップ設定で困ったことがありました。
ZMKファームウェアを使う自作キーボードでは、Keymap Editor というWebアプリでキーマップをGUIで編集できます。便利なツールですが、GitHubリポジトリが公開(Public)でないと使えないという制約があります。
ここで問題になるのが、キーマップのマクロにパスワードや個人的な文字列を登録しているケース。zmk-configリポジトリを公開にすると、それらが丸見えになってしまいます。かといってリポジトリを非公開(Private)にすると、Keymap Editorが接続できなくなります。
この記事では、リポジトリを非公開にしたまま Keymap Editor を使う方法を紹介します。
答えは Keymap Editor の Clipboard source(クリップボード機能)を使うこと。GitHub連携は不要で、セットアップもゼロです。
LalaPadGen2 を例にしていますが、ZMKを使う自作キーボードなら同じ手順で使えます。同じ悩みでお困りの方、ぜひ試してみてください。
この記事で解決できること
- ZMKの zmk-config リポジトリを非公開のまま、Keymap Editor の GUI でキーマップを編集できる
- パスワードマクロなどの秘密情報を GitHub で公開せずに済む
- GitHub認証もforkも不要。ブラウザとターミナルだけで完結する
前提条件
- ZMKファームウェアを使う自作キーボードの zmk-config リポジトリがローカルにクローンされていること
- ローカルビルド環境が動くこと(Docker等)
- ブラウザ(Chrome / Edge / Arc など)
手順:Clipboard source でキーマップを編集する
Step 1. keymapファイルの内容をクリップボードにコピーする
ターミナルで zmk-config のディレクトリに移動し、.keymap ファイルの内容をクリップボードにコピーします。
macOS の場合:
cd /path/to/your-zmk-config
cat config/your_keyboard.keymap | pbcopy
Linux(X11)の場合:
cat config/your_keyboard.keymap | xclip -selection clipboard
Linux(Wayland)の場合:
cat config/your_keyboard.keymap | wl-copy
Windows(PowerShell)の場合:
Get-Content config\your_keyboard.keymap | Set-Clipboard
ファイルの中身をクリップボードに入れられればOKです。テキストエディタで開いて全選択→コピーでも構いません。
Step 2. Keymap Editor を開く
ブラウザで以下のURLにアクセスします。
https://nickcoutsos.github.io/keymap-editor/
Step 3. Source に「Clipboard」、Keyboard に「Custom」を選ぶ
画面に表示される設定で、以下のように選択します。
| 項目 | 選択する値 |
|---|---|
| Source | Clipboard |
| Keyboard | Custom… |
ここが重要: Keyboard は必ず「Custom…」を選んでください。内蔵リストにある Corne や Kyria 等を選ぶと、キーの数やレイアウトが合わずエラーになります。Custom を選ばないと「Set Keymap」ボタンがグレーアウトして押せません。
Step 4. keymapを貼り付けて読み込む
テキストエリアが表示されるので、Step 1 でコピーした内容を貼り付けます(Ctrl+V / Cmd+V)。
貼り付けたら「Set Keymap」ボタンをクリック。キーマップが読み込まれて、GUI が表示されます。
Step 5. GUIでキーマップを編集する
Keymap Editor の GUI でキーマップを自由に編集できます。
- 左ペインの数字(0, 1, 2…)でレイヤーを切り替え
- キーをクリックして割り当てを変更
- LAYERS / COMBOS / MACROS / BEHAVIORS タブで各セクションを編集
Step 6. 編集結果をコピーする
編集が終わったら、画面右上付近の「Keymap」ボタンをクリックします。編集後の .keymap ファイル全体がテキストとして表示されます。
全選択(Ctrl+A / Cmd+A)→ コピー(Ctrl+C / Cmd+C)してください。
Step 7. ローカルの keymapファイルに上書きする
テキストエディタ(VS Code など)で .keymap ファイルを開き、全選択→貼り付けで上書きします。
コマンドラインで行う場合:
macOS:
pbpaste > config/your_keyboard.keymap
Linux(X11):
xclip -selection clipboard -o > config/your_keyboard.keymap
Linux(Wayland):
wl-paste > config/your_keyboard.keymap
Step 8. 差分を確認する
Gitで差分を確認し、意図した変更だけが含まれているかチェックします。
git diff config/your_keyboard.keymap
意図しない変更があった場合は、すぐ戻せます:
git checkout -- config/your_keyboard.keymap
Step 9. ビルドして動作確認する
ローカルビルドを実行し、ファームウェアが正常に生成されることを確認します。
# ビルドコマンドは環境に合わせて読み替えてください
./build.sh
ビルド成功後、生成された .uf2 ファイルをキーボードに書き込んで動作確認します。
Step 10. 変更をコミットする
問題なければ、変更をコミットします。
git add config/your_keyboard.keymap
git commit -m "keymap: 変更内容の要約"
リポジトリは非公開のままなので、pushしてもパスワードマクロが公開されることはありません。
知っておくと安心なこと
Keymap Editor の Clipboard source を使う際に、いくつか知っておくべき挙動があります。いずれもビルドに影響はありません。
空白(インデント)が変わる
エディタは独自のルールで列揃えを行います。既存ファイルのインデントと差分が出ますが、ZMKの動作には影響しません。git diff で空白だけの変更が大量に出ても慌てないでください。
余分な括弧が追加されることがある
Mod-tapの引数にネストしたキーコードがある場合、エディタが冗長な括弧を追加することがあります。
変更前: &mt LG(LS(V)) LG(V)
変更後: &mt (LG(LS(V))) LG(V)
Cプリプロセッサとして評価されるため、意味は同じです。
独自定義の behavior は新規配置できない
自分で定義したカスタム behavior(独自のmod-tapやtap danceなど)は、すでにキーマップ上に配置されている分は正しく表示・保持されます。ただし、GUIのキー選択リストには出てこないため、新しいキーに独自 behavior を割り当てたい場合は .keymap ファイルを直接テキスト編集してください。
combos・macros・behaviors の定義は保持される
keymapファイル内の combos, conditional_layers, macros, behaviors の定義ブロックは、Clipboard source で読み込み→書き出ししても消えずに保持されます。
トラブルシューティング
「Set Keymap」ボタンがグレーアウトして押せない
Keyboard の選択が「Custom…」になっているか確認してください。内蔵キーボードリストから選んでいると、レイアウトが合わずにボタンが無効化されます。
貼り付け後にエラーが出る
.keymap ファイルの #include 行や #define マクロは通常そのまま保持されます。エラーが出る場合は、コピー元の .keymap ファイル自体に devicetree の構文エラーがないか確認してください。
ビルドが失敗する
git diffで差分を確認し、空白・括弧以外の意味的な変更が意図通りか確認- 問題があれば
git checkout -- config/your_keyboard.keymapで元に戻す - Keymap Editor での編集からやり直す
.dtsi ファイルは編集できない
Clipboard source は .keymap ファイル1つだけを扱います。.dtsi や layouts.dtsi などの編集が必要な場合は、テキストエディタで直接編集してください。
まとめ
ZMKの自作キーボードで、GitHubリポジトリを非公開にしたままKeymap EditorのGUIを使う方法を紹介しました。
やっていることはシンプルで、keymapファイルの中身をクリップボード経由でコピー&ペーストしているだけです。GitHub連携が不要なので、パスワードマクロを含むリポジトリでも安心して使えます。
この記事の手順がうまくいかない場合や、もっと詳しく知りたい場合は、この記事の「手順」セクション(Step 1〜10)をそのままAIチャット(ChatGPTやClaude等)に貼り付けて質問すると、自分の環境に合わせた具体的なアドバイスがもらえます。