0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アリエクの Keyball61 (RP2040) を vial-qmk でカスタムした話

0
Last updated at Posted at 2026-07-04

アリエクの Keyball61 (RP2040) を vial-qmk でカスタムした話 :keyboard:

はじめに

仕事でぶんぶんマウスを振り回していたら腱鞘炎になったので、トラックボールにしようと思いアリエクで Keyball61 を買った。

届いたキーボードのファームウェアはよくわからなかったんだけど、PC に繋いだら Vial で認識した :tada:
調べてみると、いわゆる「普通の Keyball61」は ZMK らしい。手元のは 最初からカスタムファームが入ってるっぽい。

だいたい一週間使ってみて、気になったのがこれ。

  • マウス用レイヤーを自分でキー割り当てして切り替えてるんだけど、切り替えがめんどい
  • トラックボールで スクロールできない

なので、こうしたいなと思った。

  • トラックボールを動かしたら、勝手にマウス用レイヤーに入ってほしい(調べたら Auto Mouse って仕組みがあるらしい)
  • マウスボタンにしてる HJKL; 以外を押したら、普通のレイヤーに戻ってほしい
  • レイヤー1のあいだトラックボールを動かすとスクロールしてほしい
  • (ついでに)レイヤーごとに LED の色も変えたい

このへんは Vial の画面いじるだけじゃ無理で、ファームウェア側をいじる必要があった

ファームを自分で作ってみることにした

vial-qmk を見ても keyball 用の設定は入ってない。公式は ZMK だった。
手元の構成そのまんま使える完成品ファームは見つからなかった。

ChatGPT に聞いたら「vial-qmk ベースでカスタムできるよ」とのことだったので、AI に指示出しながら進めることにした。

とりあえずこの2つを clone して、Cursor で作業開始。

最初は Pro Micro だと思っていた

Keyball61 のマイコンは普通は Pro Micro らしい。
AI もその前提でガリガリ進めてくれて、ファームのビルドも通って .hex までできた。

で、キーボードにフラッシュしようとしたら……qmk flash がデバイスを検出できず、延々と進まない

おかしいなと思って RESET を2回押してみたら、ストレージに RPI-RP2 が出てきた。
中の INFO_UF2.TXT を開くとこう書いてある。

UF2 Bootloader v3.0
Model: Raspberry Pi RP2
Board-ID: RPI-RP2

……あれ? Pro Micro じゃなくて Raspberry Pi RP2(RP2040) じゃん。

最初に気づいておけばよかったやつ。
AVR 前提の .hexqmk flash じゃ、そもそも土俵が違った。

RP2040 向けに作り直したら、壊れた(ように見えた):scream:

半ば諦めかけてたけど、AI に聞いたら「RP2040 向けにも組めるよ」とのこと。

一通りビルドしてフラッシュしたら……キーが反応しない。USB も認識しない。 いろいろ壊れた。
壊したかと思った。
しかも 元のファームウェアを持ってなかったので、かなり焦った :cold_sweat:

左右を別々に焼いたり色々試したけど、ダメ。
そこで holykeebs のコンパイル済みファーム を書き込んでみたら、ちゃんと動いた。ハードは生きてた。めちゃくちゃ安心した

で、AI 曰く原因はだいたいこんな感じだったらしい。

  • Keyball の duplex matrix が、今の QMK / vial-qmk の API(matrix_scan_custom とか)や RP2040 の split と合ってない
  • ボード定義やブートローダー設定が AVR(Pro Micro)前提のまま混ざってる
  • トラックボール用センサ周りのシンボル不足

holykeebs みたいに、すでに RP2040 向けに直してある実装を参考にしつつ直していくと、なんとかキー入力とトラックボールが動くところまで戻った。

フラッシュは毎回これ。

  1. RESET を素早く2回RPI-RP2 が出る
  2. .uf2 をコピー
  3. 左右それぞれ同じ UF2 を焼く

TRRS ケーブルを毎回抜き差しする必要があるので、非常にめんどくさい。

Vial でも認識した :tada:

完成したもの

いま使ってるファームの挙動は、だいたいこんな感じ。

レイヤー構成

レイヤー 用途
0 通常入力
1 LT(1, …) で出すレイヤー。長押し中はトラックボールがスクロール
2 LT(2, …) のユーティリティ
3 Auto Mouse 用(トラックボール操作で自動オン)

