CharybdisをVial対応にした話
Vial導入で楽々キーマップ変更
先日、Dactyl ManuformをVial対応にした事を投稿しました。
今回はCharybdis 4x6での作業にトライしてみました。
少し長文です。
まずはJSONファイルを用意する
前回のDactyl ManuformのVial用の設定を流用します。
JSONをKLE(Keyboard Layout Edhitor)にコピペして手直ししました。
それを今回のキーボード用のJSONとして保存します。
エラーが出た…
その他設定など済ませて、一通りの準備出来たら、Vial上でmakeコマンドを実行しました。
と、何やらエラーが…
どうもサイズが大きすぎるらしい。
私のCharybdis 4x6のマイコンはPromicroです。そしてPromicroは利用可能なメモリがたったの28KB程度しかないことで有名です。
不要なオプションは無効化して、ファームウェアのサイズを減らす必要がありそうです。
不要な記述を消してから再度makeしますと今度はエラーは無く終了。
成功したとおもいきや…
ファームウェアを書き込みしてから、Vialアプリを立ち上げるとキーマップは正しく認識されているようです。
キー割当を変えると反映されます。
成功!と言いたいのですが、なんだかトラックボールの挙動が変です。
ポインターのスピードが目茶苦茶早くなってます。OSの設定で一番遅くするとやっと普通に動く感じです。
この状態で他のマウスを繫ぐとポインターがとても遅い。これではまともに運用できませんね…
いろいろとファームウェアを弄ったりしましたが、どうやっても解決しませんでした。
MCUをPromicroからラズパイPicoに変更
メモリ不足なうえに、トラックボールの動作不具合を調べる為の試行錯誤でお手上げです。
とりあえずファームウェアを弄る作業を切り上げて、ハードウェアを変えて様子を見る事にしました。
具体的には余っているラズパイPicoに取り換えてみます。
本体サイズが大きく自作キーボードでは持て余すことの多いマイコンですが、このキーボードであれば問題ありません。
搭載しているメモリが潤沢となるので、メモリ不足による不具合からは開放されそうです。
やるべきことは3つ
ファームウェアをPico仕様に修正する
TRRSの配線を修正する
Picoに配線してケースに押し込む
1つめは簡単で、ファームウェアの設定でRP2040を指定し、左右の通信設定や各種ピンの配置を変更するだけ。
2つめのTRRSですが、PromicroではTRRSの3つの端子しか配線していなかったのですが、RP2040では端子4つを全て使用するということで線を1つ追加します。
最後にPromicroの配線をPicoに付け替えます。Picoにピンヘッダを付けて、QIコネクタを抜き差しします。
PicoはデカいけどCharybdisのケースには収まります。
レベル変換部分も変更する
と、ここまでやっててセンサーのレベル変換ICの処理を忘れていたのに気が付きました。
ラズパイPico(RP2040)は3.3Vで動作するので、5Vからのレベル変換はもはや不要となります。
従って変換ICを取り除いてやる必要があります。
基板にあるレベル変換ICチップを外さなくてはなりません。幸いなことに表面実装部品なのでそれほど難しくはありません。
半田ごての温度を少し上げてハンダを盛ってやればあっさりと外れました。
お次はジャンパ線です。
半田吸い取り線でパッドをいったん掃除してから、フラックス+予備ハンダで準備します。今回は細めのリード線の切れ端を使いました。
パッドの上から2、3、4段目をつないでやります。半田付けができたら導通チェックです。
完成したので動作確認する
問題なさそうなので元通りにキーボード本体に組み付けてやります。
そのままPCに繋いで動作チェックしました。
キーボード本体は問題なく動作しました。
懸案だったトラックボールのポインターの挙動も正常になりました。
何が原因だったのかは不明なので、少しモヤモヤしますが…
引き続いてVialでの動作確認です。
Vialのアプリケーションを起動すると、キーマップが表示されています。
適当にキーの設定を変更すると、リアルタイムで反映されます。問題無いようです。よかったよかった。