※記事中に含まれるリンクからアフィリエイト報酬を得ることがあります。
※記事中に含まれるリンクからアフィリエイト報酬を得ることがあります。

ChatGPTでVibe Coding:プログラミング不要でZMK対応のトラックボール付き無線左右分割キーボードを自分好みにカスタムする方法

cool642tb Tips

最近、cool642tbという無線左右分割トラックボール付きキーボードを使い始めました。

キーマップをKeymap Editorを使って編集したところ、トラックボール操作後に自動的にマウスレイヤーに切り替わらないという問題に直面しました。

スポンサーリンク

Keymap Editorで編集後、マウスレイヤーに切り替わらない問題

cool642tb
前述のように、Keymap Editorで編集し、ファームウェアを焼いたところ、トラックボール操作後に自動的にマウスレイヤーに切り替わらないという問題に直面しました。

  1. 初期ファームウェアに焼き直し:問題なく動作
  2. ZMK Studio:問題なく動作
  3. Keymap Editorからファームウェア焼き直し:動作しない
  4. Keymapファイルを直接編集から焼き直し:動作しない

問題の切り分けをすると、1, 2では問題なく、3, 4のファームウェアを編集後に焼き直すと問題がでるといった状態でした。

ということで、問題は、①編集後のコンパイルの過程GitHubからか、②GitHubから引っ張っている元のファームウェアに問題があるとみました。

ChatGPTにファームウェアのファイルを投げる

プログラミングに関しては未経験ではないものの、ZMK Firmwareについて全くわかりません。Keymapのファイルをざっくり見れば、(視覚的にわかりやすく書かれているので)これはキーのボタンだなとか、ロータリーエンコーダの設定だなとかはわかったりしますが、詳細な記法は不明です。

一から勉強するのはコストが掛かるので、ChatGPTを使ったVibe Codingを試してみることにしました。

  1. cool642tb.keymap
  2. cool642tb_R.overlay
  3. cool642tb_R.conf

とりあえずのところ、KeymapのファイルをChatGPTになげ(Codexでもなく)、「ZMK Firmwareのトラックボール付きキーボードを使っている」、「Keymap Editorや直接編集後、トラックボール操作後にマウスレイヤーに切り替わらない」ことをそれぞれチャットに書き込み、問題の特定とコーディングを行ってもらいました。

ChatGPTが問題を特定・解決

ChatGPTに質問
ChatGPTの判断によれば、オートマウスレイヤーの設定が、ファームウェア上で有効になっていなかったからだとのこと。現在のファームウェアだと、その設定例がコメントアウトされた状態とのことでした。

上記の問題を修正するためのコードを書いてもらい、事なきをえました。

その他にも軽微な修正を依頼

cool642tb

  1. ロータリーエンコーダーのスクロール量の調整
  2. レイヤー1使用時に、トラックボールでスクロール

ロータリーエンコーダーの設定パラメータの詳細について教えてもらう

Vibe Codingをする際の注意点

使用したのは、ChatGPT PlusプランのChatGPT 5.4 Thinkingでした。

  1. まず、前提となるファームウェアやソフトを記載する。(今回ならZMKであることを明記した)
  2. 問題の症状を記載する
  3. 実際のファームウェアのファイルを投入する

正直なところ、前提条件を明確にしておかないと、ChatGPTは正確な回答を返してくれないので、上記の3点くらいは明確にしておきましょう。

また、困ったら、修正版のファームウェアを出力してもらうように依頼するのもアリです。これならファイルをアップロードしたり、コピペしたりで解決できます。プログラミングを知らなくても安心です。

実際のコードについて

オートマウスレイヤーへの切り替え

cool642tb_R.overlayに上のコードを追記で、オートマウスレイヤーが復活しました。

ロータリーエンコーダーのスクロール量について

具体的には、MOVE_Y<やMOVE_Xは10がスクロールの強さとのこと。tap-msは、その入力をどれくらいの長さで送るかの指標になっています。cool642tbについては、推奨値が記載されているので、この範囲に従い設定するのが良いです。この範囲外の設定にしても、快適に利用できませんでした。

レイヤー切り替え時、トラックボールにスクロールを割り当てる

これがレイヤー1のときに、トラックボール操作をY軸のスクロール操作に割り当てるコードです。

コメント