以前みたいに「マウス用レイヤーに手動で切り替えるキー」は、Auto Mouse のおかげで 不要になった :sparkles:

トラックボール / Auto Mouse

  • トラックボールを動かすと、自動でマウス用レイヤー(レイヤー3)に入る
  • そのあいだ、右手ホームの H / J / K / L / ; はマウスボタン
  • それ以外のキーを押すと、通常レイヤーに戻る
  • しばらく何もしないと、一定時間後に自動で戻る(自分の設定では 2 秒)

HJKL; を「常に」マウスキー扱いすると、普通に文字打つときまでマウスモードに入っちゃう。
なので マウスモード中だけ特別扱いしてる。

あと、レイヤー1やレイヤー2を出してるあいだは Auto Mouse を止めてる。
LT1 長押し中にボール動かすと、スクロールじゃなくてまたマウスレイヤーが乗っちゃう、みたいな競合を避けるため。

スクロール

  • レイヤー1(LT1 長押し)中にトラックボールを動かすとスクロール
  • あとから、, を押しっぱなしでもスクロールできるようにした(マウスモードに入る前から押せる)
  • , を短く叩いたときは、普通に , が入る

実際にスクロールしてみたら、動きがかなりピーキーだった。
軽く動かした程度じゃ反応しないのに、一定を超えるとめちゃくちゃスクロールする始末 :dizzy_face:

このあたりはしきい値や速度をいじって、なんとか使えるレベルにはなった。

レイヤー別 LED

ついでに入れたつもりが、これがかなり便利

レイヤー LED
0 流れる虹
1 赤(スクロール)
2
3 シアン(マウスモード)

マウスモードに入った/抜けたのが色でわかるので、「今マウスレイヤーにいるのかな?」が一目でわかる。
おまけのつもりが、いちばん気持ちいい変更かもしれない :rainbow:

PC スリープ時は消灯するようにしてる。

仕上げでハマった話(スイッチのせいじゃなかった)

動くようになってからも、入力まわりで変な挙動が残ってた。

チャタリングっぽい何か

「U と I がチャタる」ように見えた。
最初はスイッチ不良かと思って交換したんだけど、直らない。よく見ると:

  • U / I を単体で押す分には大丈夫
  • O → IU → OP → I のときにおかしい
  • O → YO → P では起きない
  • キーとキーのあいだに一拍置くと起きない

Keyball61 のマトリクスは duplex で、同じ行を二方向にスキャンしてピンを使い回してるらしい。
ざっくり言うと、O と Y は同じ物理ピンの別フェーズ、O と I は別ピンの別フェーズ、みたいな配置。

再現パターンを並べると、別ピン × 別フェーズをまたぐロールのときだけ壊れてる。
スイッチじゃなくて、スキャン方向を切り替える瞬間の過渡状態による誤検出だった、とのこと。

対策は フェーズ切替の前にピンを戻して、短い settle を入れること。
これでかなり改善した :thumbsup:

out と打つと otu になる

settle を入れたあと、今度は素早く out と打つと otu になることがあった。

これはデバウンスを「押しても離しても、安定するまで待ってから確定」にしてたせいで、O→U のあとに U の確定が遅れ、そのあいだに T が入ってた、という話だった。

最終的にはこう変えた。

  • 押した瞬間はすぐ反応
  • 離すときは安定を待つ

duplex 側の settle はそのまま残してるので、誤入力対策と入力順の両立が取れた。

いまの操作感(まとめ)

やりたいこと いまの動き
マウス操作 ボールを動かすだけでマウスレイヤーへ
クリック類 マウスレイヤー中の HJKL;
マウス解除 HJKL; 以外のキー、またはタイムアウト
スクロール レイヤー1長押し、または , 押しっぱなし
今どのモードか LED の色でわかる :sparkles:

おわりに

アリエク版 Keyball61(RP2040 + 謎 Vial ファーム)から始めて、vial-qmk 上に自分用ファームを載せるところまで行った。

最初は Pro Micro だと思って空振りして、次は RP2040 向けファームで無反応になって本気で焦った。
でも元ファームが無くても、ブートローダー(RESET 2回 → RPI-RP2)に入れて UF2 を流し直せば立て直せる、というのは後からわかった。RP2040 でよかった……。

AI 使うと、知識ゼロからでもカスタムファームまで持っていけるのでかなり便利。
同じ構成でファームいじる人の、とっかかりになればうれしいです :wave:

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?